Spaces:
Build error
Build error
| import os | |
| from dotenv import load_dotenv | |
| from langchain_openai import ChatOpenAI | |
| from langchain.prompts import PromptTemplate | |
| from langchain.chains import ConversationChain | |
| from langchain.memory import ConversationBufferMemory | |
| import gradio as gr | |
| # Carrega chave da API | |
| load_dotenv() | |
| api_key = os.getenv("OPENROUTER_API_KEY") | |
| if not api_key: | |
| raise ValueError("❌ Variável OPENROUTER_API_KEY não encontrada.") | |
| # Define variáveis de ambiente | |
| os.environ["OPENAI_API_KEY"] = api_key | |
| os.environ["OPENAI_API_BASE"] = "https://openrouter.ai/api/v1" | |
| # Instancia o modelo | |
| llm = ChatOpenAI( | |
| model="deepseek/deepseek-r1:free", | |
| temperature=0.4 | |
| ) | |
| # Prompt template com histórico | |
| template = PromptTemplate.from_template( | |
| """Você é um assistente virtual de um curso de programação em Python. | |
| Ajude os alunos com dúvidas sobre a linguagem Python, sempre de forma clara, objetiva e com exemplos didáticos. | |
| Histórico da conversa: | |
| {history} | |
| Aluno: {input} | |
| Resposta:""" | |
| ) | |
| # Memória da conversa | |
| memoria = ConversationBufferMemory(return_messages=True) | |
| # Cadeia de conversação com memória | |
| chat_chain = ConversationChain( | |
| llm=llm, | |
| memory=memoria, | |
| prompt=template, | |
| verbose=False | |
| ) | |
| # Função para responder | |
| def responder(mensagem): | |
| try: | |
| resposta = chat_chain.run(mensagem) | |
| return resposta | |
| except Exception as e: | |
| import traceback | |
| return f"❌ Erro:\n{traceback.format_exc()}" | |
| # Função para resetar a memória | |
| def resetar_memoria(): | |
| memoria.clear() | |
| return "✅ Memória resetada com sucesso! Comece uma nova conversa." | |
| # Interface Gradio com botão extra | |
| with gr.Blocks() as app: | |
| gr.Markdown("## 🤖 Tutor de Python com IA") | |
| gr.Markdown("Tire dúvidas sobre programação em Python com um assistente inteligente e memória de conversa.") | |
| entrada = gr.Textbox(placeholder="Digite sua dúvida aqui...", label="Pergunta") | |
| saida = gr.Textbox(label="Resposta do Assistente") | |
| botao_enviar = gr.Button("Enviar") | |
| botao_resetar = gr.Button("🔁 Resetar Memória") | |
| botao_enviar.click(fn=responder, inputs=entrada, outputs=saida) | |
| botao_resetar.click(fn=resetar_memoria, outputs=saida) | |
| app.launch(share=True) |