Julyana commited on
Commit
e4407b1
·
1 Parent(s): 6ac2eb0

Add app.py and requirements.txt

Browse files
Files changed (2) hide show
  1. app.py +135 -0
  2. requirements.txt +4 -0
app.py ADDED
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import streamlit as st
3
+ from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
4
+
5
+ # Definir a semente para garantir a reprodutibilidade
6
+ torch.random.manual_seed(0)
7
+
8
+ # Caminho para o modelo
9
+ model_path = "microsoft/Phi-4-mini-instruct"
10
+
11
+ # Carregar o modelo e o tokenizador
12
+ model = AutoModelForCausalLM.from_pretrained(
13
+ model_path,
14
+ device_map="auto",
15
+ torch_dtype="auto",
16
+ trust_remote_code=True,
17
+ )
18
+ tokenizer = AutoTokenizer.from_pretrained(model_path)
19
+
20
+ # Inicializar o pipeline de geração de texto
21
+ pipe = pipeline(
22
+ "text-generation",
23
+ model=model,
24
+ tokenizer=tokenizer,
25
+ )
26
+
27
+ # Informações sobre Ju Prado
28
+ sobre_ju_prado = """
29
+ Eu sou Ju Prado, desenvolvedora de software apaixonada por novas tecnologias e soluções inovadoras. Trabalho principalmente com blockchain, IoT, inteligência artificial e sistemas de suporte ao cliente, sempre buscando criar soluções inteligentes e eficientes para resolver problemas reais.
30
+ """
31
+
32
+ # Projetos pessoais
33
+ projetos_pessoais = """
34
+ 1. **Blockchain para Agricultura**: Um sistema integrado para pequenos produtores, utilizando blockchain para garantir a rastreabilidade de produtos naturais e melhorar a gestão. O foco é ajudar pequenos agricultores a alcançar um mercado mais amplo com total transparência.
35
+
36
+ 2. **Sistema de Suporte ao Cliente**: Um sistema de suporte com chat em tempo real, utilizando WebSocket e Spring Boot, onde operadores podem interagir com clientes. A plataforma é pensada para empresas que buscam otimizar o atendimento, oferecendo uma comunicação ágil e eficaz.
37
+
38
+ 3. **Projeto de Blockchain e Ordens de Serviço**: Integrando blockchain com um sistema de gerenciamento de ordens de serviço, onde cada interação pode ser rastreada e autenticada para garantir segurança e transparência.
39
+ """
40
+
41
+ # Tecnologias utilizadas
42
+ tecnologias = """
43
+ - **Blockchain**: Trabalhando com Ethereum, Solidity, Solana e tecnologias relacionadas para garantir a rastreabilidade e segurança de dados.
44
+ - **Inteligência Artificial**: Implementando modelos de IA para automatização de processos e soluções inteligentes.
45
+ - **Spring Boot e WebSocket**: Usando para criar soluções de chat em tempo real, focadas em melhorar a comunicação e o suporte ao cliente.
46
+ - **React**: Criando interfaces dinâmicas e responsivas para aplicações web.
47
+ """
48
+
49
+ # Links de contato (LinkedIn e WhatsApp)
50
+ linkedin_url = "https://www.linkedin.com/in/jupradoai" # Substitua pelo seu LinkedIn
51
+ whatsapp_url = "https://wa.me/5511954479740" # Substitua pelo seu WhatsApp
52
+
53
+ # Função para fornecer informações sobre Ju Prado
54
+ def falar_sobre_ju():
55
+ return f"{sobre_ju_prado}"
56
+
57
+ # Função para o módulo de projetos pessoais
58
+ def falar_sobre_projetos():
59
+ return f"Eu gostaria de te contar sobre meus projetos pessoais! Aqui estão alguns deles:\n{projetos_pessoais}"
60
+
61
+ # Função para o módulo de tecnologias utilizadas
62
+ def falar_sobre_tecnologias():
63
+ return f"Essas são algumas das tecnologias que eu utilizo nos meus projetos:\n{tecnologias}"
64
+
65
+ # Função para fornecer informações de contato
66
+ def fornecer_contato():
67
+ return f"""
68
+ **Entre em contato comigo!**
69
+ - **LinkedIn**: [Visite meu LinkedIn]({linkedin_url})
70
+ - **WhatsApp**: [Me envie uma mensagem no WhatsApp]({whatsapp_url})
71
+ """
72
+
73
+ # Função para fornecer ajuda
74
+ def fornecer_ajuda():
75
+ return f"""
76
+ Eu sou um assistente virtual! Você pode me perguntar sobre meus projetos pessoais, tecnologias que utilizo, ou entrar em contato comigo através dos links abaixo:
77
+
78
+ Aqui estão algumas sugestões de comandos:
79
+ - 'Sobre Ju': Para saber mais sobre mim e minha missão.
80
+ - 'Projetos': Para saber mais sobre os projetos que estou desenvolvendo.
81
+ - 'Tecnologias': Para ver as tecnologias que utilizo.
82
+ - 'Contato': Para saber como entrar em contato comigo.
83
+ - 'Ajuda': Para saber como posso te ajudar.
84
+ """
85
+
86
+ # Filtrando a resposta
87
+ def filtrar_resposta(user_input):
88
+ if 'sobre ju' in user_input.lower():
89
+ return falar_sobre_ju()
90
+ elif 'projetos' in user_input.lower():
91
+ return falar_sobre_projetos()
92
+ elif 'tecnologias' in user_input.lower():
93
+ return falar_sobre_tecnologias()
94
+ elif 'contato' in user_input.lower():
95
+ return fornecer_contato()
96
+ elif 'ajuda' in user_input.lower():
97
+ return fornecer_ajuda()
98
+ else:
99
+ return "Desculpe, não tenho essa informação. Posso te ajudar com outra coisa?"
100
+
101
+ # Streamlit UI para o chat
102
+ st.title("Assistente Virtual de Ju Prado")
103
+ col1, col2 = st.columns([4, 1]) # Cria duas colunas: a primeira é maior, a segunda é para a imagem
104
+
105
+ # Centralizar a imagem do avatar
106
+ with col1:
107
+ st.write("Olá! Eu sou o Taz, assistente virtual da Ju Prado. Como posso ajudar?")
108
+
109
+ with col2:
110
+ st.image("https://i.pinimg.com/originals/41/37/03/4137032158b5301be21153ba3a0a9383.gif", width=150) # Imagem ao lado direito
111
+
112
+ # Manter o histórico de mensagens
113
+ if "messages" not in st.session_state:
114
+ st.session_state.messages = []
115
+
116
+ # Exibe o histórico de mensagens
117
+ for message in st.session_state.messages:
118
+ with st.chat_message(message["role"]):
119
+ st.markdown(message["content"])
120
+
121
+ # Entrada do usuário
122
+ user_input = st.chat_input("Digite sua pergunta:")
123
+
124
+ if user_input:
125
+ # Adiciona mensagem do usuário ao histórico
126
+ st.session_state.messages.append({"role": "user", "content": user_input})
127
+ st.chat_message("user").markdown(user_input)
128
+
129
+ # Filtra a resposta e limita a saída com as informações fornecidas
130
+ resposta = filtrar_resposta(user_input)
131
+
132
+ # Adiciona a resposta do assistente ao histórico
133
+ st.session_state.messages.append({"role": "assistant", "content": resposta})
134
+ with st.chat_message("assistant"):
135
+ st.markdown(resposta)
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ torch==2.6.0
2
+ transformers==4.49.0
3
+ streamlit==1.43.1
4
+ accelerate==1.4.0