Spaces:
Running
Running
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) | |