NouveauBranchez n’importe quel agent sur UberLLM : une clé, tous les modèles, au prix catalogue ou moins.
UberLLM

Streaming

Les interfaces OpenAI (/v1/chat/completions) et Anthropic (/v1/messages) supportent toutes deux le streaming via les Server-Sent Events. L'API Responses (/v1/responses) diffuse ses propres événements response.* ; consultez Responses API. Le streaming est le comportement par défaut recommandé pour tout ce qui implique un prompt long, une sortie longue ou une limite de tokens élevée — il évite les délais d'attente des requêtes et vous permet de rendre les tokens au fur et à mesure de leur arrivée.

Flux de style 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 réponse est une séquence de data: lignes, chacune étant un fragment de complétion de chat, se terminant par 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)

Suivi de l'utilisation

UberLLM injecte stream_options: {"include_usage": true} pour les upstreams qui le supportent, ainsi le chunk final contient un objet usage avec les décomptes de tokens de prompt et de completion, et cost_usd : ce qui est facturé pour cette requête, en dollars US (ce que le fournisseur a facturé pour elle). Lorsque l'upstream n'envoie pas de chunk d'utilisation, UberLLM en ajoute un avant data: [DONE]. Sur /v1/messages, le coût se trouve dans le usage de l'événement message_delta.

Votre requête est réglée au coût que le marketplace rapporte pour cet appel ; lorsque l'utilisation est manquante, la passerelle se rabat sur une estimation du tokenizer et marque la requête comme estimée dans votre journal d'activité. Les en-têtes d'un stream sont envoyés avant que le coût ne soit connu, donc un stream n'a pas d'en-tête X-UberLLM-Cost-USD : lisez usage.cost_usd.

Annulations

Si vous vous déconnectez en cours de streaming, la passerelle annule la requête en amont et ne facture que les tokens qui ont été réellement streamés. Vous n'êtes jamais facturé pour une réponse complète que vous n'avez pas reçue, et aucun solde réservé n'est bloqué.

Maintien d'activité

La passerelle envoie un commentaire immédiat : ping dès la connexion et des messages de maintien d'activité périodiques, afin que les flux de longue durée survivent aux délais d'inactivité des proxys.