chatbot_memory / app.py
SilvioLima's picture
Update app.py
1381dc3 verified
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)