🦜 Introducao ao LangChain
LangChain e o framework open-source mais popular para construir aplicacoes com LLMs. Fornece abstraccoes para conectar modelos a dados, memoria e ferramentas.
🧱 Componentes Principais
- •Models: Wrappers para LLMs (OpenAI, Anthropic, etc)
- •Prompts: Templates e formatacao de prompts
- •Chains: Sequencias de operacoes
- •Agents: LLMs que decidem acoes
- •Memory: Persistencia de contexto
Exemplo Basico
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
# Modelo
model = ChatOpenAI(model="gpt-4")
# Prompt template
prompt = ChatPromptTemplate.from_messages([
("system", "Voce e um assistente util."),
("user", "{input}")
])
# Chain simples
chain = prompt | model
response = chain.invoke({"input": "O que e LangChain?"})
🔗 Chains e LCEL
LCEL (LangChain Expression Language) e a sintaxe declarativa para compor operacoes. Usa o operador pipe (|) para criar pipelines.
Chain com LCEL
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
# Chain completa
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| model
| StrOutputParser()
)
# Streaming
for chunk in chain.stream("Qual e o capital da Franca?"):
print(chunk, end="")
✓ Vantagens LCEL
- • Streaming first-class
- • Async nativo
- • Batch processing
- • Facil de debugar
Runnables Uteis
- • RunnablePassthrough
- • RunnableParallel
- • RunnableLambda
- • RunnableBranch
🛠️ Agents e Tools
Agents sao LLMs que decidem quais ferramentas usar. Usam tool calling para executar acoes no mundo real.
Definindo Tools
from langchain_core.tools import tool
@tool
def search_web(query: str) -> str:
"""Busca informacoes na web."""
# Implementacao
return results
@tool
def calculate(expression: str) -> float:
"""Calcula expressoes matematicas."""
return eval(expression)
tools = [search_web, calculate]
# Bind tools ao modelo
model_with_tools = model.bind_tools(tools)
Agent Executor
from langgraph.prebuilt import create_react_agent
# Criar agente ReAct
agent = create_react_agent(model, tools)
# Executar
result = agent.invoke({
"messages": [("user", "Quanto e 15% de 230?")]
})
🧠 Memory e State
Memory permite que agentes mantenham contexto entre interacoes. Essencial para conversas longas e tarefas iterativas.
Tipos de Memory
- Buffer: Historico completo de mensagens
- Window: Ultimas N mensagens
- Summary: Resumo comprimido
- Vector: Busca semantica no historico
Checkpointing
LangGraph usa checkpointers para persistir estado entre execucoes. Permite retomar conversas e implementar human-in-the-loop.
📊 LangGraph para Fluxos
LangGraph modela agentes como grafos de estado. Permite loops, condicoes e controle fino sobre o fluxo de execucao.
StateGraph Basico
from langgraph.graph import StateGraph, END
# Definir estado
class State(TypedDict):
messages: list
next_step: str
# Criar grafo
graph = StateGraph(State)
# Adicionar nodes
graph.add_node("agent", agent_node)
graph.add_node("tools", tool_node)
# Adicionar edges
graph.add_edge("agent", "tools")
graph.add_conditional_edges("tools", should_continue)
# Compilar
app = graph.compile()
💡 Quando usar LangGraph
Use LangGraph quando precisar de: loops condicionais, human-in-the-loop, estados persistentes, fluxos complexos com branches, ou agentes que precisam "pensar" em etapas.
🔌 Integracao com Skills
Skills podem invocar pipelines LangChain atraves de scripts. Isso combina a clareza de instrucoes das skills com o poder de orquestracao do LangChain.
Skill que usa LangChain
---
name: document-qa
description: Responde perguntas sobre documentos.
Use quando usuario perguntar sobre PDFs ou docs.
allowed-tools: Bash(python:*)
---
# Document QA Skill
Para responder perguntas sobre documentos:
```bash
python scripts/doc_qa.py --question "$QUESTION" --doc "$DOC_PATH"
```
O script usa LangChain RAG com ChromaDB local.
🎯 Proximo Passo
No proximo modulo, exploramos AutoGPT e Agentes Autonomos - sistemas que executam tarefas complexas de forma iterativa com minima supervisao humana.
📚 Resumo do Modulo
Proximo Modulo:
4.3 - AutoGPT e Agentes Autonomos