← Retour

Comment appeler des modèles via une API compatible OpenAI

2026-11-11

En bref

Pour appeler un modèle via une API compatible OpenAI, configurez la clé API du fournisseur, son URL de base et l'identifiant exact du modèle, puis envoyez une requête Chat Completions. Ce guide propose des exemples Python et cURL, explique le streaming et le diagnostic des erreurs, et distingue les endpoints de génération d'images, de vidéos et de synthèse vocale.

Pour appeler des modèles via une API compatible OpenAI, configurez le client OpenAI avec la clé API et l'URL de base du fournisseur, puis envoyez une requête Chat Completions en précisant l'identifiant exact du modèle. Vous pouvez aussi envoyer la même requête directement avec cURL : l'authentification Bearer, une liste de messages au format JSON et l'identifiant du modèle sont les éléments essentiels.

Commencez par une courte requête textuelle. Une fois la réponse reçue, ajoutez le streaming ou les options propres à votre application. Cette progression facilite le diagnostic des erreurs de configuration, plutôt que d'intégrer d'emblée des outils, des images et une longue conversation.

1. Vérifier les trois paramètres de connexion

Une API compatible OpenAI utilise des formats de requête et de réponse familiers, mais les appels passent par le service du fournisseur. Utiliser le SDK OpenAI n'oblige pas à envoyer la requête à OpenAI : l'URL de base configurée détermine sa destination. Avec AIAdapter, vous pouvez réutiliser le même client et la clé de votre compte pour les différents modèles de chat pris en charge, en séparant la configuration de connexion du choix du modèle.

La documentation API d'AIAdapter précise les paramètres suivants :

ParamètreValeur à utiliser
Clé APILa clé de votre compte AIAdapter
URL de basehttps://api.aiadapter.com/v1
Identifiant du modèleL'identifiant complet du catalogue, avec le préfixe du fournisseur

Le SDK ajoute /chat/completions à l'URL de base. Conservez /v1 et ne renseignez pas l'endpoint complet dans base_url.

Choisissez un modèle de chat dans le catalogue de modèles. Les exemples ci-dessous utilisent le modèle Qwen3.5-Plus répertorié sous l'identifiant aliyun-bailian/qwen3.5-plus. Copiez cet identifiant exactement, plutôt que de saisir le nom d'une famille de modèles comme Qwen.

Créez votre clé dans Console → API Keys. Stockez-la côté serveur, dans une variable d'environnement ou un gestionnaire de secrets, et non dans du JavaScript frontend. Une clé AIAdapter sert à s'authentifier auprès d'AIAdapter ; une clé de compte OpenAI ne peut pas la remplacer.

2. Préparer Python et les variables d'environnement

Le SDK Python OpenAI actuel nécessite Python 3.10 ou une version ultérieure. Installez-le avec l'interpréteur qui exécutera votre script :

python -m pip install --upgrade openai

Définissez les variables suivantes dans votre terminal, en remplaçant la valeur fictive de la clé par celle de votre compte.

macOS, Linux ou Bash :

export AIADAPTER_API_KEY="your-aiadapter-api-key"
export AIADAPTER_MODEL_ID="aliyun-bailian/qwen3.5-plus"

Windows PowerShell :

$env:AIADAPTER_API_KEY = "your-aiadapter-api-key"
$env:AIADAPTER_MODEL_ID = "aliyun-bailian/qwen3.5-plus"

Ces paramètres s'appliquent à cette session de terminal. Lancez Python depuis le même terminal pour qu'il reçoive les variables. Dans une application déployée, configurez-les via les paramètres de secrets de votre hébergement. Évitez de saisir des clés sur des machines partagées, où l'historique du shell peut les exposer.

3. Envoyer votre première requête de chat

Enregistrez cet exemple dans call_model.py :

import os
from openai import OpenAI

with OpenAI(
    api_key=os.environ["AIADAPTER_API_KEY"],
    base_url="https://api.aiadapter.com/v1",
    timeout=60.0,
    max_retries=0,
) as client:
    completion = client.chat.completions.create(
        model=os.environ["AIADAPTER_MODEL_ID"],
        messages=[
            {"role": "user", "content": "Explain an API in two sentences."}
        ],
    )
    print(completion.choices[0].message.content)

