Перейти к содержимому
中文

Потоковые ответы

Как читать SSE и отличать полученный текст от полностью завершённого ответа.

При stream: true сервер отправляет события, а не один готовый JSON. Используйте SSE-парсер или потоковый интерфейс SDK: сетевой фрагмент не обязательно совпадает с событием или UTF-8-символом.

Протоколы различаются

Раздел «Протоколы различаются»
ФорматЧто читать
Chat Completionschoices[].delta, причины завершения и завершающий маркер протокола
Anthropic Messagesсобытия сообщения, текстовых блоков и окончательное завершение сообщения
Responsesтипизированные дельты и итоговый статус, включая неуспех и незавершённость

Учитывайте инструментальные блоки отдельно от обычного текста. Если выдача остановилась по лимиту, результат может быть неполным даже при корректном HTTP-коде.

Ошибка может прийти после начала текста. Если соединение оборвалось до нужного финального события, сохраните признак незавершённости. Не объявляйте запрос успешным только по первым символам или HTTP 200.

После обрыва проверьте журнал: обработка могла уже произойти. Не запускайте бесконечный повтор, не объединяйте повторную генерацию с прежним текстом без явного действия пользователя. При отмене клиентом нельзя предполагать нулевую стоимость. Тайм-ауты и повторы.

Примеры запросов и конфигурации

Раздел «Примеры запросов и конфигурации»

Используйте пример для выбранного протокола и версии клиента. Замените учебные ключи и идентификаторы моделей своими. Команды выполняются на вашем компьютере или сервере.

bash
curl -N https://1zheai.com/v1/messages \
-H "x-api-key: $ONEZHE_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5-5","max_tokens":128,"stream":true,
"messages":[{"role":"user","content":"Сосчитайте от одного до пяти"}]}'
text
data: {"id":"msg_011Cg3ERqM8nN58LxLt7TVuG","object":"chat.completion.chunk","created":1792031230,"model":"claude-sonnet-4-6","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"msg_011Cg3ERqM8nN58LxLt7TVuG","object":"chat.completion.chunk","created":1792031230,"model":"claude-sonnet-4-6","choices":[{"index":0,"delta":{"content":"ok"},"finish_reason":null}]}
data: {"id":"msg_011Cg3ERqM8nN58LxLt7TVuG","object":"chat.completion.chunk","created":1792031230,"model":"claude-sonnet-4-6","choices":[{"index":0,"delta":{"content":""},"finish_reason":"stop"}]}
data: {"id":"msg_011Cg3ERqM8nN58LxLt7TVuG","object":"chat.completion.chunk","created":1792031230,"model":"claude-sonnet-4-6","choices":[],"usage":{"prompt_tokens":370,"completion_tokens":4,"total_tokens":374}}
data: [DONE]