Быстрый старт

Streaming-ответы

Получение ответов LLM в реальном времени через Server-Sent Events. Подходит для чат-приложений, аудио-обработки и live-транскрипции.

Streaming text completion

Запрашивайте text-completion со включённым стримингом, чтобы получать частичные text-чанки по мере генерации:

curl --location 'http://localhost:8080/v1/completions' \
--header 'Content-Type: application/json' \
--data '{
    "model": "openai/gpt-4o-mini",
    "prompt": "Write a short haiku about the ocean",
    "stream": true
}'

Формат ответа (Server-Sent Events):

data: {"choices":[{"text":"Waves whisper soft"}],"model":"gpt-4o-mini"}

data: {"choices":[{"text":" on distant shores, the moon calls"}],"model":"gpt-4o-mini"}

data: {"choices":[{"text":" tides to rise."}],"model":"gpt-4o-mini"}

data: [DONE]

Streaming chat completion

Получайте ответы LLM в реальном времени по мере генерации. Полезно для чат-интерфейсов, где важно начать показывать ответ, не дожидаясь полного завершения генерации.

curl --location 'http://localhost:8080/v1/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
    "model": "openai/gpt-4o-mini",
    "messages": [
        {"role": "user", "content": "Tell me a story about a robot learning to paint"}
    ],
    "stream": true
}'

Формат ответа (Server-Sent Events):

data: {"choices":[{"delta":{"content":"Once"}}],"model":"gpt-4o-mini"}

data: {"choices":[{"delta":{"content":" upon"}}],"model":"gpt-4o-mini"}

data: {"choices":[{"delta":{"content":" a"}}],"model":"gpt-4o-mini"}

data: [DONE]

Каждый чанк содержит часть ответа, которую вы дописываете к буферу — так получается полный ответ по мере его поступления.

Streaming-запросы подчиняются общему таймауту, заданному в конфигурации провайдера (по умолчанию 30 секунд).

Meridian нормализует stream-ответы: использование (usage) и finish_reason приходят только в последнем чанке, а контент — в предыдущих.


Streaming Responses API

Стриминг OpenAI-совместимого Responses API использует event-based SSE: в потоке присутствуют строки event:, маркер [DONE] не используется — поток завершается закрытием соединения.

curl --location 'http://localhost:8080/v1/responses' \
--header 'Content-Type: application/json' \
--data '{
    "model": "openai/gpt-4o-mini",
    "input": "Tell me one interesting fact about Mars",
    "stream": true
}'

Формат ответа (Server-Sent Events):

event: response.created
data: {"type":"response.created"}

event: response.output_text.delta
data: {"type":"response.output_text.delta","delta": /* частичная дельта текста */ }

event: response.output_text.delta
data: {"type":"response.output_text.delta","delta": /* следующая дельта */ }

event: response.completed
data: {"type":"response.completed","response":{ /* usage, finish_reason и т. п. */ }}

Text-to-Speech: стриминговая генерация аудио

Стримите аудио по мере преобразования текста в речь. Подходит для длинных текстов и для случаев, когда воспроизведение должно начаться сразу.

curl --location 'http://localhost:8080/v1/audio/speech' \
--header 'Content-Type: application/json' \
--data '{
    "model": "openai/gpt-4o-mini-tts",
    "input": "Hello this is a sample test, respond with hello for my Meridian",
    "voice": "alloy",
    "stream_format": "sse"
}'

Ответ: аудио-чанки приходят через Server-Sent Events. Каждый чанк содержит base64-кодированные аудио-данные, которые можно проигрывать или сохранять по мере поступления.

data: {"audio":"UklGRigAAABXQVZFZm10IBAAAAABAAEA..."}

data: {"audio":"AKlFQVZFZm10IBAAAAABAAEAq..."}

data: [DONE]

Сохранение потока в файл: добавьте > audio_stream.txt к команде curl.


Speech-to-Text: стриминговая транскрипция

Получайте транскрипцию аудио в реальном времени — полезно для live-сценариев и длинных файлов.

curl --location 'http://localhost:8080/v1/audio/transcriptions' \
--form 'file=@"/path/to/your/audio.mp3"' \
--form 'model="openai/gpt-4o-transcribe"' \
--form 'stream="true"' \
--form 'response_format="json"'

Формат ответа:

data: {"text":"Hello"}

data: {"text":" this"}

data: {"text":" is"}

data: {"text":" a sample"}

data: [DONE]

Дополнительные опции: добавьте --form 'language="en"' для подсказки языка или --form 'prompt="context hint"' для улучшения точности распознавания.


Поддерживаемые форматы аудио

  • Синтез речи (TTS): "response_format": "mp3" (по умолчанию) и "response_format": "wav".
  • Транскрипция (STT): принимаются MP3, WAV, M4A и другие распространённые аудио-форматы.

Поддержка стриминга зависит от провайдера и модели. Уточняйте возможности и ограничения в документации конкретного провайдера.


Содержание