Aula 1: Seu Primeiro Agente com LangChain
Video da aula
Video em breve. O conteudo completo em texto esta disponivel abaixo.
O que voce vai aprender
Nesta primeira aula, voce vai:
- Configurar um ambiente Python limpo com
uvouvenv - Instalar LangChain e configurar chaves de API
- Criar um agente conversacional basico
- Entender a arquitetura de agentes (LLM + Prompt + Chain)
- Executar seu primeiro agente e conversar com ele no terminal
Pre-requisitos
- Python 3.10+ instalado
- Uma chave de API da OpenAI ou Anthropic
- Terminal/VS Code
1. Configurando o ambiente
Crie uma pasta para o curso e configure o ambiente virtual:
mkdir ia-pratica && cd ia-pratica
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# .venv\Scripts\activate # Windows
Se voce usa uv (recomendado, muito mais rapido):
uv init ia-pratica && cd ia-pratica
uv venv && source .venv/bin/activate
2. Instalando dependencias
pip install langchain langchain-openai langchain-anthropic python-dotenv
Crie um arquivo .env na raiz do projeto:
# .env
OPENAI_API_KEY=sk-...
# ou
ANTHROPIC_API_KEY=sk-ant-...
3. Seu primeiro agente
Crie o arquivo agente.py:
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
load_dotenv()
# Inicializar o modelo
llm = ChatOpenAI(
model="gpt-4o-mini",
temperature=0.7,
)
# Mensagem de sistema define a personalidade do agente
system = SystemMessage(content="""
Voce e um assistente tecnico especializado em Python e IA.
Responda de forma clara e direta, com exemplos de codigo quando relevante.
Sempre em portugues.
""")
def chat(pergunta: str) -> str:
"""Envia uma pergunta ao agente e retorna a resposta."""
messages = [system, HumanMessage(content=pergunta)]
response = llm.invoke(messages)
return response.content
# Loop de conversacao
if __name__ == "__main__":
print("Agente IA iniciado. Digite 'sair' para encerrar.\n")
while True:
pergunta = input("Voce: ").strip()
if pergunta.lower() in ("sair", "exit", "quit"):
print("Ate mais!")
break
if not pergunta:
continue
resposta = chat(pergunta)
print(f"\nAgente: {resposta}\n")
Execute:
python agente.py
Voce agora tem um agente conversacional funcional no terminal.
4. Usando Claude em vez de GPT
Se preferir usar Claude da Anthropic, troque o modelo:
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(
model="claude-sonnet-4-20250514",
temperature=0.7,
)
O resto do codigo continua identico. Essa e a beleza do LangChain: trocar de modelo e uma linha.
5. Adicionando streaming (resposta em tempo real)
Para ver a resposta sendo gerada palavra por palavra:
def chat_stream(pergunta: str):
"""Envia pergunta e imprime a resposta em streaming."""
messages = [system, HumanMessage(content=pergunta)]
print("\nAgente: ", end="", flush=True)
for chunk in llm.stream(messages):
print(chunk.content, end="", flush=True)
print("\n")
# No loop principal, troque chat() por chat_stream()
if __name__ == "__main__":
print("Agente IA (streaming) iniciado.\n")
while True:
pergunta = input("Voce: ").strip()
if pergunta.lower() in ("sair", "exit", "quit"):
break
if not pergunta:
continue
chat_stream(pergunta)
6. Entendendo a arquitetura
O que acontece quando voce chama llm.invoke():
- Prompt: Suas mensagens (system + human) sao formatadas
- LLM: O modelo processa e gera uma resposta
- Output Parser: O LangChain converte a resposta para o formato desejado
Esse padrao simples e a base de tudo que vamos construir nas proximas aulas. Cada componente pode ser customizado e encadeado.
[System Message] + [Human Message]
|
v
[LLM (GPT/Claude)]
|
v
[AI Message (resposta)]
Exercicio pratico
- Mude a mensagem de sistema para criar um agente com personalidade diferente (ex: “Voce e um chef de cozinha que explica receitas com analogias de programacao”)
- Adicione um parametro
--modelpara escolher entre GPT e Claude via linha de comando - Salve o historico de conversa em um arquivo JSON
Proximo passo
Na Aula 2, vamos fazer esse agente consultar documentos PDF usando RAG (Retrieval-Augmented Generation). Em vez de depender apenas do conhecimento do modelo, ele vai buscar informacoes em seus proprios documentos.