1
resposta

[Projeto] 04 Etapa #2

chatbot_mentor.py– Etapa #2
#  Importações básicas
import os
from dotenv import load_dotenv

#  LangChain
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

#  Carregar variáveis de ambiente
load_dotenv()

#  Instanciar modelo
llm = ChatOpenAI(
    model="gpt-3.5-turbo",
    temperature=0.7
)

#  Criar template de prompt com personalidade
prompt = ChatPromptTemplate.from_messages([
    (
        "system",
        "Você é o 'GeoAI Mentor', um assistente especializado em ajudar "
        "geocientistas a migrar para a área de Ciência de Dados. "
        "Seja amigável, didático e estratégico nas suas respostas."
    ),
    ("placeholder", "{historico}"),
    ("human", "{query}")
])

#  Criar parser de saída
parser = StrOutputParser()

#  Criar cadeia usando LCEL
chain = prompt | llm | parser

#  Simulação simples de conversa (sem memória real ainda)
perguntas = [
    "Eu sou geofísico e quero migrar para a área de dados. Qual linguagem devo aprender?",
    "Que tipo de projeto posso fazer para portfólio?"
]

#  Histórico inicial vazio
historico = []

#  Loop de execução
for pergunta in perguntas:
    resposta = chain.invoke({
        "historico": historico,
        "query": pergunta
    })

    print("\nPergunta:")
    print(pergunta)

    print("\nResposta:")
    print(resposta)

    print("\n" + "-" * 60)
1 resposta

Olá, Moacir! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de templates de prompt para estruturar a personalidade do assistente, utilizou muito bem o parser de saída para organizar as respostas e ainda compreendeu a importância de encadear componentes com LCEL para criar fluxos mais claros e reutilizáveis.

Uma dica interessante para o futuro é adicionar memória ao histórico da conversa, permitindo maior contexto entre as interações. Assim:

historico.append({"role": "human", "content": pergunta})
historico.append({"role": "assistant", "content": resposta})

Isso faz com que cada nova pergunta seja enriquecida pelo histórico anterior, tornando o chatbot mais consistente.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!