Julyana's picture
Add app.py and requirements.txt
e4407b1
import torch
import streamlit as st
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
# Definir a semente para garantir a reprodutibilidade
torch.random.manual_seed(0)
# Caminho para o modelo
model_path = "microsoft/Phi-4-mini-instruct"
# Carregar o modelo e o tokenizador
model = AutoModelForCausalLM.from_pretrained(
model_path,
device_map="auto",
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained(model_path)
# Inicializar o pipeline de geração de texto
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
)
# Informações sobre Ju Prado
sobre_ju_prado = """
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.
"""
# Projetos pessoais
projetos_pessoais = """
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.
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.
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.
"""
# Tecnologias utilizadas
tecnologias = """
- **Blockchain**: Trabalhando com Ethereum, Solidity, Solana e tecnologias relacionadas para garantir a rastreabilidade e segurança de dados.
- **Inteligência Artificial**: Implementando modelos de IA para automatização de processos e soluções inteligentes.
- **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.
- **React**: Criando interfaces dinâmicas e responsivas para aplicações web.
"""
# Links de contato (LinkedIn e WhatsApp)
linkedin_url = "https://www.linkedin.com/in/jupradoai" # Substitua pelo seu LinkedIn
whatsapp_url = "https://wa.me/5511954479740" # Substitua pelo seu WhatsApp
# Função para fornecer informações sobre Ju Prado
def falar_sobre_ju():
return f"{sobre_ju_prado}"
# Função para o módulo de projetos pessoais
def falar_sobre_projetos():
return f"Eu gostaria de te contar sobre meus projetos pessoais! Aqui estão alguns deles:\n{projetos_pessoais}"
# Função para o módulo de tecnologias utilizadas
def falar_sobre_tecnologias():
return f"Essas são algumas das tecnologias que eu utilizo nos meus projetos:\n{tecnologias}"
# Função para fornecer informações de contato
def fornecer_contato():
return f"""
**Entre em contato comigo!**
- **LinkedIn**: [Visite meu LinkedIn]({linkedin_url})
- **WhatsApp**: [Me envie uma mensagem no WhatsApp]({whatsapp_url})
"""
# Função para fornecer ajuda
def fornecer_ajuda():
return f"""
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:
Aqui estão algumas sugestões de comandos:
- 'Sobre Ju': Para saber mais sobre mim e minha missão.
- 'Projetos': Para saber mais sobre os projetos que estou desenvolvendo.
- 'Tecnologias': Para ver as tecnologias que utilizo.
- 'Contato': Para saber como entrar em contato comigo.
- 'Ajuda': Para saber como posso te ajudar.
"""
# Filtrando a resposta
def filtrar_resposta(user_input):
if 'sobre ju' in user_input.lower():
return falar_sobre_ju()
elif 'projetos' in user_input.lower():
return falar_sobre_projetos()
elif 'tecnologias' in user_input.lower():
return falar_sobre_tecnologias()
elif 'contato' in user_input.lower():
return fornecer_contato()
elif 'ajuda' in user_input.lower():
return fornecer_ajuda()
else:
return "Desculpe, não tenho essa informação. Posso te ajudar com outra coisa?"
# Streamlit UI para o chat
st.title("Assistente Virtual de Ju Prado")
col1, col2 = st.columns([4, 1]) # Cria duas colunas: a primeira é maior, a segunda é para a imagem
# Centralizar a imagem do avatar
with col1:
st.write("Olá! Eu sou o Taz, assistente virtual da Ju Prado. Como posso ajudar?")
with col2:
st.image("https://i.pinimg.com/originals/41/37/03/4137032158b5301be21153ba3a0a9383.gif", width=150) # Imagem ao lado direito
# Manter o histórico de mensagens
if "messages" not in st.session_state:
st.session_state.messages = []
# Exibe o histórico de mensagens
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
# Entrada do usuário
user_input = st.chat_input("Digite sua pergunta:")
if user_input:
# Adiciona mensagem do usuário ao histórico
st.session_state.messages.append({"role": "user", "content": user_input})
st.chat_message("user").markdown(user_input)
# Filtra a resposta e limita a saída com as informações fornecidas
resposta = filtrar_resposta(user_input)
# Adiciona a resposta do assistente ao histórico
st.session_state.messages.append({"role": "assistant", "content": resposta})
with st.chat_message("assistant"):
st.markdown(resposta)