Exécutez-le avec python call_model.py.

Le SDK construit l'en-tête d'authentification et sérialise la requête. messages contient les messages de la conversation ; model sélectionne le modèle. Pour une réponse textuelle classique, le texte se trouve dans choices[0].message.content, que le script affiche.

Cette première requête omet les paramètres facultatifs d'échantillonnage, de raisonnement et de longueur maximale de la réponse. Ajoutez-les selon la documentation du modèle choisi, une fois l'appel de base fonctionnel. Certains modèles utilisent max_tokens, d'autres max_completion_tokens ou des paramètres différents.

max_retries=0 désactive les nouvelles tentatives du SDK pendant le diagnostic du premier appel. timeout=60.0 fixe un délai d'expiration de 60 secondes pour les opérations réseau, et non une durée maximale d'exécution du script entier. En production, choisissez des délais d'expiration et une politique de nouvelles tentatives avec un nombre limité d'essais, adaptés à votre application.

4. Envoyer la même requête avec cURL

Utilisez cette commande Bash pour tester la requête HTTP sans passer par le SDK Python :

curl https://api.aiadapter.com/v1/chat/completions \
  -H "Authorization: Bearer $AIADAPTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "aliyun-bailian/qwen3.5-plus",
    "messages": [
      {"role": "user", "content": "Explain an API in two sentences."}
    ]
  }'

Vous fournissez ici l'endpoint complet, car cURL n'ajoute pas les routes du SDK. L'option -d envoie une requête POST. Lisez le JSON renvoyé, notamment le message d'erreur si la requête échoue.

Si cURL fonctionne mais pas Python, comparez les variables d'environnement, le SDK installé et la configuration réelle du client. Si les deux échouent, examinez la clé, l'endpoint, l'identifiant du modèle et le solde du compte avant de modifier le prompt.

5. Afficher la réponse au fil de sa génération

Pour un modèle de chat qui prend en charge le streaming, définissez stream=True et lisez le texte dans delta.content de chaque fragment. Enregistrez cet exemple dans un script distinct, avec les mêmes variables d'environnement :

import os
from openai import OpenAI

with OpenAI(
    api_key=os.environ["AIADAPTER_API_KEY"],
    base_url="https://api.aiadapter.com/v1",
    timeout=60.0,
    max_retries=0,
) as client:
    with client.chat.completions.create(
        model=os.environ["AIADAPTER_MODEL_ID"],
        messages=[{"role": "user", "content": "Explain an API in two sentences."}],
        stream=True,
    ) as stream:
        for chunk in stream:
            if chunk.choices:
                text = chunk.choices[0].delta.content
                if text:
                    print(text, end="", flush=True)
    print()

La documentation AIAdapter précise que les réponses de chat en streaming utilisent les Server-Sent Events. Les vérifications du script ignorent les fragments sans nouveau texte, notamment les fragments de contrôle ou ceux contenant uniquement des données de consommation. Le streaming transmet la réponse progressivement ; il ne change pas les exigences du modèle concernant les données d'entrée.

6. Diagnostiquer les erreurs avant d'ajouter des fonctionnalités

Examinez ensemble le statut HTTP et le message d'erreur renvoyé :

SymptômePremière action
Erreur d'authentification 401Vérifiez que la clé provient de ce fournisseur et qu'elle est transmise au processus ou dans l'en-tête Bearer.
404 ou modèle introuvableVérifiez le chemin /v1, l'endpoint et l'identifiant exact avec son préfixe fournisseur.
Erreur de requête 400 ou 422Réduisez la requête à model et messages, puis vérifiez chaque champ facultatif.
Limite de requêtes atteinte (429)Réduisez le nombre de requêtes simultanées et espacez les nouvelles tentatives (backoff), en limitant le nombre d'essais.
Solde ou quota insuffisantConsultez la console et résolvez le problème de facturation ou de quota avant de réessayer.
Échec de connexion ou délai dépasséVérifiez le DNS, l'accès réseau et les délais du client ; examinez le traitement côté serveur avant de renvoyer la requête.

