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

Utilisez le OpenAI Python SDK et LangChain avec une API moins chère (UberLLM)

Définissez base_url="https://api.uberllm.dev/v1" et api_key sur votre clé UberLLM dans OpenAI(...) ou ChatOpenAI(...), puis passez n'importe quel ID de modèle UberLLM. Le chat, le streaming, les appels d'outils et la sortie JSON continuent de fonctionner ; votre autre code reste inchangé.

Étapes (OpenAI Python SDK)

  1. Créez une clé sur votre page des clés et ajoutez du crédit.
  2. Enregistrez-la comme variable d'environnement :
export UBERLLM_API_KEY=ull_your_key
  1. Faites pointer le client vers UberLLM :
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.uberllm.dev/v1",
    api_key=os.environ["UBERLLM_API_KEY"],
)

resp = client.chat.completions.create(
    model="deepseek/deepseek-v4.1-flash",
    messages=[{"role": "user", "content": "Give me three names for a coffee shop."}],
)
print(resp.choices[0].message.content)

C'est tout le changement. client.chat.completions.create avec stream=True, tools, response_format, temperature et max_tokens fonctionne comme avant. Le client async (AsyncOpenAI) prend les mêmes deux arguments.

Sans toucher au code

Le SDK OpenAI lit également deux variables d'environnement, donc un script qui appelle OpenAI() sans arguments peut être déplacé sans être modifié :

export OPENAI_BASE_URL=https://api.uberllm.dev/v1
export OPENAI_API_KEY=ull_your_key
python your_script.py

Vous devez toujours changer la chaîne model= en un ID UberLLM tel que deepseek/deepseek-v4.1-flash.

Étapes (LangChain)

pip install langchain-openai
import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="deepseek/deepseek-v4.1-flash",
    base_url="https://api.uberllm.dev/v1",
    api_key=os.environ["UBERLLM_API_KEY"],
)
print(llm.invoke("Say hello in one sentence.").content)

Chains, agents, bind_tools et .stream() fonctionnent sans changement. Passez base_url dans le code plutôt que de vous fier aux variables d'environnement : l'argument l'emporte toujours, donc un OPENAI_API_BASE égaré sur la machine ne peut pas envoyer d'appels ailleurs.

LangChain.js repose sur la même idée :

import { ChatOpenAI } from "@langchain/openai";

const llm = new ChatOpenAI({
  model: "deepseek/deepseek-v4.1-flash",
  apiKey: process.env.UBERLLM_API_KEY,
  configuration: { baseURL: "https://api.uberllm.dev/v1" },
});

Choisir un modèle moins cher pour chaque tâche

L'intérêt d'une clé unique pour tous les modèles est que vous pouvez arrêter de payer les prix des modèles de pointe pour les tâches faciles. Une répartition courante :

  • Raisonnement complexe ou réponses destinées aux clients : un modèle de pointe tel que deepseek/deepseek-v4.1-flash.
  • Résumés en masse, étiquetage, extraction : google/gemma-3-27b-it ou un autre modèle du tableau de traitement par lot ci-dessous, souvent 50 à 100 fois moins cher par token.

Il suffit de modifier la chaîne model= pour passer de l'un à l'autre.

Ce qui n'est pas là

UberLLM propose les complétions de chat (/v1/chat/completions), l'API Responses (client.responses.create, streaming et appels d'outils inclus) et la route de messages Anthropic. Il ne conserve aucun état entre les appels, envoyez donc toute la conversation dans input au lieu de previous_response_id (Référence de l'API Responses). Il ne propose pas les embeddings ni l'API Assistants : gardez ces appels sur leur fournisseur actuel.

Dépannage

  • openai.AuthenticationError (401) : la clé est incorrecte ou vide. Imprimez len(os.environ["UBERLLM_API_KEY"]) ; une clé est ull_ plus 43 caractères.
  • openai.NotFoundError (404) sur /responses ou /embeddings : ces routes n'existent pas ici, voir ci-dessus.
  • model_not_found : les IDs de style OpenAI comme gpt-4o nécessitent le fabricant devant : openai/gpt-4o.
  • openai.RateLimitError (429) : la limite par minute de la clé (300 par défaut). Augmentez-la sur la page des clés, ou ajoutez des retries avec backoff.
  • 402 insufficient_credits : rechargez sur la page des crédits.

Continuez à lire

Modèles pour commencer

Le premier est dans le code ci-dessous. Chacun prend des appels d'outils.

ModèleID du modèle (à coller)Prix actuel
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.00022 en entrée · $0.0025 en sortie / 1M
Gemini 3.5 Flashgoogle/gemini-3.5-flash$0.0150 en entrée · $0.0900 en sortie / 1M
Claude Sonnet 5.5anthropic/claude-sonnet-5.5$0.1096 en entrée · $0.5482 en sortie / 1M
GPT-5.5openai/gpt-5.5$0.1250 en entrée · $0.7500 en sortie / 1M
Kimi K3moonshotai/kimi-k3$0.0010 en entrée · $0.0788 en sortie / 1M
GLM 5.3z-ai/glm-5.3$0.00025 en entrée · $0.0114 en sortie / 1M
Gemma 3 27Bgoogle/gemma-3-27b-it$0.00079 en entrée · $0.0020 en sortie / 1M
Qwen3 VL 235B A22Bqwen/qwen3-vl-235b-a22b-instruct$0.0021 en entrée · $0.0188 en sortie / 1M

Prix à la dernière mise à jour horaire, sans frais ajoutés · tous les modèles →

Pour les gros traitements par lots

Prix le plus bas par token pour la synthèse, le marquage et l'extraction en volume.

ModèleID du modèle (à coller)Prix actuel
Gemma 3 27Bgoogle/gemma-3-27b-it$0.00079 en entrée · $0.0020 en sortie / 1M
GPT-OSS 120Bopenai/gpt-oss-120b$0.000069 en entrée · $0.00030 en sortie / 1M
DeepSeek V3.2deepseek/deepseek-v3.2$0.0026 en entrée · $0.0039 en sortie / 1M
Qwen 3 235B A22B Instruct 2507qwen/qwen3-235b-a22b-2507$0.00057 en entrée · $0.0035 en sortie / 1M
Gemini 3.1 Flash Litegoogle/gemini-3.1-flash-lite$0.0025 en entrée · $0.0149 en sortie / 1M
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.00022 en entrée · $0.0025 en sortie / 1M

Prix à la dernière mise à jour horaire, sans frais ajoutés · tous les modèles →

FAQ

Puis-je utiliser le SDK Python officiel d'OpenAI avec UberLLM ?

Oui. Passez base_url="https://api.uberllm.dev/v1" et votre clé UberLLM à OpenAI(), ou définissez OPENAI_BASE_URL et OPENAI_API_KEY. chat.completions avec streaming, outils et sortie JSON fonctionne pour chaque modèle de chat.

LangChain fonctionne-t-il avec UberLLM ?

Oui. ChatOpenAI de langchain-openai prend base_url et api_key ; les chaînes, les agents et la liaison d'outils fonctionnent sans changement avec n'importe quel modèle de chat UberLLM.

UberLLM prend-il en charge les embeddings ou l'API Responses ?

L'API Responses oui, les embeddings non. UberLLM sert /v1/chat/completions, /v1/responses (client.responses.create, sans previous_response_id : envoyez toute la conversation à chaque appel) et la route Anthropic /v1/messages. Gardez les embeddings sur leur fournisseur actuel.