Перейти к содержимому
Основной сайт Новости Консоль

Потоковый и непотоковый ответ

На этой странице описана обработка ответов для нативного вызова 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 в режиме мышления см. в Режим мышления