AssistantMessage completos após Claude terminar de gerar cada resposta. Para receber atualizações incrementais conforme o texto e as chamadas de ferramentas são geradas, ative o streaming de mensagens parciais definindo include_partial_messages (Python) ou includePartialMessages (TypeScript) como true nas suas opções.
Ativar streaming de saída
Para ativar o streaming, definainclude_partial_messages (Python) ou includePartialMessages (TypeScript) como true nas suas opções. Isso faz com que o SDK produza mensagens StreamEvent contendo eventos brutos da API conforme chegam, além das mensagens AssistantMessage e ResultMessage usuais.
Seu código então precisa:
- Verificar o tipo de cada mensagem para distinguir
StreamEventde outros tipos de mensagem - Para
StreamEvent, extrair o campoevente verificar seutype - Procurar por eventos
content_block_deltaondedelta.typeétext_delta, que contêm os chunks de texto reais
StreamEvent, depois para content_block_delta, depois para text_delta:
Referência de StreamEvent
Quando mensagens parciais estão ativadas, você recebe eventos brutos de streaming da Claude API encapsulados em um objeto. O tipo tem nomes diferentes em cada SDK:- Python:
StreamEvent(importar declaude_agent_sdk.types) - TypeScript:
SDKPartialAssistantMessagecomtype: 'stream_event'
event contém o evento de streaming bruto da Claude API. Os tipos de evento comuns incluem:
| Tipo de Evento | Descrição |
|---|---|
message_start | Início de uma nova mensagem |
content_block_start | Início de um novo bloco de conteúdo (texto ou uso de ferramenta) |
content_block_delta | Atualização incremental do conteúdo |
content_block_stop | Fim de um bloco de conteúdo |
message_delta | Atualizações no nível da mensagem (motivo de parada, uso) |
message_stop | Fim da mensagem |
Fluxo de mensagens
Com mensagens parciais ativadas, você recebe mensagens nesta ordem:include_partial_messages em Python, includePartialMessages em TypeScript), você recebe todos os tipos de mensagem exceto StreamEvent. Os tipos comuns incluem SystemMessage (inicialização de sessão), AssistantMessage (respostas completas), ResultMessage (resultado final) e uma mensagem de limite compacta indicando quando o histórico de conversa foi compactado (SDKCompactBoundaryMessage em TypeScript; SystemMessage com subtipo "compact_boundary" em Python).
Transmitir respostas de texto
Para exibir o texto conforme é gerado, procure por eventoscontent_block_delta onde delta.type é text_delta. Estes contêm os chunks de texto incrementais. O exemplo abaixo imprime cada chunk conforme chega:
Transmitir chamadas de ferramentas
As chamadas de ferramentas também são transmitidas incrementalmente. Você pode rastrear quando as ferramentas começam, receber sua entrada conforme é gerada e ver quando são concluídas. O exemplo abaixo rastreia a ferramenta atual sendo chamada e acumula a entrada JSON conforme é transmitida. Ele usa três tipos de evento:content_block_start: ferramenta começacontent_block_deltacominput_json_delta: chunks de entrada chegamcontent_block_stop: chamada de ferramenta concluída
Construir uma interface de usuário de streaming
Este exemplo combina streaming de texto e ferramentas em uma interface coerente. Ele rastreia se o agente está executando uma ferramenta (usando um sinalizadorin_tool) para mostrar indicadores de status como [Using Read...] enquanto as ferramentas são executadas. O texto é transmitido normalmente quando não está em uma ferramenta, e a conclusão da ferramenta dispara uma mensagem “done”. Este padrão é útil para interfaces de chat que precisam mostrar progresso durante tarefas de agente em várias etapas.
Limitações conhecidas
- Structured output: o resultado JSON aparece apenas no
ResultMessage.structured_outputfinal, não como deltas de streaming. Consulte structured outputs para detalhes.
Próximas etapas
Agora que você pode transmitir texto e chamadas de ferramentas em tempo real, explore estes tópicos relacionados:- Interactive vs one-shot queries: escolha entre modos de entrada para seu caso de uso
- Structured outputs: obtenha respostas JSON digitadas do agente
- Permissions: controle quais ferramentas o agente pode usar