Outils d’IA

Comment utiliser OpenRouter pour passer d’un modèle à l’autre?

· Par Robert Scales · 4 min de lecture

Réponse courte

OpenRouter est une API unique qui achemine votre requête vers des modèles de nombreux fournisseurs : vous changez de modèle en modifiant une seule chaîne de texte, au lieu de vous inscrire, de payer et de programmer séparément pour chaque entreprise. Comme il suit le format de l’API d’OpenAI, vous pouvez utiliser la bibliothèque Python openai habituelle : dirigez-la vers l’adresse d’OpenRouter, utilisez une clé OpenRouter et nommez le modèle sous la forme fournisseur/modèle.

Si vous construisez quoi que ce soit avec des modèles de langage, vous voulez vite en essayer plus d’un. Peut-être qu’un petit modèle ouvert suffit pour votre tâche, pour une fraction du prix, ou que le modèle d’une autre entreprise écrit un meilleur français. Normalement, cela veut dire un compte distinct, une clé distincte, une facture distincte et souvent une bibliothèque de code distincte pour chaque fournisseur.

OpenRouter élimine la plus grande partie de ce travail. C’est un service qui se place entre votre code et de nombreux fournisseurs de modèles : vous envoyez chaque requête à OpenRouter, vous indiquez le modèle voulu, et il transmet la requête et vous renvoie la réponse. Ses propres exemples le décrivent comme compatible avec la plupart des bibliothèques logicielles d’IA, dans un format très proche de celui de l’API d’OpenAI, avec des modèles d’OpenAI, d’Anthropic, de Google et d’autres.

Les trois choses qui changent

Si vous savez déjà appeler l’API d’OpenAI depuis Python, seules trois choses diffèrent :

  1. L’URL de base. C’est l’adresse Web à laquelle votre bibliothèque envoie les requêtes. Pour OpenRouter, c’est https://openrouter.ai/api/v1.
  2. La clé. Vous créez une clé d’API OpenRouter sur son site Web (elle commence par sk-or-v1-) et vous la gardez hors de votre code, exactement comme une clé OpenAI.
  3. Le nom du modèle. Les modèles sont nommés avec le fournisseur d’abord, puis le modèle, comme openai/gpt-4o-mini ou meta-llama/llama-3.3-70b-instruct. Vous copiez le nom exact à partir de la page du modèle sur OpenRouter.

Tout le reste, y compris client.chat.completions.create avec une liste de messages, est le même appel que vous feriez à OpenAI.

Exemple concret : un prompt, trois modèles

Ce script envoie la même requête à trois modèles et affiche chaque réponse avec son nombre de jetons et son temps de réponse. Il utilise la bibliothèque officielle openai (version 1.x) et python-dotenv pour lire votre clé dans un fichier .env.

D’abord, installez les deux bibliothèques et créez un fichier nommé .env à côté de votre script :

pip install openai python-dotenv
OPENROUTER_API_KEY=sk-or-v1-your-key-here

Enregistrez ensuite ceci sous le nom compare.py :

import time
from os import getenv
from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()
client = OpenAI(
    base_url="https://openrouter.ai/api/v1",
    api_key=getenv("OPENROUTER_API_KEY"),
)

MODELS = [
    "openai/gpt-4o-mini",
    "meta-llama/llama-3.3-70b-instruct",
    "mistralai/mistral-small-3.1-24b-instruct",
]

PROMPT = ("Réécris cet avis pour l'infolettre d'une bibliothèque en trois phrases courtes "
          "et chaleureuses : « L'édifice sera fermé lundi pour la réparation des planchers. "
          "Les livres peuvent être rapportés dans la chute à livres extérieure. »")

for model in MODELS:
    start = time.time()
    reply = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": PROMPT}],
        temperature=0.3,
    )
    seconds = time.time() - start
    usage = reply.usage
    print(f"=== {model} ({seconds:.1f} s)")
    print(f"jetons en entrée : {usage.prompt_tokens}, jetons en sortie : {usage.completion_tokens}")
    print(reply.choices[0].message.content.strip(), "\n")

Lancez-le avec python compare.py. Passer à un quatrième modèle revient à ajouter une ligne à la liste MODELS. Si un nom est mal orthographié ou qu’un modèle n’est pas disponible, la bibliothèque lève une erreur pour cette requête; enveloppez l’appel dans un try/except si vous voulez que la boucle continue malgré tout.

À essayer : remplacez le prompt par une vraie tâche tirée de votre travail, comme une réponse à un client ou une description de produit, et lancez le script. Avant de lire attentivement les résultats, cachez les noms des modèles et classez les trois réponses. Vérifiez ensuite quel modèle vous avez préféré.

Comment comparer leur coût et leur qualité?

Le coût dépend des jetons, les petits morceaux de texte que les modèles lisent et écrivent. Chaque modèle sur OpenRouter a deux prix, un par million de jetons en entrée et un par million de jetons en sortie, et ils peuvent beaucoup varier d’un modèle à l’autre. Votre script affiche déjà les deux nombres de jetons; le coût d’une requête est donc :

coût = jetons_entrée × prix_entrée ÷ 1 000 000 + jetons_sortie × prix_sortie ÷ 1 000 000

Pour illustrer avec des chiffres inventés : si une requête utilise 60 jetons en entrée et 80 en sortie, et qu’un modèle demande 0,15 $ US par million de jetons en entrée et 0,60 $ US par million de jetons en sortie, la requête coûte environ 0,000057 $ US. Multipliez par le nombre de requêtes que vous prévoyez par mois pour voir ce qui compte. Utilisez les nombres que chaque modèle rapporte réellement plutôt qu’une estimation commune. Copiez les prix en vigueur à partir de la page de chaque modèle au moment de faire le test, puisqu’ils changent.

La qualité exige un petit test honnête plutôt qu’un seul prompt. Rassemblez de dix à vingt exemples réels de la tâche, passez-les dans chaque modèle et notez les réponses à l’aide d’une courte liste de critères rédigée à l’avance : est-ce exact, le format est-il respecté, le ton est-il juste, combien de temps cela a-t-il pris? Noter sans voir les noms des modèles vous évite de favoriser une marque. Un simple tableur avec une ligne par exemple et une colonne par modèle suffit.

Décidez ensuite en ayant les deux chiffres sous les yeux. Souvent, le modèle le plus performant l’emporte sur les exemples difficiles, mais un modèle moins cher fait tout aussi bien sur les cas courants, et vous pouvez envoyer chaque type de requête à un modèle différent. Avec OpenRouter, cette décision tient à une seule chaîne dans votre code : vous pouvez donc la revoir chaque fois qu’un nouveau modèle apparaît.

Sources

  1. openrouter-examples-python: src/openai_test.py (commit da9992c, April 19, 2024) — OpenRouter (GitHub), 19 avril 2024
  2. OpenRouter Examples (README, commit 5fcd513, November 14, 2023) — OpenRouter (GitHub), 14 novembre 2023
  3. OpenAI Python API library (README) — OpenAI (GitHub), 17 septembre 2024

Recevez gratuitement le Guide de l’intelligence artificielle

Abonnez-vous à l’infolettre hebdomadaire et recevez le guide gratuit : ce qui a changé en IA cette semaine, une leçon, un prompt à essayer. Désabonnement en un clic.

Ce que nous faisons de votre adresse

Retour en haut

Affichage

Vos choix sont enregistrés dans ce navigateur seulement. Aucune donnée n’est transmise.

Taille du texte
100 %
Couleurs
Lecture
Autres réglages
Déclaration d’accessibilité