danielspba commited on
Commit
86eaffd
·
verified ·
1 Parent(s): a11ae4d

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +76 -0
app.py ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from dotenv import load_dotenv
3
+ from langchain_openai import ChatOpenAI
4
+ from langchain.prompts import PromptTemplate
5
+ from langchain.chains import ConversationChain
6
+ from langchain.memory import ConversationBufferMemory
7
+ import gradio as gr
8
+
9
+ # Carrega chave da API
10
+ load_dotenv()
11
+ api_key = os.getenv("OPENROUTER_API_KEY")
12
+ if not api_key:
13
+ raise ValueError("❌ Variável OPENROUTER_API_KEY não encontrada.")
14
+
15
+ # Define variáveis de ambiente
16
+ os.environ["OPENAI_API_KEY"] = api_key
17
+ os.environ["OPENAI_API_BASE"] = "https://openrouter.ai/api/v1"
18
+
19
+ # Instancia o modelo
20
+ llm = ChatOpenAI(
21
+ model="deepseek/deepseek-r1:free",
22
+ temperature=0.4
23
+ )
24
+
25
+ # Prompt template com histórico
26
+ template = PromptTemplate.from_template(
27
+ """Você é um assistente virtual de um curso de programação em Python.
28
+ Ajude os alunos com dúvidas sobre a linguagem Python, sempre de forma clara, objetiva e com exemplos didáticos.
29
+
30
+ Histórico da conversa:
31
+ {history}
32
+
33
+ Aluno: {input}
34
+ Resposta:"""
35
+ )
36
+
37
+ # Memória da conversa
38
+ memoria = ConversationBufferMemory(return_messages=True)
39
+
40
+ # Cadeia de conversação com memória
41
+ chat_chain = ConversationChain(
42
+ llm=llm,
43
+ memory=memoria,
44
+ prompt=template,
45
+ verbose=False
46
+ )
47
+
48
+ # Função para responder
49
+ def responder(mensagem):
50
+ try:
51
+ resposta = chat_chain.run(mensagem)
52
+ return resposta
53
+ except Exception as e:
54
+ import traceback
55
+ return f"❌ Erro:\n{traceback.format_exc()}"
56
+
57
+ # Função para resetar a memória
58
+ def resetar_memoria():
59
+ memoria.clear()
60
+ return "✅ Memória resetada com sucesso! Comece uma nova conversa."
61
+
62
+ # Interface Gradio com botão extra
63
+ with gr.Blocks() as app:
64
+ gr.Markdown("## 🤖 Tutor de Python com IA")
65
+ gr.Markdown("Tire dúvidas sobre programação em Python com um assistente inteligente e memória de conversa.")
66
+
67
+ entrada = gr.Textbox(placeholder="Digite sua dúvida aqui...", label="Pergunta")
68
+ saida = gr.Textbox(label="Resposta do Assistente")
69
+
70
+ botao_enviar = gr.Button("Enviar")
71
+ botao_resetar = gr.Button("🔁 Resetar Memória")
72
+
73
+ botao_enviar.click(fn=responder, inputs=entrada, outputs=saida)
74
+ botao_resetar.click(fn=resetar_memoria, outputs=saida)
75
+
76
+ app.launch(share=True)