GPT-6 Sol et Claude Opus 5.5 disponiblesGPT-6 Sol à moitié prix par rapport à 5.6 Sol

Modèles personnalisés Factory Droid : utiliser Claude et GPT avec votre clé API

Un seul settings.json a donné à Droid 1.0.0 Claude Sonnet 5.5, GPT-6.1 Terra et MiniMax M3.1 Flash sur la même clé. Voici le fichier, le provider de chaque modèle et les quatre erreurs rencontrées.

Kiki, OmniaKey COO9 minutes de lecture
Sur cette page

Ajoutez chaque modèle dans customModels du fichier ~/.factory/settings.json, avec model, baseUrl, apiKey et provider : anthropic pour Claude avec l'hôte nu, openai pour GPT, generic-chat-completion-api pour tout le reste. Sur Droid 1.0.0, Claude Sonnet 5.5, GPT-6.1 Terra et MiniMax M3.1 Flash ont corrigé le même bug en 33,7, 77,4 et 30,7 secondes.

Les trois exécutions sont passées par OmniaKey avec une seule clé, ce qui nous a donné accès à Claude Sonnet 5.5, GPT-6.1 Terra et MiniMax M3.1 Flash. Chacun a reçu la même fonction median() cassée et l'a réparée.

Réponse courte

  • Où ça se passe. customModels dans ~/.factory/settings.json (doc des réglages de Factory, vérifiée le 30 octobre 2026), avec model, baseUrl, apiKey et provider.
  • Quel provider. anthropic pour Claude, openai pour les modèles GPT, generic-chat-completion-api pour tout le reste qui parle Chat Completions.
  • Où va /v1. anthropic prend l'hôte nu, parce que Droid ajoute /v1/messages ; openai et generic-chat-completion-api prennent une URL qui finit par /v1.
  • L'id pour droid exec. custom:, le nom affiché avec des tirets à la place des espaces, puis la position à partir de 0 : custom:Claude-Sonnet-5.5-[OmniaKey]-0.
  • Ce que montrent nos exécutions. Les trois ont corrigé le bug ; 30,7 s pour Flash, 33,7 s pour Claude, 77,4 s pour GPT-6.1 Terra.

Quel provider choisir ?

Choisissez le provider d'après l'API que parle votre endpoint, pas d'après le nom du modèle.

  • anthropic envoie des requêtes à l'Anthropic Messages API. À utiliser pour Claude ; l'URL de base d'Anthropic est https://api.anthropic.com.
  • openai envoie des requêtes à l'OpenAI Responses API. À utiliser pour les modèles GPT ; l'URL de base d'OpenAI est https://api.openai.com/v1.
  • generic-chat-completion-api envoie des requêtes OpenAI Chat Completions. À utiliser pour la plupart des autres modèles, gateways et serveurs locaux, avec l'URL /v1 du fournisseur.

Factory recommande generic-chat-completion-api pour OpenRouter, Fireworks, Together AI, Ollama, vLLM et la plupart des fournisseurs open source, et conseille cette valeur tant que vous n'appelez pas l'API officielle d'OpenAI ou d'Anthropic (doc BYOK de Factory, vérifiée le 30 octobre 2026).

