NovitàCollega qualsiasi agente a UberLLM: una chiave, tutti i modelli, a prezzo di listino o meno.
UberLLM

Streaming

Sia le interfacce OpenAI (/v1/chat/completions) che Anthropic (/v1/messages) supportano lo streaming tramite Server-Sent Events. La Responses API (/v1/responses) effettua lo streaming dei propri response.* eventi; vedi Responses API. Lo streaming è la modalità predefinita consigliata per tutto ciò che ha un prompt lungo, un output lungo o un limite di token elevato — evita i timeout delle richieste e ti permette di renderizzare i token man mano che arrivano.

Stream in stile 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."}]
  }'

La risposta è una sequenza di data: righe, ciascuna un frammento di completamento della chat, che termina con 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)

Contabilità dell'utilizzo

UberLLM inietta stream_options: {"include_usage": true} per gli upstream che lo supportano, quindi il chunk finale contiene un oggetto usage con i conteggi dei token di prompt e di completamento, e cost_usd: quanto viene fatturata questa richiesta, in dollari USA (quanto il provider ha addebitato per essa). Quando l'upstream non invia un chunk di utilizzo, UberLLM ne aggiunge uno prima di data: [DONE]. Su /v1/messages il costo si trova nel usage dell'evento message_delta.

La tua richiesta viene saldata al costo che il marketplace riporta per quella chiamata; quando l'utilizzo è mancante, il gateway ricorre a una stima del tokenizer e contrassegna la richiesta come stimata nel tuo activity log. Gli header di uno stream vengono inviati prima che il costo sia noto, quindi uno stream non ha un header X-UberLLM-Cost-USD: leggi usage.cost_usd.

Interruzioni

Se ti disconnetti a metà streaming, il gateway annulla la richiesta upstream e si accontenta dei token che sono stati effettivamente trasmessi in streaming. Non ti viene mai addebitata una risposta completa che non hai ricevuto, e nessun saldo riservato rimane bloccato.

Messaggi keep-alive

Il gateway invia un commento immediato : ping alla connessione e messaggi keep-alive periodici, in modo che i flussi a lunga esecuzione sopravvivano ai timeout di inattività del proxy.