Source: https://aiprimetech.io/ru/docs/api-reference/streaming/ [Главная](/ru/) / [Документация](/ru/docs/) / Потоковая передача # Потоковая передача События, отправляемые сервером, в обоих форматах — структура событий различается, и при их смешении клиент не видит данных. Копировать страницу [ Посмотреть в формате Markdown](/ru/docs/api-reference/streaming.md) [ Спросить ChatGPT](https://chatgpt.com/?q=Read%20https%3A//aiprimetech.io/docs/api-reference/streaming.md%20and%20answer%20questions%20about%20it.%20Start%20with%20a%20short%20summary.) [ Спросить в Claude](https://claude.ai/new?q=Read%20https%3A//aiprimetech.io/docs/api-reference/streaming.md%20and%20answer%20questions%20about%20it.%20Start%20with%20a%20short%20summary.) Задайте stream в true, и ответ будет передаваться в формате text/event-stream. Оба эндпоинта поддерживают потоковую передачу, но выдают события разной структуры. ## Формат Anthropic ``` Copycurl -N https://aiprimetech.io/v1/messages \ -H "x-api-key: $CLAUDEAPIKEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{"model":"claude-sonnet-4-6","max_tokens":512,"stream":true, "messages":[{"role":"user","content":"Count to five"}]}' ``` ``` Copyevent: message_start data: {"type":"message_start","message":{"id":"msg_...","usage":{"input_tokens":9}}} event: content_block_delta data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"One"}} event: message_delta data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":14}} event: message_stop data: {"type":"message_stop"} ``` Текст поступает в content_block_delta событиях по пути delta.text. Итоговое число выходных токенов поступает в message_delta, а не message_start. ## Формат OpenAI ``` Copydata: {"choices":[{"delta":{"content":"One"},"index":0}]} data: {"choices":[{"delta":{},"finish_reason":"stop","index":0}]} data: [DONE] ``` Текст поступает по пути choices[0].delta.content, а поток заканчивается буквальным data: [DONE] маркером завершения, который не является JSON. Это несоответствие приводит к пустому ответу без ошибки: клиент, разбирающий choices[].delta.content в потоке Messages, каждый раз ничего не находит и сообщает об успехе. Если потоковая передача вроде бы работает, но ничего не возвращает, проверьте, какую структуру вы разбираете. ## Python, SDK Anthropic ``` Copyfrom anthropic import Anthropic client = Anthropic(api_key=class="s">"sk-your-key", base_url=class="s">"https://aiprimetech.io") with client.messages.stream( model=class="s">"claude-sonnet-4-6", max_tokens=512, messages=[{class="s">"role": class="s">"user", class="s">"content": class="s">"Count to five"}], ) as stream: for text in stream.text_stream: print(text, end=class="s">"", flush=True) ``` ## Практические замечания - Используйте curl -N при ручном тестировании, иначе curl буферизует весь поток и кажется, что ничего не происходит. - Отключите буферизацию прокси перед своим приложением (proxy_buffering off в nginx), иначе клиенты получат весь ответ разом в конце. - Если соединение обрывается во время потоковой передачи, уже сгенерированные токены всё равно оплачиваются. - Потоковая передача не меняет цену — только время поступления байтов. [API сообщенийСправочник по ответам без потоковой передачи](/ru/docs/api-reference/messages/)[ОшибкиСбои во время потоковой передачи](/ru/docs/api-reference/errors/)[Устранение неполадокПустые ответы](/ru/docs/guides/troubleshooting/) [НазадЭндпоинт моделей](/ru/docs/api-reference/models-endpoint/)[ДалееОшибки](/ru/docs/api-reference/errors/)