Spaces:
Sleeping
Sleeping
| 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 | |
| load_dotenv() | |
| # Define variáveis do ambiente | |
| os.environ["OPENAI_API_KEY"] = os.getenv("OPENROUTER_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 | |
| ) | |
| # Template com contexto do assistente de Python | |
| 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) | |
| # Criação da chain com memória e prompt | |
| chat_chain = ConversationChain( | |
| llm=llm, | |
| memory=memoria, | |
| prompt=template, | |
| verbose=False | |
| ) | |
| # Função para responder com contexto | |
| def responder(mensagem): | |
| try: | |
| resposta = chat_chain.run(mensagem) | |
| return resposta | |
| except Exception as e: | |
| import traceback | |
| return f"❌ Erro:\n{traceback.format_exc()}" | |
| # Interface Gradio | |
| app = gr.Interface( | |
| fn=responder, | |
| inputs=gr.Textbox(placeholder="Ex: Qual a diferença entre '==' e 'is'?", label="Sua dúvida sobre Python"), | |
| outputs=gr.Textbox(label="Resposta do Assistente"), | |
| title="Tutor de Python com IA 🤖🐍", | |
| description="Tire dúvidas sobre programação em Python com um assistente que lembra do que você já perguntou.", | |
| ) | |
| app.launch(share=True) |