NuevoConecta cualquier agente a UberLLM: una clave, todos los modelos, a precio de lista o menos.
UberLLM

Streaming

Tanto las superficies de OpenAI (/v1/chat/completions) como las de Anthropic (/v1/messages) soportan streaming a través de Server-Sent Events. La Responses API (/v1/responses) hace streaming de sus propios response.* eventos; consulta Responses API. El streaming es la opción predeterminada recomendada para cualquier cosa con un prompt largo, una salida larga o un límite de tokens alto — evita los request timeouts y te permite renderizar tokens a medida que llegan.

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

La respuesta es una secuencia de data: líneas, cada una un fragmento de completado de chat, terminando 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)

Contabilidad de uso

UberLLM inyecta stream_options: {"include_usage": true} para los upstreams que lo soportan, por lo que el chunk final lleva un objeto usage con los recuentos de tokens de prompt y completion, y cost_usd: lo que se factura por esta solicitud, en dólares estadounidenses (lo que el proveedor cobró por ella). Cuando el upstream no envía un chunk de uso, UberLLM añade uno antes de data: [DONE]. En /v1/messages el costo está en el usage del evento message_delta.

Tu solicitud se liquida al costo que el marketplace informa para esa llamada; cuando falta el uso, el gateway recurre a una estimación del tokenizer y marca la solicitud como estimada en tu registro de actividad. Los headers de un stream se envían antes de que se conozca el costo, por lo que un stream no tiene un header X-UberLLM-Cost-USD: lee usage.cost_usd.

Cancelaciones

Si te desconectas a mitad de la transmisión, la pasarela cancela la solicitud ascendente y se conforma con los tokens que realmente se transmitieron. Nunca se te cobra por una respuesta completa que no recibiste, y ningún saldo reservado queda atascado.

Mantenimiento de conexión

La pasarela envía un comentario inmediato : ping al conectar y señales de actividad periódicas, para que las transmisiones de larga duración sobrevivan a los tiempos de espera de inactividad del proxy.