LangChain
Orquestração de LLMs e Agentes
LangChain é um framework projetado para simplificar a criação de aplicações impulsionadas por Modelos de Linguagem Grandes (LLMs). Ele fornece abstrações modulares e conectores padronizados para integrar LLMs com fontes de dados externas, memória e ferramentas.
🧱 Principais Componentes
- Models (Modelos): Interfaces padrão para interagir com vários provedores de LLM (OpenAI, Hugging Face, Anthropic, etc.).
- Prompts: Templates para gerenciar e parametrizar prompts, facilitando a reutilização dinâmica.
- Chains (Cadeias): Sequências estruturadas de chamadas, onde a saída de uma etapa (ex: buscar um dado) torna-se a entrada da próxima (ex: gerar um resumo).
- Agents (Agentes): Diferente das chains rígidas, os agentes usam o próprio LLM como um motor de raciocínio para decidir dinamicamente quais ferramentas usar e em que ordem.
- Memory (Memória): Componentes para manter o estado e o histórico da conversa entre as interações.
⚙️ Exemplo Prático (Agent)
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
# Definindo uma ferramenta customizada para o Agente usar
def search_database(query: str) -> str:
return "Resultado da busca no banco interno."
tools = [
Tool(
name="Search",
func=search_database,
description="Útil para responder a perguntas sobre dados da empresa."
)
]
llm = OpenAI(temperature=0)
agent = initialize_agent(tools, llm, agent="zero-shot-react-description")
# O LLM raciocina e decide invocar a ferramenta 'Search'
resposta = agent.run("Quais são as políticas da empresa sobre férias?")
🎯 Quando usar
- RAG (Retrieval-Augmented Generation): Para conectar um LLM a um banco de dados de vetores e fazer perguntas sobre documentos privados.
- Agentes Autônomos: Para construir sistemas que podem executar ações do mundo real, como acessar APIs, rodar código Python ou consultar SQL de forma autônoma.
- Prototipação Rápida: A arquitetura do LangChain facilita a troca de componentes (ex: mudar da OpenAI para o Llama) sem reescrever muito código.
⚠️ Trade-offs e Armadilhas: O LangChain pode adicionar uma camada de abstração desnecessária e complexidade oculta para projetos simples. Se você precisa apenas de uma chamada direta à API da OpenAI e um prompt simples, usar o SDK direto da OpenAI pode ser mais performático e fácil de debugar.
Relacionadas: harness-llm