GPT-6 Sol & Claude Opus 5.5 sind daGPT-6 Sol zum halben Preis von 5.6 Sol

Eigene Modelle in Factory Droid: Claude und GPT mit eigenem API-Key nutzen

Eine settings.json brachte Droid 1.0.0 auf Claude Sonnet 5.5, GPT-6.1 Terra und MiniMax M3.1 Flash – mit einem Schlüssel. Hier steht die Datei, der passende Provider je Modell und die vier Fehler, auf die wir gestoßen sind.

Kiki, OmniaKey COO9 Min. Lesezeit
Auf dieser Seite

Tragen Sie jedes Modell in customModels in ~/.factory/settings.json ein – mit model, baseUrl, apiKey und provider. Nehmen Sie anthropic für Claude mit blankem Host, openai für GPT und generic-chat-completion-api für alles andere. Auf Droid 1.0.0 haben Claude Sonnet 5.5, GPT-6.1 Terra und MiniMax M3.1 Flash denselben Bug in 33,7, 77,4 und 30,7 Sekunden behoben.

Alle drei Läufe gingen über OmniaKey mit einem einzigen Schlüssel – so kamen wir an Claude Sonnet 5.5, GPT-6.1 Terra und MiniMax M3.1 Flash. Jedes Modell bekam dieselbe kaputte median()-Funktion und reparierte sie.

Kurz gesagt

  • Wohin es gehört. customModels in ~/.factory/settings.json (Factorys Settings-Doku, geprüft am 30. Oktober 2026), mit model, baseUrl, apiKey und provider.
  • Welcher Provider. anthropic für Claude, openai für GPT-Modelle, generic-chat-completion-api für alles andere, das Chat Completions spricht.
  • Wohin /v1 gehört. anthropic bekommt den blanken Host, weil Droid /v1/messages selbst anhängt; openai und generic-chat-completion-api bekommen eine URL, die auf /v1 endet.
  • Die ID für droid exec. custom:, dann der Anzeigename mit Bindestrichen statt Leerzeichen, dann die Position ab 0: custom:Claude-Sonnet-5.5-[OmniaKey]-0.
  • Was die Läufe zeigten. Alle drei haben den Bug behoben; 30,7 s für Flash, 33,7 s für Claude, 77,4 s für GPT-6.1 Terra.

Welchen Provider-Wert brauchen Sie?

Wählen Sie den Provider nach der API, die Ihr Endpunkt spricht, nicht nach dem Modellnamen.

  • anthropic schickt Anfragen an die Anthropic Messages API. Passt für Claude; die Basis-URL von Anthropic ist https://api.anthropic.com.
  • openai schickt Anfragen an die OpenAI Responses API. Passt für GPT-Modelle; die Basis-URL von OpenAI ist https://api.openai.com/v1.
  • generic-chat-completion-api schickt Anfragen an die OpenAI Chat Completions API. Passt für die meisten anderen Modelle, Gateways und lokalen Server, mit der /v1-URL des jeweiligen Anbieters.

Factory nennt generic-chat-completion-api für OpenRouter, Fireworks, Together AI, Ollama, vLLM und die meisten Open-Source-Anbieter und empfiehlt den Wert, solange Sie nicht die offizielle API von OpenAI oder Anthropic aufrufen (Factorys BYOK-Doku, geprüft am 30. Oktober 2026).

Ein Gateway, das auch die Messages API oder die Responses API spricht, kann anthropic oder openai verwenden. Unsere Einträge für Claude und GPT-6.1 Terra taten das über OmniaKey, und beide liefen; OmniaKey bedient GPT-Modelle unter POST /v1/responses (OmniaKeys Doku zur OpenAI-Kompatibilität, geprüft am 30. Oktober 2026).

Es gibt noch einen vierten Wert: bedrock-converse ist für Modelle auf der Converse API von AWS Bedrock gedacht. Factory weist darauf hin, dass nur Anthropic- und OpenAI-Modelle auf den offiziellen APIs vollständig getestet und gebenchmarkt sind und dass Modelle unter 30 Milliarden Parametern beim agentischen Programmieren deutlich schlechter abschneiden (Factorys BYOK-Doku, geprüft am 30. Oktober 2026).

Unsere settings.json

