Nossos SDKs Python e TypeScript oferecem várias maneiras de fazer streaming. O SDK Python permite streams síncronos e assíncronos. Consulte a documentação em cada SDK para detalhes.
import anthropicclient = anthropic.Anthropic()with client.messages.stream( max_tokens=1024, messages=[{"role":"user","content":"Hello"}], model="claude-opus-4-20250514",)as stream:for text in stream.text_stream:print(text, end="", flush=True)
Cada evento enviado pelo servidor inclui um tipo de evento nomeado e dados JSON associados. Cada evento usará um nome de evento SSE (por exemplo, event: message_stop) e incluirá o type de evento correspondente em seus dados.
Cada stream usa o seguinte fluxo de eventos:
message_start: contém um objeto Message com content vazio.
Uma série de blocos de conteúdo, cada um dos quais tem um evento content_block_start, um ou mais eventos content_block_delta e um evento content_block_stop. Cada bloco de conteúdo terá um index que corresponde ao seu índice no array content da Mensagem final.
Um ou mais eventos message_delta, indicando alterações de nível superior no objeto Message final.
Um evento final message_stop.
As contagens de tokens mostradas no campo usage do evento message_delta são cumulativas.
Ocasionalmente, podemos enviar erros no fluxo de eventos. Por exemplo, durante períodos de alto uso, você pode receber um overloaded_error, que normalmente corresponderia a um HTTP 529 em um contexto sem streaming:
De acordo com nossa política de versionamento, podemos adicionar novos tipos de eventos, e seu código deve lidar com tipos de eventos desconhecidos de forma elegante.
Os deltas para blocos de conteúdo tool_use correspondem a atualizações para o campo input do bloco. Para suportar a máxima granularidade, os deltas são strings JSON parciais, enquanto o tool_use.input final é sempre um objeto.
Você pode acumular os deltas de string e analisar o JSON assim que receber um evento content_block_stop, usando uma biblioteca como Pydantic para fazer a análise parcial de JSON, ou usando nossos SDKs, que fornecem auxiliares para acessar valores incrementais analisados.
Um delta de bloco de conteúdo tool_use se parece com:
Nota: Nossos modelos atuais só suportam a emissão de uma propriedade completa de chave e valor de input por vez. Como tal, ao usar ferramentas, pode haver atrasos entre os eventos de streaming enquanto o modelo está trabalhando. Uma vez que uma chave e valor de input são acumulados, nós os emitimos como múltiplos eventos content_block_delta com json parcial em pedaços para que o formato possa automaticamente suportar uma granularidade mais fina em modelos futuros.
Ao usar pensamento estendido com streaming ativado, você receberá conteúdo de pensamento via eventos thinking_delta. Esses deltas correspondem ao campo thinking dos blocos de conteúdo thinking.
Para conteúdo de pensamento, um evento especial signature_delta é enviado logo antes do evento content_block_stop. Esta assinatura é usada para verificar a integridade do bloco de pensamento.
Um delta de pensamento típico se parece com:
Delta de pensamento
event: content_block_deltadata:{"type":"content_block_delta","index":0,"delta":{"type":"thinking_delta","thinking":"Let me solve this step by step:\n\n1. First break down 27 * 453"}}
Recomendamos fortemente que você use nossos SDKs de cliente ao usar o modo de streaming. No entanto, se você estiver construindo uma integração direta com a API, precisará lidar com esses eventos por conta própria.
Uma resposta de stream é composta por:
Um evento message_start
Potencialmente múltiplos blocos de conteúdo, cada um dos quais contém:
Nesta requisição, pedimos ao Claude para usar uma ferramenta para nos informar sobre o clima.
Shell
curl https://api.anthropic.com/v1/messages \-H"content-type: application/json"\-H"x-api-key: $ANTHROPIC_API_KEY"\-H"anthropic-version: 2023-06-01"\-d '{"model":"claude-opus-4-20250514","max_tokens":1024,"tools":[{"name":"get_weather","description":"Get the current weather in a given location","input_schema":{"type":"object","properties":{"location":{"type":"string","description":"The city and state, e.g. San Francisco, CA"}},"required":["location"]}}],"tool_choice":{"type":"any"},"messages":[{"role":"user","content":"What is the weather like in San Francisco?"}],"stream":true}'
Requisição de streaming com uso de ferramenta de busca na web
Resposta
event: message_startdata:{"type":"message_start","message":{"id":"msg_01G...","type":"message","role":"assistant","model":"claude-3-7-sonnet-20250219","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":2679,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":3}}}event: content_block_startdata:{"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}event: content_block_deltadata:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"I'll check"}}event: content_block_deltadata:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" the current weather in New York City for you"}}event: pingdata:{"type":"ping"}event: content_block_deltadata:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"."}}event: content_block_stopdata:{"type":"content_block_stop","index":0}event: content_block_startdata:{"type":"content_block_start","index":1,"content_block":{"type":"server_tool_use","id":"srvtoolu_014hJH82Qum7Td6UV8gDXThB","name":"web_search","input":{}}}event: content_block_deltadata:{"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":""}}event: content_block_deltadata:{"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"{\"query"}}event: content_block_deltadata:{"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"\":"}}event: content_block_deltadata:{"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":" \"weather"}}event: content_block_deltadata:{"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":" NY"}}event: content_block_deltadata:{"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"C to"}}event: content_block_deltadata:{"type":"content_block_delta","index":1,"delta":{"type":"input_json_delta","partial_json":"day\"}"}}event: content_block_stopdata:{"type":"content_block_stop","index":1}event: content_block_startdata:{"type":"content_block_start","index":2,"content_block":{"type":"web_search_tool_result","tool_use_id":"srvtoolu_014hJH82Qum7Td6UV8gDXThB","content":[{"type":"web_search_result","title":"Weather in New York City in May 2025 (New York) - detailed Weather Forecast for a month","url":"https://world-weather.info/forecast/usa/new_york/may-2025/","encrypted_content":"Ev0DCioIAxgCIiQ3NmU4ZmI4OC1k...","page_age":null},...]}}event: content_block_stopdata:{"type":"content_block_stop","index":2}event: content_block_startdata:{"type":"content_block_start","index":3,"content_block":{"type":"text","text":""}}event: content_block_deltadata:{"type":"content_block_delta","index":3,"delta":{"type":"text_delta","text":"Here's the current weather information for New York"}}event: content_block_deltadata:{"type":"content_block_delta","index":3,"delta":{"type":"text_delta","text":" City:\n\n# Weather"}}event: content_block_deltadata:{"type":"content_block_delta","index":3,"delta":{"type":"text_delta","text":" in New York City"}}event: content_block_deltadata:{"type":"content_block_delta","index":3,"delta":{"type":"text_delta","text":"\n\n"}}...event: content_block_stopdata:{"type":"content_block_stop","index":17}event: message_deltadata:{"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":10682,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":510,"server_tool_use":{"web_search_requests":1}}}event: message_stopdata:{"type":"message_stop"}