Documentation

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.

Fusionner dans ~/.qwen/settings.json
{
  "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"
  }
}
L’URL de base conserve son suffixe /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.
Cette configuration a été établie à partir de la documentation propre à Qwen Code à la date indiquée ci-dessous. Kunavo n’a pas exécuté Qwen Code avec son point de terminaison : ni session, ni tour en streaming, ni aller-retour avec un outil. Il en va de même pour tous les clients de cette famille. Une page de configuration publiée n’est pas un test de compatibilité. Gardez à disposition votre route fonctionnelle pendant que vous essayez celle-ci.
Kunavo ne propose aucun modèle d’embeddings, de synthèse vocale ou de reconnaissance vocale ; une route Kunavo ne répond donc qu’aux requêtes de chat. Les routes Live Voice de Qwen Code sont distinctes : la documentation exige que l’hôte d’une route 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.
Le catalogue de Kunavo ne contient aucun modèle de texte Qwen. Ce n’est pas une façon moins coûteuse d’utiliser Qwen : c’est une façon d’utiliser Claude et GPT dans Qwen Code avec un seul solde prépayé. Si vous souhaitez effectuer des inférences avec Qwen, Alibaba Cloud Model Studio est la source officielle, et la documentation de Qwen Code cite OpenRouter et Requesty parmi les fournisseurs tiers de sa liste /auth.
Pas encore de clé ? Créez un compte Kunavo, créez une clé (elle commence par 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

  1. Créez une clé sur /app/keys et copiez-la — elle n’est affichée qu’une seule fois.
  2. 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éclarer modelProviders dans le fichier utilisateur « afin d’éviter les conflits de fusion entre les paramètres du projet et ceux de l’utilisateur ».
  3. Si possible, placez la clé dans un emplacement plus sûr que env. Qwen Code la lit depuis process.env[envKey], et la documentation classe les sources de la plus prioritaire à la moins prioritaire : une export du shell, puis un fichier .env, puis le bloc env dans settings.json — qu’elle signale comme un stockage en texte brut. Le bloc env ci-dessus est le minimum pour que cela fonctionne, pas la meilleure solution à conserver.
  4. Exécutez qwen. Avec security.auth.selectedType défini sur openai et model.name correspondant à un id que vous avez déclaré, aucune étape interactive /auth n’est nécessaire — la documentation l’indique explicitement après l’exemple utilisant un seul fichier.
  5. 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.
  6. Ajoutez d’autres entrées sous modelProviders.openai pour changer de modèle à l’exécution avec /model. Ces modifications sont rechargées à chaud dans une session en cours ; providerProtocol est 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.

Voici la version courte. Le guide complet — choix du modèle, coût d’une session réelle et modes d’échec — se trouve dans le guide tarifaire de Qwen Code.

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èleEntrée / sortie sur KunavoOù cela s’intègre dans Qwen Code
claude-sonnet-5$1.40 / $7.00le modèle de travail par défaut — définissez-le comme model.name
claude-opus-5$3.50 / $17.50un forfait dont une erreur de choix coûterait cher
claude-haiku-4-5$0.70 / $3.50requêtes à faible coût : triage, résumés et boucle qui fonctionne toute la journée
gpt-5-6-sol$2.00 / $12.00un deuxième avis d’une autre famille, avec la même clé et le même baseUrl
gpt-5-6-terra$0.70 / $4.20lecture à long contexte, toujours avec la clé du protocole OpenAI
La facturation se fait au token à partir d’un solde prépayé, sans frais mensuels — consultez la facturation. Avec un contexte répété — ce qu’envoient la plupart des éditeurs et clients de chat — la mise en cache des prompts influe davantage sur la facture que le choix du modèle.

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.

  1. Une entrée modelProviders a priorité sur les options de la CLI. L’ordre documenté, du plus prioritaire au moins prioritaire, est le suivant : les remplacements effectués via /auth dans la session en cours, puis le envKey du fournisseur de modèles sélectionné, ensuite les arguments de la CLI comme --openai-api-key, puis les variables d’environnement, et enfin security.auth.apiKey dans 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-url peut sembler ignoré.
  2. security.auth.apiKey et security.auth.baseUrl sont obsolètes. La référence le précise et recommande de migrer vers modelProviders. Si un ancien tutoriel vous demande de modifier ces deux clés, il vous fait emprunter une voie en cours d’abandon.
  3. wireApi dé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/responses ainsi 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.