Visão geral do Agent SDK
Construa agentes de IA em produção com Claude Code como uma biblioteca
Construa agentes de IA que leem arquivos autonomamente, executam comandos, pesquisam na web, editam código e muito mais. O Agent SDK oferece as mesmas ferramentas, loop de agente e gerenciamento de contexto que alimentam Claude Code, programável em Python e TypeScript.
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="Find and fix the bug in auth.py",
options=ClaudeAgentOptions(allowed_tools=["Read", "Edit", "Bash"]),
):
print(message) # Claude reads the file, finds the bug, edits it
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Find and fix the bug in auth.ts",
options: { allowedTools: ["Read", "Edit", "Bash"] }
})) {
console.log(message); // Claude reads the file, finds the bug, edits it
}
O Agent SDK inclui ferramentas integradas para ler arquivos, executar comandos e editar código, para que seu agente possa começar a trabalhar imediatamente sem você implementar a execução de ferramentas. Mergulhe no guia de início rápido ou explore agentes reais construídos com o SDK:
Construa um agente de correção de bugs em minutos
Assistente de email, agente de pesquisa e muito mais
Comece agora
Instale o SDK
npm install @anthropic-ai/claude-agent-sdk
pip install claude-agent-sdk
O pacote Python requer Python 3.10 ou posterior. Se o pip relatar No matching distribution found for claude-agent-sdk, seu interpretador é mais antigo que 3.10. Execute python3 --version no macOS ou Linux, ou py --version no Windows, para verificar.
O SDK TypeScript agrupa um binário nativo do Claude Code para sua plataforma como uma dependência opcional, portanto você não precisa instalar Claude Code separadamente.
Defina sua chave de API
Obtenha uma chave de API do Console, depois defina-a como uma variável de ambiente:
export ANTHROPIC_API_KEY=your-api-key
O SDK também suporta autenticação via provedores de API de terceiros:
- Amazon Bedrock: defina a variável de ambiente
CLAUDE_CODE_USE_BEDROCK=1e configure as credenciais da AWS - Claude Platform on AWS: defina
CLAUDE_CODE_USE_ANTHROPIC_AWS=1eANTHROPIC_AWS_WORKSPACE_ID, depois configure as credenciais da AWS - Google Vertex AI: defina a variável de ambiente
CLAUDE_CODE_USE_VERTEX=1e configure as credenciais do Google Cloud - Microsoft Azure: defina a variável de ambiente
CLAUDE_CODE_USE_FOUNDRY=1e configure as credenciais do Azure
Consulte os guias de configuração para Bedrock, Claude Platform on AWS, Vertex AI ou Azure AI Foundry para obter detalhes.
A menos que previamente aprovado, a Anthropic não permite que desenvolvedores terceirizados ofereçam login claude.ai ou limites de taxa para seus produtos, incluindo agentes construídos no Claude Agent SDK. Use os métodos de autenticação de chave de API descritos neste documento.
Execute seu primeiro agente
Este exemplo cria um agente que lista arquivos em seu diretório atual usando ferramentas integradas.
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="What files are in this directory?",
options=ClaudeAgentOptions(allowed_tools=["Bash", "Glob"]),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "What files are in this directory?",
options: { allowedTools: ["Bash", "Glob"] }
})) {
if ("result" in message) console.log(message.result);
}
Pronto para construir? Siga o Guia de Início Rápido para criar um agente que encontra e corrige bugs em minutos.
Capacidades
Tudo o que torna Claude Code poderoso está disponível no SDK:
Seu agente pode ler arquivos, executar comandos e pesquisar bases de código imediatamente. As ferramentas principais incluem:
| Ferramenta | O que faz |
|---|---|
| Read | Ler qualquer arquivo no diretório de trabalho |
| Write | Criar novos arquivos |
| Edit | Fazer edições precisas em arquivos existentes |
| Bash | Executar comandos de terminal, scripts, operações git |
| Monitor | Observar um script em segundo plano e reagir a cada linha de saída como um evento |
| Glob | Encontrar arquivos por padrão (**/*.ts, src/**/*.py) |
| Grep | Pesquisar conteúdo de arquivos com regex |
| WebSearch | Pesquisar na web por informações atuais |
| WebFetch | Buscar e analisar conteúdo de páginas da web |
| AskUserQuestion | Fazer perguntas de esclarecimento ao usuário com opções de múltipla escolha |
Este exemplo cria um agente que pesquisa sua base de código por comentários TODO:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="Find all TODO comments and create a summary",
options=ClaudeAgentOptions(allowed_tools=["Read", "Glob", "Grep"]),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Find all TODO comments and create a summary",
options: { allowedTools: ["Read", "Glob", "Grep"] }
})) {
if ("result" in message) console.log(message.result);
}
Execute código personalizado em pontos-chave do ciclo de vida do agente. Os hooks do SDK usam funções de retorno de chamada para validar, registrar, bloquear ou transformar o comportamento do agente.
Hooks disponíveis: PreToolUse, PostToolUse, Stop, SessionStart, SessionEnd, UserPromptSubmit e muito mais.
Este exemplo registra todas as alterações de arquivo em um arquivo de auditoria:
import asyncio
from datetime import datetime
from claude_agent_sdk import query, ClaudeAgentOptions, HookMatcher
async def log_file_change(input_data, tool_use_id, context):
file_path = input_data.get("tool_input", {}).get("file_path", "unknown")
with open("./audit.log", "a") as f:
f.write(f"{datetime.now()}: modified {file_path}\n")
return {}
async def main():
async for message in query(
prompt="Refactor utils.py to improve readability",
options=ClaudeAgentOptions(
permission_mode="acceptEdits",
hooks={
"PostToolUse": [
HookMatcher(matcher="Edit|Write", hooks=[log_file_change])
]
},
),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
import { query, HookCallback } from "@anthropic-ai/claude-agent-sdk";
import { appendFile } from "fs/promises";
const logFileChange: HookCallback = async (input) => {
const filePath = (input as any).tool_input?.file_path ?? "unknown";
await appendFile("./audit.log", `${new Date().toISOString()}: modified ${filePath}\n`);
return {};
};
for await (const message of query({
prompt: "Refactor utils.py to improve readability",
options: {
permissionMode: "acceptEdits",
hooks: {
PostToolUse: [{ matcher: "Edit|Write", hooks: [logFileChange] }]
}
}
})) {
if ("result" in message) console.log(message.result);
}
Crie agentes especializados para lidar com subtarefas focadas. Seu agente principal delega trabalho e os subagentes relatam resultados.
Defina agentes personalizados com instruções especializadas. Os subagentes são invocados via a ferramenta Agent, então inclua Agent em allowedTools para aprovar automaticamente essas invocações:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition
async def main():
async for message in query(
prompt="Use the code-reviewer agent to review this codebase",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Glob", "Grep", "Agent"],
agents={
"code-reviewer": AgentDefinition(
description="Expert code reviewer for quality and security reviews.",
prompt="Analyze code quality and suggest improvements.",
tools=["Read", "Glob", "Grep"],
)
},
),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Use the code-reviewer agent to review this codebase",
options: {
allowedTools: ["Read", "Glob", "Grep", "Agent"],
agents: {
"code-reviewer": {
description: "Expert code reviewer for quality and security reviews.",
prompt: "Analyze code quality and suggest improvements.",
tools: ["Read", "Glob", "Grep"]
}
}
}
})) {
if ("result" in message) console.log(message.result);
}
As mensagens dentro do contexto de um subagente incluem um campo parent_tool_use_id, permitindo que você rastreie quais mensagens pertencem a qual execução de subagente.
Conecte-se a sistemas externos via Model Context Protocol: bancos de dados, navegadores, APIs e centenas mais.
Este exemplo conecta o servidor Playwright MCP para dar ao seu agente capacidades de automação de navegador:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="Open example.com and describe what you see",
options=ClaudeAgentOptions(
mcp_servers={
"playwright": {"command": "npx", "args": ["@playwright/mcp@latest"]}
}
),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Open example.com and describe what you see",
options: {
mcpServers: {
playwright: { command: "npx", args: ["@playwright/mcp@latest"] }
}
}
})) {
if ("result" in message) console.log(message.result);
}
Controle exatamente quais ferramentas seu agente pode usar. Permita operações seguras, bloqueie operações perigosas ou exija aprovação para ações sensíveis.
Para prompts de aprovação interativa e a ferramenta AskUserQuestion, consulte Lidar com aprovações e entrada do usuário.
Este exemplo cria um agente somente leitura que pode analisar mas não modificar código. allowed_tools pré-aprova Read, Glob e Grep.
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="Review this code for best practices",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Glob", "Grep"],
),
):
if hasattr(message, "result"):
print(message.result)
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Review this code for best practices",
options: {
allowedTools: ["Read", "Glob", "Grep"]
}
})) {
if ("result" in message) console.log(message.result);
}
Mantenha contexto em múltiplas trocas. Claude se lembra de arquivos lidos, análises feitas e histórico de conversa. Retome sessões depois ou divida-as para explorar diferentes abordagens.
Este exemplo captura o ID da sessão da primeira consulta, depois retoma para continuar com contexto completo:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage, ResultMessage
async def main():
session_id = None
# First query: capture the session ID
async for message in query(
prompt="Read the authentication module",
options=ClaudeAgentOptions(allowed_tools=["Read", "Glob"]),
):
if isinstance(message, SystemMessage) and message.subtype == "init":
session_id = message.data["session_id"]
# Resume with full context from the first query
async for message in query(
prompt="Now find all places that call it", # "it" = auth module
options=ClaudeAgentOptions(resume=session_id),
):
if isinstance(message, ResultMessage):
print(message.result)
asyncio.run(main())
import { query } from "@anthropic-ai/claude-agent-sdk";
let sessionId: string | undefined;
// First query: capture the session ID
for await (const message of query({
prompt: "Read the authentication module",
options: { allowedTools: ["Read", "Glob"] }
})) {
if (message.type === "system" && message.subtype === "init") {
sessionId = message.session_id;
}
}
// Resume with full context from the first query
for await (const message of query({
prompt: "Now find all places that call it", // "it" = auth module
options: { resume: sessionId }
})) {
if ("result" in message) console.log(message.result);
}
Recursos do Claude Code
O SDK também suporta a configuração baseada em sistema de arquivos do Claude Code. Com opções padrão, o SDK carrega estas do .claude/ em seu diretório de trabalho e ~/.claude/. Para restringir quais fontes carregam, defina setting_sources (Python) ou settingSources (TypeScript) em suas opções.
| Recurso | Descrição | Localização |
|---|---|---|
| Skills | Capacidades especializadas que Claude usa automaticamente ou você invoca com /name |
.claude/skills/*/SKILL.md |
| Commands | Comandos personalizados no formato legado. Use skills para novos comandos personalizados | .claude/commands/*.md |
| Memory | Contexto do projeto e instruções | CLAUDE.md ou .claude/CLAUDE.md |
| Plugins | Estenda com skills, agentes, hooks e servidores MCP | Programático via opção plugins |
Compare o Agent SDK com outras ferramentas Claude
A Plataforma Claude oferece múltiplas maneiras de construir com Claude. Aqui está como o Agent SDK se encaixa:
O Anthropic Client SDK oferece acesso direto à API: você envia prompts e implementa a execução de ferramentas você mesmo. O Agent SDK oferece Claude com execução de ferramentas integrada.
Com o Client SDK, você implementa um loop de ferramentas. Com o Agent SDK, Claude o manipula:
# Client SDK: You implement the tool loop
response = client.messages.create(...)
while response.stop_reason == "tool_use":
result = your_tool_executor(response.tool_use)
response = client.messages.create(tool_result=result, **params)
# Agent SDK: Claude handles tools autonomously
async for message in query(prompt="Fix the bug in auth.py"):
print(message)
// Client SDK: You implement the tool loop
let response = await client.messages.create({ ...params });
while (response.stop_reason === "tool_use") {
const result = yourToolExecutor(response.tool_use);
response = await client.messages.create({ tool_result: result, ...params });
}
// Agent SDK: Claude handles tools autonomously
for await (const message of query({ prompt: "Fix the bug in auth.ts" })) {
console.log(message);
}
Mesmas capacidades, interface diferente:
| Caso de uso | Melhor escolha |
|---|---|
| Desenvolvimento interativo | CLI |
| Pipelines CI/CD | SDK |
| Aplicações personalizadas | SDK |
| Tarefas únicas | CLI |
| Automação em produção | SDK |
Muitas equipes usam ambas: CLI para desenvolvimento diário, SDK para produção. Os fluxos de trabalho se traduzem diretamente entre eles.
Managed Agents é uma API REST hospedada: a Anthropic executa o agente e a sandbox, e sua aplicação envia eventos e transmite resultados de volta. O Agent SDK é uma biblioteca que executa o loop do agente dentro de seu próprio processo.
| Agent SDK | Managed Agents | |
|---|---|---|
| Executa em | Seu processo, sua infraestrutura | Infraestrutura gerenciada pela Anthropic |
| Interface | Biblioteca Python ou TypeScript | API REST |
| O agente trabalha em | Arquivos em sua infraestrutura | Uma sandbox gerenciada por sessão |
| Estado da sessão | JSONL em seu sistema de arquivos | Log de eventos hospedado pela Anthropic |
| Ferramentas personalizadas | Funções Python ou TypeScript em processo | Claude dispara a ferramenta; você executa e retorna resultados |
| Melhor para | Prototipagem local, agentes que trabalham diretamente em seu sistema de arquivos e serviços | Agentes de produção sem operar infraestrutura de sandbox ou sessão, sessões de longa duração e assíncronas |
Um caminho comum é fazer prototipagem com o Agent SDK localmente e depois migrar para Managed Agents para produção.
Changelog
Veja o changelog completo para atualizações do SDK, correções de bugs e novos recursos:
- TypeScript SDK: ver CHANGELOG.md
- Python SDK: ver CHANGELOG.md
Relatando bugs
Se você encontrar bugs ou problemas com o Agent SDK:
- TypeScript SDK: relatar problemas no GitHub
- Python SDK: relatar problemas no GitHub
Diretrizes de marca
Para parceiros integrando o Claude Agent SDK, o uso de marca Claude é opcional. Ao fazer referência a Claude em seu produto:
Permitido:
- "Claude Agent" (preferido para menus suspensos)
- "Claude" (quando dentro de um menu já rotulado "Agents")
- "{YourAgentName} Powered by Claude" (se você tiver um nome de agente existente)
Não permitido:
- "Claude Code" ou "Claude Code Agent"
- Arte ASCII com marca Claude Code ou elementos visuais que imitam Claude Code
Seu produto deve manter sua própria marca e não parecer ser Claude Code ou qualquer produto Anthropic. Para perguntas sobre conformidade de marca, entre em contato com a equipe de vendas da Anthropic.
Licença e termos
O uso do Claude Agent SDK é regido pelos Termos de Serviço Comercial da Anthropic, incluindo quando você o usa para alimentar produtos e serviços que você disponibiliza para seus próprios clientes e usuários finais, exceto na medida em que um componente específico ou dependência seja coberto por uma licença diferente conforme indicado no arquivo LICENSE desse componente.