Потоковый и непотоковый ответ
На этой странице описана обработка ответов для нативного вызова Claude(/v1/messages), способ интеграции см. в
Основы нативного вызова Claude。
Непотоковый ответ
{ "id": "msg_xxx", "type": "message", "role": "assistant", "content": [{ "type": "text", "text": "……" }], "stop_reason": "end_turn", "usage": { "input_tokens": 24, "output_tokens": 180 }}- Основной текст находится в массиве
content, организован по блокам (text / tool_use / thinking), обходите блоки по одному и затем объединяйте; stop_reason:end_turn— нормальное завершение,max_tokens— обрезка,tool_use— запрос на вызов инструмента。
Потоковый ответ (SSE)
Добавьте в запрос "stream": true, события передаются по типам:
| Событие | Значение |
|---|---|
message_start | Начало сеанса, содержит количество input token |
content_block_start | Начало блока содержимого (text/tool_use/thinking) |
content_block_delta | Инкремент основного текста, достаточно объединять delta.text |
content_block_stop | Завершение текущего блока содержимого |
message_delta | Конечные метаданные (stop_reason, количество output token) |
message_stop | Полное завершение |
with client.messages.stream( model="claude-sonnet-5", max_tokens=1024, messages=[{"role": "user", "content": "Напиши короткое стихотворение о море"}],) as stream: for text in stream.text_stream: print(text, end="", flush=True)Примечания
- При использовании официального Anthropic SDK эти события уже обёрнуты, вручную обрабатывать SSE по событиям нужно только при самостоятельной реализации;
- Использование token определяется по
message_start(input)+message_delta(output) и соответствует биллингу; - Разбор блока
thinkingв режиме мышления см. в Режим мышления。