Streaming
Tanto as interfaces da OpenAI (/v1/chat/completions) quanto da Anthropic (/v1/messages)
suportam streaming via Server-Sent Events. A Responses API (/v1/responses)
transmite seus próprios response.* eventos; veja Responses API. Streaming é o padrão recomendado
para qualquer coisa com um prompt longo, saída longa ou um limite de token alto — evita
timeouts de requisição e permite que você renderize tokens à medida que chegam.
Fluxo estilo OpenAI
curl -N https://api.uberllm.dev/v1/chat/completions \
-H "Authorization: Bearer $UBERLLM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v4-flash",
"stream": true,
"messages": [{"role": "user", "content": "Count to five, one per line."}]
}'
A resposta é uma sequência de data: linhas, cada uma um pedaço de conclusão de chat, terminando com data: [DONE].
from openai import OpenAI
client = OpenAI(base_url="https://api.uberllm.dev/v1", api_key="ull_...")
with client.chat.completions.create(
model="deepseek/deepseek-v4-flash",
stream=True,
messages=[{"role": "user", "content": "Write a short poem."}],
) as stream:
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
Contabilidade de uso
O UberLLM injeta stream_options: {"include_usage": true} para upstreams que o suportam, então o chunk final carrega um objeto usage com contagens de tokens de prompt e de completion, e cost_usd: o valor cobrado por esta requisição, em dólares americanos (o que o provedor cobrou por ela). Quando o upstream não envia um chunk de uso, o UberLLM adiciona um antes de data: [DONE]. Em /v1/messages o custo está no usage do evento message_delta.
Sua requisição é liquidada pelo custo que o marketplace reporta para aquela chamada; quando o uso está faltando, o gateway recorre a uma estimativa do tokenizer e sinaliza a requisição como estimada em seu registro de atividade. Os cabeçalhos de um stream são enviados antes que o custo seja conhecido, então um stream não tem cabeçalho X-UberLLM-Cost-USD: leia usage.cost_usd.
Interrupções
Se você se desconectar durante o streaming, o gateway cancela a requisição upstream e cobra apenas pelos tokens que foram realmente transmitidos. Você nunca é cobrado por uma resposta completa que não recebeu, e nenhum saldo reservado fica retido.
Keep-alives
O gateway envia um comentário : ping imediato ao conectar e keep-alives periódicos, para que streams de longa duração sobrevivam a timeouts de inatividade de proxy.