Este projeto demonstra a criação de um agente de conversação simples utilizando LangGraph, LangChain e o modelo GPT da OpenAI. O agente é capaz de interagir com o usuário através de um chat, responder a perguntas e utilizar ferramentas (como uma ferramenta para verificar o tempo).
O projeto tem somente cunho didático e foi desenvolvido enquanto eu aprendia sobre LangGraph
- Interface de Chat Interativa: Permite que o usuário converse com o agente em tempo real.
- Uso de Ferramentas: O agente pode invocar ferramentas externas (ex:
get_wheather) para obter informações e responder a perguntas específicas. - Arquitetura Modular: O código é organizado em módulos para facilitar a manutenção e extensão.
- Gerenciamento de Estado: Utiliza LangGraph para gerenciar o estado da conversação e o fluxo de execução do agente.
O projeto está organizado da seguinte forma dentro do diretório ai_agents/:
ai_agents/
├── main.py # Ponto de entrada da aplicação, interface de chat
├── graphs.py # Define e constrói o grafo do agente com LangGraph
├── nodes.py # Define a lógica dos nós do grafo (ex: prompt, chamada de ferramenta)
├── models.py # Configura o modelo de linguagem (LLM) e o vincula às ferramentas
├── tools.py # Define as ferramentas disponíveis para o agente
├── state_definition.py # Define a estrutura de estado (State) do agente
└── .env # (Exemplo, não versionado) Arquivo para variáveis de ambiente
main.py:- Inicializa e executa a interface de chat.
- Coleta a entrada do usuário e a envia para o agente.
- Exibe a resposta do agente.
graphs.py:- Utiliza
StateGraphdo LangGraph para definir a arquitetura do agente. - Define os nós (ações) e as arestas (transições) do grafo.
- Compila o grafo em um
agent_executorexecutável.
- Utiliza
nodes.py:- Contém as funções que representam os nós do grafo:
prompt_node: Envia a mensagem atual para o LLM para obter uma resposta.tool_node: Executa uma ferramenta se o LLM solicitar.conditional_edge: Decide o próximo passo no grafo com base na resposta do LLM (se deve chamar uma ferramenta ou finalizar).
- Contém as funções que representam os nós do grafo:
models.py:- Carrega as variáveis de ambiente (como a
OPENAI_API_KEY). - Instancia o modelo
ChatOpenAI(ex:gpt-4.1-nano). - Vincula as ferramentas definidas em
tools.pyao modelo de linguagem.
- Carrega as variáveis de ambiente (como a
tools.py:- Define as ferramentas que o agente pode usar. No exemplo,
get_wheathersimula a obtenção da previsão do tempo.
- Define as ferramentas que o agente pode usar. No exemplo,
state_definition.py:- Define a classe
State(umTypedDict) que representa o estado da conversação, contendo principalmente o histórico de mensagens.
- Define a classe
- Python 3.9+
- Conta na OpenAI com uma chave de API válida.
-
Clone o repositório (se aplicável) ou crie a estrutura de arquivos conforme descrito.
-
Crie e ative um ambiente virtual (recomendado):
python -m venv .venv source .venv/bin/activate # No Linux/macOS # .venv\Scripts\activate # No Windows
-
Instale as dependências: Crie um arquivo
requirements.txtcom o seguinte conteúdo:langchain langchain-openai langgraph python-dotenv typing_extensions
E instale com:
pip install -r requirements.txt
-
Configure as variáveis de ambiente: Crie um arquivo
.envna raiz do diretórioai_agents/(ou no diretório pai, dependendo de onde você executa omain.py) com sua chave da API da OpenAI:OPENAI_API_KEY="sua_chave_api_aqui"
Navegue até o diretório pai de ai_agents (neste caso, /Projeto 1 - Começo) e execute o main.py:
python ai_agents/main.pyAo iniciar, você verá a mensagem:
Iniciando o agente de chat. Digite 'sair' para terminar.
Você:
- Digite sua mensagem após o prompt "Você: " e pressione Enter.
- O agente processará sua entrada e responderá.
- Para encerrar a conversa, digite
sair.
Exemplo de interação:
Você: Qual o tempo em Yorkshire?
Agente: It's cold and wet.
Você: sair
Agente: Até logo!