Instalação
Escolhendo Entre query()
e ClaudeSDKClient
O Python SDK fornece duas maneiras de interagir com o Claude Code:
Comparação Rápida
Recurso | query() | ClaudeSDKClient |
---|---|---|
Sessão | Cria nova sessão a cada vez | Reutiliza a mesma sessão |
Conversa | Troca única | Múltiplas trocas no mesmo contexto |
Conexão | Gerenciada automaticamente | Controle manual |
Entrada de Streaming | ✅ Suportado | ✅ Suportado |
Interrupções | ❌ Não suportado | ✅ Suportado |
Hooks | ❌ Não suportado | ✅ Suportado |
Ferramentas Personalizadas | ❌ Não suportado | ✅ Suportado |
Continuar Chat | ❌ Nova sessão a cada vez | ✅ Mantém a conversa |
Caso de Uso | Tarefas pontuais | Conversas contínuas |
Quando Usar query()
(Nova Sessão a Cada Vez)
Melhor para:
- Perguntas pontuais onde você não precisa do histórico da conversa
- Tarefas independentes que não requerem contexto de trocas anteriores
- Scripts de automação simples
- Quando você quer um novo começo a cada vez
Quando Usar ClaudeSDKClient
(Conversa Contínua)
Melhor para:
- Continuar conversas - Quando você precisa que o Claude lembre do contexto
- Perguntas de acompanhamento - Construindo sobre respostas anteriores
- Aplicações interativas - Interfaces de chat, REPLs
- Lógica orientada por resposta - Quando a próxima ação depende da resposta do Claude
- Controle de sessão - Gerenciando o ciclo de vida da conversa explicitamente
Funções
query()
Cria uma nova sessão para cada interação com o Claude Code. Retorna um iterador assíncrono que produz mensagens conforme elas chegam. Cada chamada para query()
começa do zero sem memória de interações anteriores.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
prompt | str | AsyncIterable[dict] | O prompt de entrada como string ou iterável assíncrono para modo streaming |
options | ClaudeAgentOptions | None | Objeto de configuração opcional (padrão para ClaudeAgentOptions() se None) |
Retorna
Retorna umAsyncIterator[Message]
que produz mensagens da conversa.
Exemplo - Com opções
tool()
Decorador para definir ferramentas MCP com segurança de tipos.
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
name | str | Identificador único para a ferramenta |
description | str | Descrição legível do que a ferramenta faz |
input_schema | type | dict[str, Any] | Esquema definindo os parâmetros de entrada da ferramenta (veja abaixo) |
Opções de Esquema de Entrada
-
Mapeamento de tipo simples (recomendado):
-
Formato de esquema JSON (para validação complexa):
Retorna
Uma função decoradora que envolve a implementação da ferramenta e retorna uma instânciaSdkMcpTool
.
Exemplo
create_sdk_mcp_server()
Criar um servidor MCP em processo que executa dentro da sua aplicação Python.
Parâmetros
Parâmetro | Tipo | Padrão | Descrição |
---|---|---|---|
name | str | - | Identificador único para o servidor |
version | str | "1.0.0" | String de versão do servidor |
tools | list[SdkMcpTool[Any]] | None | None | Lista de funções de ferramenta criadas com o decorador @tool |
Retorna
Retorna um objetoMcpSdkServerConfig
que pode ser passado para ClaudeAgentOptions.mcp_servers
.
Exemplo
Classes
ClaudeSDKClient
Mantém uma sessão de conversa através de múltiplas trocas. Este é o equivalente Python de como a função query()
do TypeScript SDK funciona internamente - ela cria um objeto cliente que pode continuar conversas.
Recursos Principais
- Continuidade de Sessão: Mantém o contexto da conversa através de múltiplas chamadas
query()
- Mesma Conversa: Claude lembra de mensagens anteriores na sessão
- Suporte a Interrupção: Pode parar o Claude no meio da execução
- Ciclo de Vida Explícito: Você controla quando a sessão inicia e termina
- Fluxo Orientado por Resposta: Pode reagir a respostas e enviar acompanhamentos
- Ferramentas e Hooks Personalizados: Suporta ferramentas personalizadas (criadas com o decorador
@tool
) e hooks
Métodos
Método | Descrição |
---|---|
__init__(options) | Inicializar o cliente com configuração opcional |
connect(prompt) | Conectar ao Claude com um prompt inicial opcional ou fluxo de mensagem |
query(prompt, session_id) | Enviar uma nova solicitação em modo streaming |
receive_messages() | Receber todas as mensagens do Claude como um iterador assíncrono |
receive_response() | Receber mensagens até e incluindo uma ResultMessage |
interrupt() | Enviar sinal de interrupção (funciona apenas em modo streaming) |
disconnect() | Desconectar do Claude |
Suporte a Gerenciador de Contexto
O cliente pode ser usado como um gerenciador de contexto assíncrono para gerenciamento automático de conexão:
Importante: Ao iterar sobre mensagens, evite usar break
para sair cedo, pois isso pode causar problemas de limpeza do asyncio. Em vez disso, deixe a iteração completar naturalmente ou use flags para rastrear quando você encontrou o que precisa.
Exemplo - Continuando uma conversa
Exemplo - Entrada de streaming com ClaudeSDKClient
Exemplo - Usando interrupções
Exemplo - Controle avançado de permissões
Tipos
SdkMcpTool
Definição para uma ferramenta SDK MCP criada com o decorador @tool
.
Propriedade | Tipo | Descrição |
---|---|---|
name | str | Identificador único para a ferramenta |
description | str | Descrição legível |
input_schema | type[T] | dict[str, Any] | Esquema para validação de entrada |
handler | Callable[[T], Awaitable[dict[str, Any]]] | Função assíncrona que lida com a execução da ferramenta |
ClaudeAgentOptions
Dataclass de configuração para consultas do Claude Code.
Propriedade | Tipo | Padrão | Descrição |
---|---|---|---|
allowed_tools | list[str] | [] | Lista de nomes de ferramentas permitidas |
max_thinking_tokens | int | 8000 | Tokens máximos para processo de pensamento |
system_prompt | str | None | None | Configuração do prompt do sistema. Passe uma string para prompt personalizado, ou use formato predefinido para o prompt do sistema do Claude Code |
mcp_servers | dict[str, McpServerConfig] | str | Path | {} | Configurações de servidor MCP ou caminho para arquivo de configuração |
permission_mode | PermissionMode | None | None | Modo de permissão para uso de ferramentas |
continue_conversation | bool | False | Continuar a conversa mais recente |
resume | str | None | None | ID da sessão para retomar |
fork_session | bool | False | Ao retomar com resume , bifurcar para um novo ID de sessão em vez de continuar a sessão original |
max_turns | int | None | None | Turnos máximos de conversa |
disallowed_tools | list[str] | [] | Lista de nomes de ferramentas não permitidas |
model | str | None | None | Modelo Claude a usar |
permission_prompt_tool_name | str | None | None | Nome da ferramenta MCP para prompts de permissão |
cwd | str | Path | None | None | Diretório de trabalho atual |
settings | str | None | None | Caminho para arquivo de configurações |
add_dirs | list[str | Path] | [] | Diretórios adicionais que Claude pode acessar |
extra_args | dict[str, str | None] | {} | Argumentos CLI adicionais para passar diretamente para o CLI |
can_use_tool | CanUseTool | None | None | Função de callback de permissão de ferramenta |
hooks | dict[HookEvent, list[HookMatcher]] | None | None | Configurações de hook para interceptar eventos |
agents | dict[str, AgentDefinition] | None | None | Subagentes definidos programaticamente |
setting_sources | list[SettingSource] | None | None (sem configurações) | Controla quais configurações do sistema de arquivos carregar. Quando omitido, nenhuma configuração é carregada |
SettingSource
Controla quais fontes de configuração baseadas no sistema de arquivos o SDK carrega configurações.
Valor | Descrição | Localização |
---|---|---|
"user" | Configurações globais do usuário | ~/.claude/settings.json |
"project" | Configurações compartilhadas do projeto (controladas por versão) | .claude/settings.json |
"local" | Configurações locais do projeto (gitignored) | .claude/settings.local.json |
Comportamento padrão
Quandosetting_sources
é omitido ou None
, o SDK não carrega nenhuma configuração do sistema de arquivos. Isso fornece isolamento para aplicações SDK.
Por que usar setting_sources?
Carregar todas as configurações do sistema de arquivos (comportamento legado):Precedência de configurações
Quando múltiplas fontes são carregadas, as configurações são mescladas com esta precedência (maior para menor):- Configurações locais (
.claude/settings.local.json
) - Configurações do projeto (
.claude/settings.json
) - Configurações do usuário (
~/.claude/settings.json
)
agents
, allowed_tools
) sempre sobrescrevem configurações do sistema de arquivos.
AgentDefinition
Configuração para um subagente definido programaticamente.
Campo | Obrigatório | Descrição |
---|---|---|
description | Sim | Descrição em linguagem natural de quando usar este agente |
tools | Não | Array de nomes de ferramentas permitidas. Se omitido, herda todas as ferramentas |
prompt | Sim | O prompt do sistema do agente |
model | Não | Substituição de modelo para este agente. Se omitido, usa o modelo principal |
PermissionMode
Modos de permissão para controlar a execução de ferramentas.
McpSdkServerConfig
Configuração para servidores SDK MCP criados com create_sdk_mcp_server()
.
McpServerConfig
Tipo união para configurações de servidor MCP.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
Tipos de Mensagem
Message
Tipo união de todas as mensagens possíveis.
UserMessage
Mensagem de entrada do usuário.
AssistantMessage
Mensagem de resposta do assistente com blocos de conteúdo.
SystemMessage
Mensagem do sistema com metadados.
ResultMessage
Mensagem de resultado final com informações de custo e uso.
Tipos de Bloco de Conteúdo
ContentBlock
Tipo união de todos os blocos de conteúdo.
TextBlock
Bloco de conteúdo de texto.
ThinkingBlock
Bloco de conteúdo de pensamento (para modelos com capacidade de pensamento).
ToolUseBlock
Bloco de solicitação de uso de ferramenta.
ToolResultBlock
Bloco de resultado de execução de ferramenta.
Tipos de Erro
ClaudeSDKError
Classe de exceção base para todos os erros do SDK.
CLINotFoundError
Levantado quando o CLI do Claude Code não está instalado ou não foi encontrado.
CLIConnectionError
Levantado quando a conexão com o Claude Code falha.
ProcessError
Levantado quando o processo do Claude Code falha.
CLIJSONDecodeError
Levantado quando a análise JSON falha.
Tipos de Hook
HookEvent
Tipos de evento de hook suportados. Note que devido a limitações de configuração, o Python SDK não suporta hooks SessionStart, SessionEnd e Notification.
HookCallback
Definição de tipo para funções de callback de hook.
input_data
: Dados de entrada específicos do hook (veja documentação de hook)tool_use_id
: Identificador opcional de uso de ferramenta (para hooks relacionados a ferramentas)context
: Contexto do hook com informações adicionais
decision
:"block"
para bloquear a açãosystemMessage
: Mensagem do sistema para adicionar à transcriçãohookSpecificOutput
: Dados de saída específicos do hook
HookContext
Informações de contexto passadas para callbacks de hook.
HookMatcher
Configuração para corresponder hooks a eventos ou ferramentas específicas.
Exemplo de Uso de Hook
Tipos de Entrada/Saída de Ferramenta
Documentação de esquemas de entrada/saída para todas as ferramentas integradas do Claude Code. Embora o Python SDK não exporte estes como tipos, eles representam a estrutura de entradas e saídas de ferramentas em mensagens.Task
Nome da ferramenta:Task
Entrada:
Bash
Nome da ferramenta:Bash
Entrada:
Edit
Nome da ferramenta:Edit
Entrada:
MultiEdit
Nome da ferramenta:MultiEdit
Entrada:
Read
Nome da ferramenta:Read
Entrada:
Write
Nome da ferramenta:Write
Entrada:
Glob
Nome da ferramenta:Glob
Entrada:
Grep
Nome da ferramenta:Grep
Entrada:
NotebookEdit
Nome da ferramenta:NotebookEdit
Entrada:
WebFetch
Nome da ferramenta:WebFetch
Entrada:
WebSearch
Nome da ferramenta:WebSearch
Entrada:
TodoWrite
Nome da ferramenta:TodoWrite
Entrada:
BashOutput
Nome da ferramenta:BashOutput
Entrada:
KillBash
Nome da ferramenta:KillBash
Entrada:
ExitPlanMode
Nome da ferramenta:ExitPlanMode
Entrada:
ListMcpResources
Nome da ferramenta:List McpResources
Entrada:
ReadMcpResource
Nome da ferramenta:ReadMcpResource
Entrada:
Recursos Avançados com ClaudeSDKClient
Construindo uma Interface de Conversa Contínua
Usando Hooks para Modificação de Comportamento
Monitoramento de Progresso em Tempo Real
Exemplo de Uso
Operações básicas de arquivo (usando query)
Tratamento de erros
Modo streaming com cliente
Usando ferramentas personalizadas com ClaudeSDKClient
Veja também
- Guia do Python SDK - Tutorial e exemplos
- Visão geral do SDK - Conceitos gerais do SDK
- Referência do TypeScript SDK - Documentação do TypeScript SDK
- Referência do CLI - Interface de linha de comando
- Fluxos de trabalho comuns - Guias passo a passo