Nuestros SDKs de Python y TypeScript ofrecen múltiples formas de streaming. El SDK de Python permite streams tanto síncronos como asíncronos. Consulta la documentación en cada SDK para más detalles.
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 por el servidor incluye un tipo de evento nombrado y datos JSON asociados. Cada evento utilizará un nombre de evento SSE (por ejemplo, event: message_stop), e incluirá el type de evento correspondiente en sus datos.
Cada stream utiliza el siguiente flujo de eventos:
message_start: contiene un objeto Message con content vacío.
Una serie de bloques de contenido, cada uno de los cuales tiene un evento content_block_start, uno o más eventos content_block_delta, y un evento content_block_stop. Cada bloque de contenido tendrá un index que corresponde a su índice en el array final content del Mensaje.
Uno o más eventos message_delta, indicando cambios a nivel superior en el objeto Message final.
Un evento final message_stop.
Los recuentos de tokens mostrados en el campo usage del evento message_delta son acumulativos.
Ocasionalmente podemos enviar errores en el flujo de eventos. Por ejemplo, durante períodos de alto uso, puedes recibir un overloaded_error, que normalmente correspondería a un HTTP 529 en un contexto sin streaming:
De acuerdo con nuestra política de versionado, podemos agregar nuevos tipos de eventos, y tu código debe manejar los tipos de eventos desconocidos con elegancia.
Los deltas para bloques de contenido tool_use corresponden a actualizaciones para el campo input del bloque. Para admitir la máxima granularidad, los deltas son cadenas JSON parciales, mientras que el tool_use.input final es siempre un objeto.
Puedes acumular las cadenas delta y analizar el JSON una vez que recibas un evento content_block_stop, utilizando una biblioteca como Pydantic para hacer análisis JSON parcial, o utilizando nuestros SDKs, que proporcionan ayudantes para acceder a valores incrementales analizados.
Un delta de bloque de contenido tool_use se ve así:
Nota: Nuestros modelos actuales solo admiten emitir una propiedad completa de clave y valor de input a la vez. Como tal, cuando se utilizan herramientas, puede haber retrasos entre los eventos de streaming mientras el modelo está trabajando. Una vez que se acumulan una clave y un valor de input, los emitimos como múltiples eventos content_block_delta con JSON parcial fragmentado para que el formato pueda admitir automáticamente una granularidad más fina en modelos futuros.
Cuando se utiliza pensamiento extendido con streaming habilitado, recibirás contenido de pensamiento a través de eventos thinking_delta. Estos deltas corresponden al campo thinking de los bloques de contenido thinking.
Para el contenido de pensamiento, se envía un evento especial signature_delta justo antes del evento content_block_stop. Esta firma se utiliza para verificar la integridad del bloque de pensamiento.
Un delta de pensamiento típico se ve así:
Delta de pensamiento
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 encarecidamente que utilices nuestros SDKs de cliente cuando uses el modo streaming. Sin embargo, si estás construyendo una integración directa con la API, necesitarás manejar estos eventos tú mismo.
Una respuesta de stream está compuesta por:
Un evento message_start
Potencialmente múltiples bloques de contenido, cada uno de los cuales contiene:
En esta solicitud, le pedimos a Claude que use una herramienta para decirnos el 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}'
Solicitud de streaming con uso de herramienta de búsqueda web
Response
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"}