Droid legt ~/.factory/settings.json beim ersten Start an; ergänzen Sie customModels in der Datei, die schon da ist (Factorys Settings-Doku, geprüft am 30. Oktober 2026). Unsere sieht so aus:

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 ist die ID, die an die API geht; kopieren Sie sie aus der Modellliste des Anbieters. displayName ist Ihr eigenes Label: Es erscheint in /model und bildet die custom:-ID.
  • baseUrl ist der blanke Host für anthropic und endet bei den anderen beiden auf /v1.
  • apiKey: "${OMNIAKEY_API_KEY}" liest den Schlüssel aus einer Umgebungsvariable, damit er nicht in der Datei steht (Factorys BYOK-Doku, geprüft am 30. Oktober 2026).
  • provider legt die API fest; ein Tippfehler hier führt zum Fehler „Invalid provider“ weiter unten.
  • maxOutputTokens: 16000 begrenzt die Länge jeder Antwort.

Ein Schlüssel und zwei Basis-URLs decken alle drei Modelle ab: der blanke Host von OmniaKey für Claude, sein /v1-Host für die anderen beiden. Wenn Sie die Einrichtung für Coding-Agenten bei OmniaKey schon hinter sich haben, funktioniert derselbe Schlüssel auch hier.

Factory sagt, dass Schlüssel lokal bleiben und nicht auf Factory-Server hochgeladen werden (Factorys BYOK-Doku, geprüft am 30. Oktober 2026). Ältere Anleitungen legen Modelle in ~/.factory/config.json ab. Die BYOK-Doku von Factory schreibt weiterhin, dass Droid sie beim Start nach settings.json kopiert. Ein Pull Request im GitHub-Repository von Factory (#76) besagt, dass eine am 15. Oktober 2026 zusammengeführte Codeänderung dieses Kopieren entfernt hat – legen Sie neue Modelle also direkt in settings.json ab.

Wie wählen Sie ein eigenes Modell in Droid aus?

Öffnen Sie in der App /model und schauen Sie unter Custom Models; auf der Kommandozeile übergeben Sie eine custom:-ID an droid exec.

Laut Factory-Doku erscheinen gespeicherte Modelle dort mit ihrem displayName, und Sie können eines unter /settings > Custom models oder /model > Manage custom models hinzufügen (geprüft am 30. Oktober 2026).

Die droid exec-ID besteht aus custom:, dem Anzeigenamen mit Bindestrichen statt Leerzeichen, einem Bindestrich und der Position des Modells in customModels, ab 0 gezählt (Factorys droid exec-Doku, geprüft am 30. Oktober 2026). Bei uns kamen custom:Claude-Sonnet-5.5-[OmniaKey]-0, custom:GPT-6.1-Terra-[OmniaKey]-1 und custom:MiniMax-M3.1-Flash-[OmniaKey]-2 heraus.

Der Index folgt der Reihenfolge im Array. Schieben Sie ein Modell dazwischen, verschieben sich alle IDs darunter; kopieren Sie die ID nach dem Bearbeiten der Datei neu.

-r / --reasoning-effort in droid exec greift bei eigenen Modellen nicht (Factorys droid exec-Doku, geprüft am 30. Oktober 2026). Setzen Sie stattdessen reasoningEffort im Eintrag.

Drei Modelle, derselbe Bug

Zwei Dateien, ein Befehl, ein Lauf pro Modell. 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")

Der Befehl, bei dem sich zwischen den Läufen nur der Wert von --model ändert:

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."
ModellZeitTurnsAusgabe-Tokens
Claude Sonnet 5.533,7 s3702
GPT-6.1 Terra77,4 s4451
MiniMax M3.1 Flash30,7 s4525

Das sind Droids eigene Zahlen (duration_ms, num_turns, output_tokens). Flash war mit 30,7 s am schnellsten, Claude brauchte die wenigsten Turns, und GPT-6.1 Terra brauchte mit 77,4 s am längsten. Das erste Token meldete Droid nach 8,7 s bei Claude, 17,8 s bei Terra und 7,0 s bei Flash. Alle drei haben den Bug behoben, ohne test_stats.py anzufassen, und die Tests meldeten all tests passed.

Claudes Änderung:

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

GPT-6.1 Terra setzte denselben Zweig über die alte Rückgabezeile, und MiniMax M3.1 Flash schrieb ihn mit % 2 == 1. Alle drei Antworten beschrieben genau diese Korrektur: bei gerader Anzahl die beiden mittleren Werte mitteln. Der Test zu MiniMax M3.1 Flash geht ausführlicher auf das Modell ein.

Im JSON-Ergebnis von Droid stand außerdem bei jedem Lauf factory_credits, obwohl wir nie angemeldet waren: 31.534 für Claude Sonnet 5.5, 4.830 für GPT-6.1 Terra und 835 für MiniMax M3.1 Flash. Die Doku von Factory erklärt nicht, was die Zahl misst und wie sie mit dem BYOK-Kontingent zusammenhängt (geprüft am 30. Oktober 2026).

Brauchen Sie ein Factory-Konto oder einen Plan?

Bei unseren Läufen brauchte droid exec mit einem custom:-Modell kein Factory-Konto. Factorys eigene Modelle und die interaktive App fragten danach.

Droid CLI 1.0.0 erschien am 29. Oktober 2026 (Factorys Changelog, geprüft am 30. Oktober 2026). In einem frischen Home-Verzeichnis ohne Factory-Anmeldung lief jeder Aufruf von droid exec mit einem custom:-Modell über unseren eigenen Schlüssel. Derselbe Befehl ohne --model brach sofort ab mit „Authentication failed. Please log in using /login or set a valid FACTORY_API_KEY environment variable.“ („Anmeldung fehlgeschlagen. Bitte melden Sie sich mit /login an oder setzen Sie eine gültige Umgebungsvariable FACTORY_API_KEY.“). Der Changelog-Eintrag zu Factory v0.236.0 (8. Oktober 2026) behandelt fortgesetzte Sitzungen: „Droid exec now resumes a session on your own model credentials without a Factory sign-in.“ („Droid exec setzt eine Sitzung jetzt mit Ihren eigenen Modell-Zugangsdaten fort, ohne Anmeldung bei Factory.“)

Der Start von droid ohne Argumente im selben Ordner endete mit „Please login with your Factory account to continue.“ („Bitte melden Sie sich mit Ihrem Factory-Konto an, um fortzufahren.“). Ohne Anmeldung konnten wir eigene Modelle in der interaktiven oder der Desktop-App nicht ausprobieren, und Bild-Eingaben, Bedrock, apiKeyHelper, reasoningEffort, Thinking-Einstellungen, Windows, Sitzungen über eine Aufgabe hinaus sowie die alte config.json haben wir nicht getestet.

Factorys Individual-Pläne kosten $20 (Pro), $100 (Plus) und $200 (Max) pro Monat; die Preisseite ergänzt Teams mit $60 pro Monat und Team plus $40 pro Sitz und kennt keinen kostenlosen Individual-Plan (Factorys Preis-Doku und Preisseite, geprüft am 30. Oktober 2026).

Die Preisdoku für Individual-Pläne sagt: „BYOK is free up to an allowance on all Individual plans. After that, usage is charged according to your specific plan.“ („BYOK ist bis zu einem Kontingent in allen Individual-Plänen kostenlos. Danach wird die Nutzung nach Ihrem jeweiligen Plan abgerechnet.“) Wie groß dieses Kontingent ist und wie die Abrechnung danach aussieht, schreibt Factory nicht.

Persönliche eigene Modelle funktionieren in der CLI und in der Desktop-App, erscheinen aber nicht in den gehosteten Web- und Mobile-Apps von Factory (Factorys BYOK-Doku, geprüft am 30. Oktober 2026).

Welche Fehler treten auf, und was hilft dagegen?

Jeder dieser Fehler kam von einem falschen Wert in einer sonst funktionierenden Einrichtung, auf Droid 1.0.0.

  1. anthropic mit /v1 in der Basis-URL. Droid meldete nach 0,9 s „Requested model was not found on the API provider“ („Das angefragte Modell wurde beim API-Anbieter nicht gefunden“), und im Log stand 404 zu Invalid URL (POST /v1/v1/messages). Droid hängt /v1/messages selbst an, unser /v1 verdoppelte es also. Lösung: der blanke Host, https://api.anthropic.com oder https://api.omniakey.com.

  2. openai mit dem blanken Host. Droid meldete nach 1,4 s 404 und eine nginx-Seite „404 Not Found“; die Responses API liegt unter /v1. Lösung: https://api.openai.com/v1 oder https://api.omniakey.com/v1.

  3. Eine Modell-ID mit Punkten, claude-sonnet-5.5, statt claude-sonnet-5-5. Der Endpunkt antwortete mit 503, dem Code model_not_found und der Meldung „No available channel for model claude-sonnet-5.5“ („Kein verfügbarer Kanal für Modell claude-sonnet-5.5“). Droid protokollierte jeden Fehlschlag als „overloaded“ und machte 259,7 Sekunden lang (etwa 4 Minuten 20 Sekunden) 10 Versuche, bevor es mit dieser Meldung abbrach. Die Formulierung stammt vom Gateway, das Wiederholen von Droid. Lösung: die exakte ID aus der Modellliste Ihres Anbieters kopieren.

  4. OMNIAKEY_API_KEY in der Shell leer, aus der Droid gestartet wurde. Droid bekam nach 2,8 s 401 mit „Invalid token“ („Ungültiges Token“). Lösung: den Schlüssel in der Shell exportieren, aus der Sie droid starten, und eine neue Sitzung beginnen.

Die Fehlersuche-Doku von Factory nennt zwei weitere Punkte. „Invalid provider“ bedeutet, dass der Wert falsch geschrieben oder anders großgeschrieben ist; er muss genau anthropic, openai, generic-chat-completion-api oder bedrock-converse lauten. Fehlt ein Modell in der Auswahl, raten die Docs, die JSON-Syntax in ~/.factory/settings.json zu prüfen und darauf zu achten, dass jeder Eintrag seine Pflichtfelder hat (geprüft am 30. Oktober 2026).

FAQ

Wo liegt die Droid-Settings-Datei unter Windows?

%USERPROFILE%\.factory\settings.json, dieselbe Datei wie ~/.factory/settings.json unter macOS und Linux (Factorys Settings-Doku, geprüft am 30. Oktober 2026). Tragen Sie customModels dort ein.

Warum erscheint mein eigenes Modell nicht in /model?

Prüfen Sie zuerst die JSON-Syntax in ~/.factory/settings.json, dann die Felder model, baseUrl und provider. Droid erkennt gespeicherte Änderungen über File Watching (Factorys BYOK-Doku, geprüft am 30. Oktober 2026). Ein Bericht zu Desktop 0.184.0 mit CLI 0.227.0 zeigte eigene Modelle kurz im Desktop-Picker; danach verschwanden sie, während droid exec --help weiter alle 14 auflistete; das Issue ist inzwischen geschlossen (Factory-AI Issue #40, geprüft am 30. Oktober 2026).

Können eigene Modelle Bilder lesen?

Bei anthropic und openai sind Bilder standardmäßig an, bei generic-chat-completion-api aus, wo noImageSupport auf true steht (Factorys BYOK-Doku, geprüft am 30. Oktober 2026). Setzen Sie noImageSupport: false bei einem generischen Eintrag, um sie zu erlauben. Laut einer Meldung wurden Bilder mit CLI v0.205.1 trotz gesetztem Wert entfernt (Factory-AI Issue #24, geprüft am 30. Oktober 2026).

Kann ich den Reasoning-Aufwand für ein eigenes Modell festlegen?

-r / --reasoning-effort in droid exec greift bei eigenen Modellen nicht. Setzen Sie stattdessen reasoningEffort im Eintrag: Der Wert legt den Standardaufwand für ein Modell fest, das Droid nicht kennt, und ergänzt off, low, medium und high in der Auswahl (Factorys BYOK-Doku, geprüft am 30. Oktober 2026).

Funktionieren eigene Modelle in der Droid-Desktop-App?

Ja: Persönliche eigene Modelle stehen in der CLI und in der Desktop-App bereit und bleiben aus den gehosteten Web- und Mobile-Apps heraus. Die Modell-Editoren in CLI und Desktop-App speichern beide in ~/.factory/settings.json (Factorys BYOK-Doku, geprüft am 30. Oktober 2026).

Geprüfte Quellen

OmniaKeys eigene Doku, geprüft am 30. Oktober 2026: API-Überblick und OpenAI-kompatible API.

Modelle in diesem Artikel

Factory DroidBYOKeigene ModelleClaude Sonnet 5.5GPT-6.1 TerraAPI einrichten

Verwandte Artikel

Neueste Beiträge