Une gateway qui parle aussi le Messages API ou le Responses API peut utiliser anthropic ou openai. Nos entrées Claude et GPT-6.1 Terra passaient par OmniaKey, et les deux ont tourné ; OmniaKey sert les modèles GPT sur POST /v1/responses (doc d'OmniaKey sur la compatibilité OpenAI, vérifiée le 30 octobre 2026).

Une quatrième valeur, bedrock-converse, concerne les modèles de l'API Converse d'AWS Bedrock. Factory prévient que seuls les modèles Anthropic et OpenAI sur leurs API officielles sont entièrement testés et benchmarkés, et que les modèles de moins de 30 milliards de paramètres font nettement moins bien sur le code agentique (doc BYOK de Factory, vérifiée le 30 octobre 2026).

Le settings.json que nous utilisons

Droid crée ~/.factory/settings.json au premier lancement : ajoutez customModels au fichier déjà présent (doc des réglages de Factory, vérifiée le 30 octobre 2026). Voici le nôtre :

json
{
  "customModels": [
    {
      "model": "claude-sonnet-5-5",
      "displayName": "Claude Sonnet 5.5 [OmniaKey]",
      "baseUrl": "https://api.omniakey.com",
      "apiKey": "${OMNIAKEY_API_KEY}",
      "provider": "anthropic",
      "maxOutputTokens": 16000
    },
    {
      "model": "gpt-6.1-terra",
      "displayName": "GPT-6.1 Terra [OmniaKey]",
      "baseUrl": "https://api.omniakey.com/v1",
      "apiKey": "${OMNIAKEY_API_KEY}",
      "provider": "openai",
      "maxOutputTokens": 16000
    },
    {
      "model": "minimax-m3.1-flash",
      "displayName": "MiniMax M3.1 Flash [OmniaKey]",
      "baseUrl": "https://api.omniakey.com/v1",
      "apiKey": "${OMNIAKEY_API_KEY}",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 16000
    }
  ]
}
  • model est l'id envoyé à l'API ; copiez-le depuis la liste de modèles du fournisseur. displayName est votre libellé : il s'affiche dans /model et compose l'id custom:.
  • baseUrl est l'hôte nu pour anthropic, et finit par /v1 pour les deux autres.
  • apiKey: "${OMNIAKEY_API_KEY}" lit la clé depuis une variable d'environnement, pour qu'elle reste hors du fichier (doc BYOK de Factory, vérifiée le 30 octobre 2026).
  • provider choisit l'API ; une faute de frappe ici donne l'erreur « Invalid provider » plus bas.
  • maxOutputTokens: 16000 plafonne la longueur de chaque réponse.

Une clé et deux URL de base couvrent les trois modèles : l'hôte nu d'OmniaKey pour Claude, son hôte /v1 pour les deux autres. Si vous avez déjà suivi l'installation d'OmniaKey pour les agents de code, la même clé fonctionne ici.

Factory indique que les clés restent locales et ne sont pas envoyées aux serveurs de Factory (doc BYOK de Factory, vérifiée le 30 octobre 2026). Les anciens guides placent les modèles dans ~/.factory/config.json. La doc BYOK de Factory dit toujours que Droid les copie dans settings.json au démarrage. Une pull request du dépôt GitHub de Factory (#76) indique qu'une modification de code fusionnée le 15 octobre 2026 a supprimé cette copie : placez donc les nouveaux modèles directement dans settings.json.

Comment choisir un modèle personnalisé dans Droid ?

Dans l'application, ouvrez /model et regardez sous Custom Models ; en ligne de commande, passez un id custom: à droid exec.

La doc de Factory indique que les modèles enregistrés y apparaissent avec leur displayName, et que vous pouvez en ajouter depuis /settings > Custom models ou /model > Manage custom models (vérifiée le 30 octobre 2026).

L'id droid exec se compose de custom:, du nom affiché avec des tirets à la place des espaces, d'un tiret et de la position du modèle dans customModels, à partir de 0 (doc droid exec de Factory, vérifiée le 30 octobre 2026). Chez nous : custom:Claude-Sonnet-5.5-[OmniaKey]-0, custom:GPT-6.1-Terra-[OmniaKey]-1 et custom:MiniMax-M3.1-Flash-[OmniaKey]-2.

L'index suit l'ordre du tableau : insérer un modèle au-dessus décale tous les ids en dessous. Recopiez l'id après avoir modifié le fichier.

-r / --reasoning-effort dans droid exec ne s'applique pas aux modèles personnalisés (doc droid exec de Factory, vérifiée le 30 octobre 2026). Réglez reasoningEffort dans l'entrée à la place.

Trois modèles sur le même bug

Deux fichiers, une commande, une exécution par modèle. stats.py :

python
def median(values):
    """Return the median of a non-empty list of numbers."""
    ordered = sorted(values)
    mid = len(ordered) // 2
    return ordered[mid]

test_stats.py :

python
from stats import median

assert median([3, 1, 2]) == 2
assert median([4, 1, 3, 2]) == 2.5
assert median([5]) == 5
assert median([1.5, 2.5]) == 2.0
print("all tests passed")

La commande, où seule la valeur de --model change entre les exécutions :

bash
droid exec --auto medium -o json --model "custom:Claude-Sonnet-5.5-[OmniaKey]-0" "python3 test_stats.py fails. Fix the bug in stats.py without changing the tests, run python3 test_stats.py again, and tell me in one sentence what you changed."
ModèleDuréeToursTokens de sortie
Claude Sonnet 5.533,7 s3702
GPT-6.1 Terra77,4 s4451
MiniMax M3.1 Flash30,7 s4525

Ce sont les chiffres de Droid lui-même (duration_ms, num_turns, output_tokens). Flash a fini le plus vite, en 30,7 s, Claude a utilisé le moins de tours, et GPT-6.1 Terra a pris le plus de temps, 77,4 s. Droid a signalé le premier token après 8,7 s pour Claude, 17,8 s pour Terra et 7,0 s pour Flash. Les trois ont corrigé le bug sans toucher à test_stats.py, et les tests ont affiché all tests passed.

La modification de Claude :

diff
-    return ordered[mid]
+    if len(ordered) % 2:
+        return ordered[mid]
+    return (ordered[mid - 1] + ordered[mid]) / 2

GPT-6.1 Terra a ajouté la même branche au-dessus de l'ancienne ligne de retour, et MiniMax M3.1 Flash l'a écrite avec % 2 == 1. Les trois réponses décrivent cette correction : faire la moyenne des deux valeurs du milieu quand la liste a une longueur paire. Le test de MiniMax M3.1 Flash détaille ce modèle.

Le résultat JSON de Droid affichait aussi factory_credits à chaque exécution, alors que nous n'étions jamais connectés : 31 534 pour Claude Sonnet 5.5, 4 830 pour GPT-6.1 Terra et 835 pour MiniMax M3.1 Flash. La doc de Factory n'explique pas ce que mesure ce nombre ni son lien avec l'enveloppe BYOK (vérifiée le 30 octobre 2026).

Faut-il un compte ou un forfait Factory ?

Lors de nos exécutions, droid exec avec un modèle custom: n'a pas eu besoin de compte Factory. Les modèles propres à Factory et l'application interactive en demandaient un.

Droid CLI 1.0.0 est sorti le 29 octobre 2026 (changelog de Factory, vérifié le 30 octobre 2026). Dans un dossier personnel vierge, sans connexion Factory, chaque appel droid exec avec un modèle custom: a tourné sur notre propre clé. La même commande sans --model s'est arrêtée aussitôt sur « Authentication failed. Please log in using /login or set a valid FACTORY_API_KEY environment variable. » (« Échec de l'authentification. Connectez-vous avec /login ou définissez une variable d'environnement FACTORY_API_KEY valide. ») L'entrée de changelog de Factory v0.236.0 (8 octobre 2026) porte sur la reprise d'une session : « Droid exec now resumes a session on your own model credentials without a Factory sign-in. » (« Droid exec reprend désormais une session avec vos propres identifiants de modèle, sans connexion à Factory. »)

Lancer droid sans argument dans le même dossier s'est arrêté sur « Please login with your Factory account to continue. » (« Connectez-vous avec votre compte Factory pour continuer. »). Sans connexion, nous n'avons pas pu essayer les modèles personnalisés dans l'application interactive ou de bureau, et nous n'avons pas testé les images en entrée, Bedrock, apiKeyHelper, reasoningEffort, les réglages de raisonnement, Windows, les sessions de plus d'une tâche ni l'ancien fichier config.json.

Les forfaits Individual de Factory coûtent $20 (Pro), $100 (Plus) et $200 (Max) par mois ; la page tarifaire ajoute Teams à $60 par mois et par équipe plus $40 par siège, sans forfait individuel gratuit (doc tarifaire et page de prix de Factory, vérifiées le 30 octobre 2026).

La doc tarifaire des forfaits Individual dit : « BYOK is free up to an allowance on all Individual plans. After that, usage is charged according to your specific plan. » (« BYOK est gratuit jusqu'à une enveloppe sur tous les forfaits Individual. Au-delà, l'usage est facturé selon votre forfait. ») Factory ne dit pas quelle est la taille de cette enveloppe ni à quoi ressemble la facturation ensuite.

Les modèles personnalisés personnels fonctionnent dans la CLI et dans l'application de bureau, et n'apparaissent pas dans les applications web et mobiles hébergées de Factory (doc BYOK de Factory, vérifiée le 30 octobre 2026).

Quelles erreurs allez-vous rencontrer, et que faire ?

Chacune venait d'une seule valeur erronée dans une installation qui marchait par ailleurs, sur Droid 1.0.0.

  1. anthropic avec /v1 dans l'URL de base. Droid a affiché « Requested model was not found on the API provider » (« Le modèle demandé n'a pas été trouvé chez le fournisseur d'API ») au bout de 0,9 s, et son journal montrait 404 sur Invalid URL (POST /v1/v1/messages). Droid ajoute /v1/messages lui-même, notre /v1 le doublait. Correction : l'hôte nu, https://api.anthropic.com ou https://api.omniakey.com.

  2. openai avec l'hôte nu. Droid a affiché 404 et une page nginx « 404 Not Found » au bout de 1,4 s ; la Responses API se trouve sous /v1. Correction : https://api.openai.com/v1 ou https://api.omniakey.com/v1.

  3. Un id de modèle avec des points, claude-sonnet-5.5, au lieu de claude-sonnet-5-5. L'endpoint a répondu 503 avec le code model_not_found et le message « No available channel for model claude-sonnet-5.5 » (« Aucun canal disponible pour le modèle claude-sonnet-5.5 »). Le journal de Droid étiquetait chaque échec « overloaded » et a fait 10 tentatives en 259,7 secondes (environ 4 minutes 20) avant de sortir avec ce message. La formulation vient de la gateway ; les tentatives répétées viennent de Droid. Correction : copier l'id exact depuis la liste de modèles de votre fournisseur.

  4. OMNIAKEY_API_KEY vide dans le shell qui a lancé Droid. Droid a reçu 401 avec « Invalid token » (« Jeton invalide ») au bout de 2,8 s. Correction : exportez la clé dans le shell d'où vous lancez droid, puis démarrez une nouvelle session.

La liste de dépannage de Factory en ajoute deux. « Invalid provider » signifie que la valeur est mal orthographiée ou capitalisée autrement, et doit être exactement anthropic, openai, generic-chat-completion-api ou bedrock-converse. Si un modèle manque dans le sélecteur, la doc conseille de vérifier la syntaxe JSON dans ~/.factory/settings.json et que chaque entrée a bien ses champs obligatoires (vérifiée le 30 octobre 2026).

FAQ

Où se trouve le fichier de réglages de Droid sous Windows ?

%USERPROFILE%\.factory\settings.json, le même fichier que ~/.factory/settings.json sous macOS et Linux (doc des réglages de Factory, vérifiée le 30 octobre 2026). Mettez customModels à cet endroit.

Pourquoi mon modèle personnalisé n'apparaît-il pas dans /model ?

Vérifiez d'abord la syntaxe JSON dans ~/.factory/settings.json, puis les champs model, baseUrl et provider. Droid détecte les modifications enregistrées par surveillance de fichier (doc BYOK de Factory, vérifiée le 30 octobre 2026). D'après un rapport sur Desktop 0.184.0 avec CLI 0.227.0, les modèles personnalisés apparaissaient brièvement dans le sélecteur de bureau puis disparaissaient, alors que droid exec --help en listait toujours 14 ; cette issue est désormais fermée (Factory-AI issue #40, vérifiée le 30 octobre 2026).

Les modèles personnalisés peuvent-ils lire des images ?

Les images sont activées par défaut pour anthropic et openai, et désactivées pour generic-chat-completion-api, où noImageSupport vaut true (doc BYOK de Factory, vérifiée le 30 octobre 2026). Mettez noImageSupport: false sur une entrée générique pour les autoriser. Selon un signalement, les images étaient quand même supprimées avec la CLI v0.205.1 et cette valeur définie (Factory-AI issue #24, vérifiée le 30 octobre 2026).

Peut-on régler l'effort de raisonnement d'un modèle personnalisé ?

-r / --reasoning-effort dans droid exec ne s'applique pas aux modèles personnalisés. Réglez plutôt reasoningEffort dans l'entrée : la valeur fixe l'effort par défaut d'un modèle que Droid ne reconnaît pas et ajoute off, low, medium et high au sélecteur (doc BYOK de Factory, vérifiée le 30 octobre 2026).

Les modèles personnalisés fonctionnent-ils dans l'application de bureau Droid ?

Oui : les modèles personnalisés personnels sont disponibles dans la CLI et dans l'application de bureau, et restent absents des applications web et mobiles hébergées. Les éditeurs de modèles de la CLI et de l'application de bureau enregistrent tous les deux dans ~/.factory/settings.json (doc BYOK de Factory, vérifiée le 30 octobre 2026).

Sources vérifiées

La documentation d'OmniaKey, vérifiée le 30 octobre 2026 : présentation de l'API et API compatible OpenAI.

Modèles cités dans cet article

Factory DroidBYOKmodèles personnalisésClaude Sonnet 5.5GPT-6.1 Terraconfig API

Articles similaires

Articles récents