En Python, interceptez openai.APIStatusError pour examiner status_code et response. Interceptez openai.APIConnectionError pour les échecs de connexion. Une erreur transmise dans le flux peut aussi déclencher openai.APIError : gérez donc les exceptions pendant l'itération sur les fragments, et pas seulement à la création de la requête. N'incluez pas les clés ni les prompts sensibles dans les journaux de diagnostic.

Questions fréquentes

Une API compatible OpenAI prend-elle en charge tous les endpoints OpenAI ?

Non. La compatibilité concerne les endpoints implémentés par le fournisseur. Ce tutoriel utilise Chat Completions parce qu'AIAdapter documente cette route. Un SDK peut également exposer Responses, l'envoi de fichiers, les assistants ou d'autres ressources, sans que leur présence dans la bibliothèque implique une prise en charge par le fournisseur. Faites correspondre la méthode du SDK à l'opération documentée. Pour les fonctionnalités de chat avancées, vérifiez les champs acceptés par le modèle pour les outils, le raisonnement et les sorties structurées avant de les ajouter à une requête fonctionnelle.

Puis-je changer de modèle sans modifier ce client Python ?

Si un autre modèle utilise le même endpoint Chat Completions et la même authentification, vous pouvez conserver le client et modifier uniquement l'identifiant exact. Le script lit cet identifiant dans AIADAPTER_MODEL_ID, ce qui permet de sélectionner un autre modèle de chat dans la configuration. Vérifiez ensuite les paramètres qu'il accepte, ses limites de contexte et le traitement de ses réponses. Testez le nouveau modèle avec le même message court avant de rétablir les outils, les contraintes de format ou un historique plus long.

Cet exemple de chat peut-il générer des images ou des vidéos ?

Utilisez l'opération adaptée au résultat souhaité. AIAdapter documente /v1/images/generations pour la génération d'images, /v1/video/generations pour les tâches de génération vidéo et /v1/audio/speech pour la synthèse vocale. Pour la vidéo, soumettez d'abord une tâche, puis interrogez régulièrement /v1/video/generations/{id} pour suivre son état. Un modèle vision-langage qui comprend une image diffère d'un modèle qui génère une image. Pour chaque opération, utilisez les champs de requête et le traitement de réponse propres au modèle concerné, au lieu d'insérer l'identifiant d'un modèle vidéo dans l'exemple de chat.

Quel est l'effet des nouvelles tentatives sur un appel échoué ou expiré ?

Le SDK Python OpenAI effectue par défaut deux nouvelles tentatives après certaines erreurs de connexion ou erreurs HTTP. Ce guide désactive ce comportement pour le test initial afin de faciliter le diagnostic. Un délai dépassé ne prouve pas que le serveur n'a rien exécuté ; renvoyer une requête de génération peut donc entraîner un traitement en double. Limitez les nouvelles tentatives, consultez l'état de la requête ou de la tâche lorsqu'il est disponible et tenez compte des essais supplémentaires. Si le flux se coupe après avoir fourni du texte, traitez explicitement cette réponse partielle.

Comment vérifier le coût de ma première requête ?

Avant d'appeler un modèle, consultez son tarif actuel et son unité de facturation dans le catalogue des modèles et des tarifs et sur sa page dédiée. Pour le chat facturé en tokens, les tokens d'entrée et de sortie comptent tous deux ; les champs facultatifs et les réponses plus longues peuvent modifier la consommation. Examinez les données de consommation renvoyées lorsqu'elles sont disponibles et comparez-les au relevé de facturation dans la console. La génération d'images, de vidéos et la synthèse vocale peuvent utiliser d'autres unités : n'estimez donc pas leur coût à partir du tarif des tokens de chat.

Commencez par une courte requête, vérifiez la réponse, puis développez votre application à partir de cette configuration fonctionnelle. Si vous avez besoin d'une clé, créez un compte et configurez votre première intégration côté serveur.


aliyun-bailian/qwen3.5-plus

FAQ

Comment appeler des modèles via une API compatible OpenAI

Pour appeler un modèle via une API compatible OpenAI, configurez la clé API du fournisseur, son URL de base et l'identifiant exact du modèle, puis envoyez une requête Chat Completions. Ce guide propose des exemples Python et cURL, explique le streaming et le diagnostic des erreurs, et distingue les endpoints de génération d'images, de vidéos et de synthèse vocale.