Documentation
Qwen Code
Qwen Code stocke ses points de terminaison dans un seul fichier. Déclarez Kunavo une seule fois sous modelProviders, définissez selectedType sur openai, et le sélecteur /model vous permettra de passer de Claude à GPT avec une seule clé.
Qwen Code lit ses endpoints dans modelProviders de ~/.qwen/settings.json — une entrée avec un baseUrl et un envKey place Claude et GPT dans son sélecteur /model.
{
"modelProviders": {
"openai": [
{
"id": "claude-sonnet-5",
"name": "Claude Sonnet 5 (Kunavo)",
"baseUrl": "https://api.kunavo.com/v1",
"description": "Kunavo, OpenAI-compatible",
"envKey": "KUNAVO_API_KEY"
}
]
},
"env": {
"KUNAVO_API_KEY": "sk-kn-..."
},
"security": {
"auth": {
"selectedType": "openai"
}
},
"model": {
"name": "claude-sonnet-5"
}
}/v1. Le guide de référence des fournisseurs de modèles le confirme en une phrase : pour diriger une entrée vers une passerelle hébergée compatible avec OpenAI, définissez baseUrl sur la « racine /v1 » de l’API, plutôt que sur le chemin /v1/chat/completions complet ; « le SDK ajoute lui-même le chemin de requête ». Tous les exemples OPENAI_BASE_URL de la page d’authentification se terminent de la même façon. Si l’URL de base comprend déjà la route, vous obtiendrez une réponse 404, et non une erreur d’authentification.realtimeOnly soit un point de terminaison DashScope. Cette fonctionnalité conserve donc sa propre clé, quel que soit le modèle de chat que vous configurez./auth.sk-kn-) et ajoutez un crédit à partir de 10 $ — les appels sont payés sur ce solde et les appels échoués ne sont pas facturés. Le tableau de bord s’ouvre ensuite sur la configuration Qwen Code.Étape par étape
- Créez une clé sur
/app/keyset copiez-la — elle n’est affichée qu’une seule fois. - Ouvrez
~/.qwen/settings.json(créez-le s’il n’existe pas) et ajoutez-y les quatre blocs ci-dessus. La documentation recommande de déclarermodelProvidersdans le fichier utilisateur « afin d’éviter les conflits de fusion entre les paramètres du projet et ceux de l’utilisateur ». - Si possible, placez la clé dans un emplacement plus sûr que
env. Qwen Code la lit depuisprocess.env[envKey], et la documentation classe les sources de la plus prioritaire à la moins prioritaire : uneexportdu shell, puis un fichier.env, puis le blocenvdanssettings.json— qu’elle signale comme un stockage en texte brut. Le blocenvci-dessus est le minimum pour que cela fonctionne, pas la meilleure solution à conserver. - Exécutez
qwen. Avecsecurity.auth.selectedTypedéfini suropenaietmodel.namecorrespondant à unidque vous avez déclaré, aucune étape interactive/authn’est nécessaire — la documentation l’indique explicitement après l’exemple utilisant un seul fichier. - Donnez-lui une tâche qui lit et modifie un fichier, pas une simple salutation. Qwen Code est un agent : les appels d’outils et le streaming sont les fonctionnalités qu’un premier essai doit mettre à l’épreuve, et ce sont elles qui échoueraient en premier avec un point de terminaison seulement partiellement compatible.
- Ajoutez d’autres entrées sous
modelProviders.openaipour changer de modèle à l’exécution avec/model. Ces modifications sont rechargées à chaud dans une session en cours ;providerProtocolest lu une seule fois au démarrage et nécessite un redémarrage.
Vérifié avec Page d’authentification de Qwen Code, option 4 : clé API (flexible) le 21 septembre 2026. Les paramètres tiers évoluent ; si le nom d’un champ ne correspond plus à ce que vous voyez ici, cette page fait autorité, pas celle-ci.
Vérifiez avant de déboguer le client
Une requête suffit à déterminer si l’échec vient de l’endpoint, de la clé ou du fichier de configuration. Si cette requête renvoie du JSON, la même URL de base et la même clé fonctionnent dans Qwen Code.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."Quel identifiant de modèle saisir dans le champ
Tous les modèles textuels sont accessibles sous forme d’identifiant de modèle — la liste à jour se trouve sur GET /v1/models, et le catalogue avec les prix sur la page des modèles. Les tarifs sont en USD par million de tokens, entrée / sortie.
| Identifiant du modèle | Entrée / sortie sur Kunavo | Où cela s’intègre dans Qwen Code |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | le modèle de travail par défaut — définissez-le comme model.name |
claude-opus-5 | $3.50 / $17.50 | un forfait dont une erreur de choix coûterait cher |
claude-haiku-4-5 | $0.70 / $3.50 | requêtes à faible coût : triage, résumés et boucle qui fonctionne toute la journée |
gpt-5-6-sol | $2.00 / $12.00 | un deuxième avis d’une autre famille, avec la même clé et le même baseUrl |
gpt-5-6-terra | $0.70 / $4.20 | lecture à long contexte, toujours avec la clé du protocole OpenAI |
Trois points que la documentation clarifie et que l’on devine souvent à tort
Ces informations proviennent de la page d’authentification et de la référence des fournisseurs de modèles citées ci-dessus ; chacune peut faire perdre un temps précieux au débogage si on la devine au lieu de la vérifier.
- Une entrée
modelProvidersa priorité sur les options de la CLI. L’ordre documenté, du plus prioritaire au moins prioritaire, est le suivant : les remplacements effectués via/authdans la session en cours, puis leenvKeydu fournisseur de modèles sélectionné, ensuite les arguments de la CLI comme--openai-api-key, puis les variables d’environnement, et enfinsecurity.auth.apiKeydans les paramètres. La plupart des gens s’attendent à ce que l’option l’emporte. Ce n’est pas le cas — c’est pourquoi--openai-base-urlpeut sembler ignoré. security.auth.apiKeyetsecurity.auth.baseUrlsont obsolètes. La référence le précise et recommande de migrer versmodelProviders. Si un ancien tutoriel vous demande de modifier ces deux clés, il vous fait emprunter une voie en cours d’abandon.wireApidétermine le format des requêtes, et aucune détection ne signale une incompatibilité. Si vous l’omettez, le format Chat Completions est utilisé, comme dans le bloc ci-dessus. Définir"wireApi": "responses"exige un point de terminaison réellement compatible avec Responses, et la documentation indique clairement qu’il n’y a ni détection du point de terminaison ni basculement automatique en cas d’échec d’une requête. Kunavo prend en charge/v1/responsesainsi que/v1/chat/completions, mais aucune de ces deux associations n’a été testée sur cette page ; commencez donc par la valeur par défaut.
Si vous êtes venu ici pour le niveau gratuit
Une grande partie de ce qui s’écrit encore sur Qwen Code décrit une connexion OAuth Qwen assortie d’un quota quotidien gratuit. Cette option n’existe plus : la documentation indique que son offre gratuite a pris fin le 15 avril 2026 et que Qwen OAuth n’est plus une option sélectionnable dans la boîte de dialogue /auth. Elle en répertorie maintenant trois : Alibaba ModelStudio — avec Coding Plan, Token Plan et Standard API Key dans son sous-menu —, Fournisseurs tiers et Fournisseur personnalisé, décrit comme permettant de connecter « un serveur local, un proxy ou un fournisseur non pris en charge ». Kunavo est le troisième de ces choix. Notez également que les éléments du sous-menu ModelStudio ne sont pas trois façons de payer une même facture : chacun a son propre hôte et sa propre clé, et une clé Coding Plan ne fonctionnera pas sur un hôte Token Plan.
Questions fréquentes
Comment configurer un point de terminaison d’API personnalisé pour Qwen Code ?
Déclarez le point de terminaison dans ~/.qwen/settings.json, sous modelProviders. Utilisez la clé « openai » pour tout hôte compatible avec OpenAI, attribuez à l’entrée du modèle un id, une baseUrl et un envKey désignant la variable d’environnement qui contient votre clé API, puis définissez security.auth.selectedType sur « openai » et model.name sur cet id. Lancez qwen : il utilisera cette configuration sans étape interactive /auth. L’autre méthode, par variables d’environnement, utilise OPENAI_API_KEY, OPENAI_BASE_URL et OPENAI_MODEL, mais la documentation recommande le fichier de paramètres, car il fonctionne dans tous les shells et permet de configurer plusieurs points de terminaison à la fois.
Faut-il ajouter /v1 à la fin de baseUrl dans Qwen Code ?
Oui, pour un point de terminaison compatible avec OpenAI. La référence des fournisseurs de modèles de Qwen Code indique que baseUrl doit correspondre à la racine /v1 de l’API, par exemple https://gateway.example.com/v1, et non au chemin complet /v1/chat/completions, car le SDK ajoute lui-même le chemin de la requête. Pour Kunavo, la valeur est donc https://api.kunavo.com/v1. Si vous laissez le chemin complet à la fin, vous obtiendrez une erreur 404 plutôt qu’un échec d’authentification, ce qui est généralement la façon dont le problème se manifeste.
L’offre gratuite de Qwen Code est-elle toujours disponible ?
Non. La documentation de Qwen Code indique que l’offre gratuite Qwen OAuth a pris fin le 15 avril 2026 et que Qwen OAuth n’est plus une option sélectionnable dans la boîte de dialogue /auth. Elle précise également que les modèles Qwen OAuth sont codés en dur et ne peuvent pas être remplacés via modelProviders ; il est donc impossible de simplement rediriger l’ancienne configuration vers un autre service. Il reste Alibaba ModelStudio, un fournisseur tiers intégré ou un point de terminaison personnalisé que vous configurez vous-même.
Qwen Code peut-il utiliser des modèles Claude ou GPT au lieu de Qwen ?
Oui. Le tableau des protocoles de Qwen Code indique que la clé de fournisseur openai accepte n’importe quel point de terminaison compatible avec OpenAI, et que l’id du modèle dans une entrée modelProviders est transmis tel quel à la baseUrl configurée : il est donc résolu par ce point de terminaison, et non par le client. Un id Claude ou GPT fonctionne donc à condition que le point de terminaison le propose. Kunavo propose des id Claude et GPT via son interface compatible avec OpenAI ; cette configuration a été publiée à partir de la documentation du fournisseur et non à la suite d’un essai.
Pourquoi Qwen Code ignore-t-il --openai-base-url ?
Parce qu’une entrée modelProviders a priorité sur cette option. Selon l’ordre de priorité des identifiants documenté, les remplacements saisis via /auth dans la session en cours arrivent en premier, puis viennent baseUrl et envKey du fournisseur de modèles sélectionné, et les arguments de la CLI arrivent seulement en troisième position, avant les variables d’environnement et les paramètres. Si une entrée de fournisseur est sélectionnée, sa baseUrl l’emporte sur l’option. Modifiez cette entrée — les modifications de modelProviders sont rechargées à chaud dans une session en cours — ou supprimez-la si vous vouliez que l’option soit prise en compte.