GPT-6 Sol・Claude Opus 5.5 提供開始GPT-6 Sol の料金は 5.6 Sol の半額

Factory Droid のカスタムモデル設定:自分の API キーで Claude と GPT を使う

settings.json 1 つで、Droid 1.0.0 は同じキーのまま Claude Sonnet 5.5、GPT-6.1 Terra、MiniMax M3.1 Flash を動かしました。設定ファイル、モデルごとの provider、実際に踏んだ 4 つのエラーをまとめます。

Kiki, OmniaKey COO読了目安 9分
このページの内容

Droid 1.0.0 では、カスタムモデルを ~/.factory/settings.json の customModels に書きます。1 件ごとに model、baseUrl、apiKey、provider の 4 項目が必要です。Claude は anthropic でホスト名だけを指定し、GPT は openai、それ以外は generic-chat-completion-api を使います。同じバグを 3 モデルが直し、かかった時間は 33.7 秒、77.4 秒、30.7 秒でした。

3 回とも OmniaKey の同じキーで実行しました。使ったのは Claude Sonnet 5.5、GPT-6.1 Terra、MiniMax M3.1 Flash です。どれも同じ壊れた median() 関数を渡し、3 つとも直しました。

先に結論

  • 書く場所。 ~/.factory/settings.json の customModels です。項目は model、baseUrl、apiKey、provider の 4 つです(Factory の設定ドキュメント、2026 年 10 月 30 日確認)。
  • provider の選び方。 Claude は anthropic、GPT モデルは openai、Chat Completions に対応するその他のモデルは generic-chat-completion-api です。
  • /v1 の要否。 anthropic はホスト名だけを指定します。Droid が /v1/messages を足すためです。openai と generic-chat-completion-api は /v1 で終わる URL を指定します。
  • droid exec の id。 custom: のあとに、空白をハイフンに変えた表示名、そのあとに 0 始まりの位置を続けます:custom:Claude-Sonnet-5.5-[OmniaKey]-0。
  • 実行結果。 3 モデルともバグを直しました。Flash が 30.7 秒、Claude が 33.7 秒、GPT-6.1 Terra が 77.4 秒です。

provider にはどの値を入れるか

モデル名ではなく、エンドポイントが対応する API で選びます。

  • anthropic は Anthropic Messages API のリクエストを送ります。Claude 用です。Anthropic の URL は https://api.anthropic.com です。
  • openai は OpenAI Responses API のリクエストを送ります。GPT モデル用です。OpenAI の URL は https://api.openai.com/v1 です。
  • generic-chat-completion-api は OpenAI Chat Completions のリクエストを送ります。その他の多くのモデル、ゲートウェイ、ローカルサーバー用で、各サービスの /v1 URL を指定します。

Factory は generic-chat-completion-api を OpenRouter、Fireworks、Together AI、Ollama、vLLM と多くのオープンソース系サービス向けに挙げています。OpenAI か Anthropic の公式 API を呼ぶ場合を除き、この値を使うよう勧めています(Factory の BYOK ドキュメント、2026 年 10 月 30 日確認)。

Messages API や Responses API にも対応するゲートウェイなら、anthropic や openai を選べます。OmniaKey 経由で設定した Claude と GPT-6.1 Terra の項目がそうで、どちらも動きました。OmniaKey の GPT モデルは POST /v1/responses で提供しています(OmniaKey の OpenAI 互換ドキュメント、2026 年 10 月 30 日確認)。

4 つ目の値 bedrock-converse は AWS Bedrock の Converse API 上のモデル用です。Factory は、公式 API 上の Anthropic と OpenAI のモデルだけが十分なテストとベンチマークを受けていると注意しています。パラメータ数が 300 億未満のモデルは、エージェント型のコーディングで明確に劣るとしています(Factory の BYOK ドキュメント、2026 年 10 月 30 日確認)。

使った settings.json

Droid は初回起動時に ~/.factory/settings.json を作ります。すでにあるファイルに customModels を足すだけです(Factory の設定ドキュメント、2026 年 10 月 30 日確認)。手元のファイルはこうです:

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 は API に送る id です。サービスのモデル一覧からそのままコピーします。displayName は自分で付ける名前で、/model に表示され、custom: id の組み立てにも使います。
  • baseUrl は anthropic ならホスト名だけ、残り 2 つは /v1 で終わります。
  • apiKey: "${OMNIAKEY_API_KEY}" は環境変数からキーを読みます。キーはファイルに残りません(Factory の BYOK ドキュメント、2026 年 10 月 30 日確認)。
  • provider は使う API を決めます。ここを打ち間違えると、後述の "Invalid provider" エラーになります。
  • maxOutputTokens: 16000 は 1 回の回答の長さを制限します。

キー 1 つと 2 つの 接続先 URL で 3 モデルすべてをまかなえます。Claude は OmniaKey のホスト名だけの URL、残り 2 つは /v1 の URL です。OmniaKey のコーディングエージェント設定ドキュメント の手順で設定したなら、同じキーがそのまま使えます。

Factory は、キーはローカルに残り、Factory のサーバーにはアップロードされないと説明しています(Factory の BYOK ドキュメント、2026 年 10 月 30 日確認)。古い記事はモデルを ~/.factory/config.json に書いていました。Factory の BYOK ドキュメントは今も、Droid が起動時にそれを settings.json へコピーすると書いています。Factory のリポジトリの pull request(#76)は、2026 年 10 月 15 日にマージされた変更でこのコピーがなくなったと述べています。新しいモデルは settings.json に直接書いてください。

Droid でカスタムモデルを選ぶ方法

アプリでは /model を開き、Custom Models の欄を見ます。コマンドラインでは droid exec に custom: で始まる id を渡します。

Factory のドキュメントによると、保存したモデルは displayName 付きでそこに表示されます。/settings > Custom models からも、/model > Manage custom models からも追加できます(2026 年 10 月 30 日確認)。

droid exec の id は 3 つの部分からなります。custom:、空白をハイフンにした表示名、そして customModels 内の 0 始まりの位置です(Factory の droid exec ドキュメント、2026 年 10 月 30 日確認)。手元では custom:Claude-Sonnet-5.5-[OmniaKey]-0、custom:GPT-6.1-Terra-[OmniaKey]-1、custom:MiniMax-M3.1-Flash-[OmniaKey]-2 になりました。

位置は配列の順番に従います。上に 1 つ挿入すると、それ以降の id はすべてずれます。ファイルを編集したら id をコピーし直してください。

droid exec の -r / --reasoning-effort はカスタムモデルには効きません(Factory の droid exec ドキュメント、2026 年 10 月 30 日確認)。代わりに項目へ reasoningEffort を書いてください。

3 モデルで同じバグを直す

ファイル 2 つ、コマンド 1 つ、モデルごとに 1 回ずつ実行しました。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")

コマンドは --model の値だけ変えています:

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."
モデル時間ターン出力トークン
Claude Sonnet 5.533.7 s3702
GPT-6.1 Terra77.4 s4451
MiniMax M3.1 Flash30.7 s4525

数値は Droid 自身が返したものです(duration_ms、num_turns、output_tokens)。Flash が 30.7 秒で最短、Claude はターン数が最少、GPT-6.1 Terra は 77.4 秒で最長でした。最初のトークンまでの時間は Claude が 8.7 秒、Terra が 17.8 秒、Flash が 7.0 秒です。3 つとも test_stats.py に触れずにバグを直し、テストは all tests passed を出力しました。

Claude の変更:

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

GPT-6.1 Terra は元の return 行の上に同じ分岐を足し、MiniMax M3.1 Flash は % 2 == 1 で書きました。3 つの回答はどれもこの直し方を説明しています。要素数が偶数のときは中央 2 つの平均を返す、という内容です。MiniMax M3.1 Flash のレビュー では、このモデルをより詳しく扱っています。

Droid の JSON 結果は毎回 factory_credits も出力しました。こちらは一度もログインしていません。値は Claude Sonnet 5.5 が 31,534、GPT-6.1 Terra が 4,830、MiniMax M3.1 Flash が 835 です。この数字が何を測っているのか、BYOK の枠とどう関係するのかは Factory のドキュメントに書かれていません(2026 年 10 月 30 日確認)。

Factory アカウントやプランは必要か

手元の実行では、custom: モデルを使う droid exec に Factory アカウントは不要でした。Factory 自身のモデルと対話型アプリでは必要でした。

Droid CLI 1.0.0 は 2026 年 10 月 29 日に公開されました(Factory の変更履歴、2026 年 10 月 30 日確認)。Factory にログインしていないきれいなホームフォルダで、custom: モデルを使った droid exec はすべて自分のキーで動きました。同じコマンドから --model を外すと即座に止まり、"Authentication failed. Please log in using /login or set a valid FACTORY_API_KEY environment variable."(認証に失敗しました。/login でログインするか、有効な FACTORY_API_KEY 環境変数を設定してください。)と表示されました。Factory の v0.236.0 の変更履歴(2026 年 10 月 8 日)にはこうあります:"Droid exec now resumes a session on your own model credentials without a Factory sign-in."(Droid exec は Factory にログインしなくても、自分のモデルの資格情報でセッションを再開できるようになりました。)

同じフォルダで引数なしに droid を起動すると、"Please login with your Factory account to continue."(続けるには Factory アカウントでログインしてください。)で止まりました。ログインなしでは対話型アプリとデスクトップアプリでカスタムモデルを試せませんでした。画像入力、Bedrock、apiKeyHelper、reasoningEffort と thinking の設定、Windows、1 つのタスクより長いセッション、古い config.json は試していません。

Factory の Individual プランは月額 $20(Pro)、$100(Plus)、$200(Max)です。料金ページには Teams もあり、1 チームあたり月額 $60 に 1 席あたり $40 が加わります。個人向けの無料プランはありません(Factory の料金ドキュメントと料金ページ、2026 年 10 月 30 日確認)。

Individual の料金ドキュメントにはこうあります:"BYOK is free up to an allowance on all Individual plans. After that, usage is charged according to your specific plan."(BYOK はすべての Individual プランで一定の枠まで無料です。それを超えると、利用中のプランに従って課金されます。)Factory はその枠の大きさも、超えた後の請求額も示していません。

個人のカスタムモデルは CLI とデスクトップアプリで動きます。Factory がホストする Web 版とモバイル版には表示されません(Factory の BYOK ドキュメント、2026 年 10 月 30 日確認)。

どんなエラーが出て、どう直すか

どれも、それ以外は動いている設定の中で 1 つの値が間違っていた例です。環境は Droid 1.0.0 です。

  1. anthropic の baseUrl に /v1 を付けた場合。Droid は 0.9 秒後に "Requested model was not found on the API provider"(API プロバイダー上に要求したモデルが見つかりません)と表示し、ログには 404 と Invalid URL (POST /v1/v1/messages) が残りました。Droid 自身が /v1/messages を足すため、こちらが付けた /v1 で二重になります。直し方はホスト名だけを指定することです。https://api.anthropic.com か https://api.omniakey.com です。

  2. openai にホスト名だけを指定した場合。1.4 秒後に Droid は 404 と nginx の "404 Not Found" ページを出しました。Responses API は /v1 の下にあります。直し方は https://api.openai.com/v1 か https://api.omniakey.com/v1 です。

  3. モデル id にドットを入れた claude-sonnet-5.5 を使った場合。正しくは claude-sonnet-5-5 です。エンドポイントは 503 とエラーコード model_not_found を返し、メッセージは "No available channel for model claude-sonnet-5.5"(このモデルを処理できるチャネルがありません)でした。Droid のログは各失敗を "overloaded" と記録し、259.7 秒(約 4 分 20 秒)かけて 10 回試してから終了しました。文言はゲートウェイのもので、再試行は Droid 側です。直し方は、サービスのモデル一覧から正確な id をコピーすることです。

  4. Droid を起動したシェルで OMNIAKEY_API_KEY が空だった場合。2.8 秒後に Droid は 401 と "Invalid token"(トークンが無効です)を受け取りました。直し方は、droid を起動するシェルでキーを export し、新しいセッションを始めることです。

Factory のトラブルシューティングにはさらに 2 つあります。"Invalid provider" は値の綴りか大文字小文字が違う場合で、anthropic、openai、generic-chat-completion-api、bedrock-converse のいずれかと完全に一致する必要があります。モデルが選択肢に出ない場合は、~/.factory/settings.json の JSON 構文を確認し、各項目に必須フィールドがあるかを確かめるようドキュメントは案内しています(2026 年 10 月 30 日確認)。

よくある質問

Windows で Droid の設定ファイルはどこにある?

%USERPROFILE%\.factory\settings.json です。macOS と Linux の ~/.factory/settings.json と同じファイルです(Factory の設定ドキュメント、2026 年 10 月 30 日確認)。customModels はここに書きます。

カスタムモデルが /model に出ないのはなぜ?

まず ~/.factory/settings.json の JSON 構文を見て、次に model、baseUrl、provider の各フィールドを確認します。Droid はファイル監視で保存された変更を検知します(Factory の BYOK ドキュメント、2026 年 10 月 30 日確認)。Desktop 0.184.0 と CLI 0.227.0 の組み合わせで、カスタムモデルがデスクトップの選択肢に一瞬出て消え、droid exec --help には 14 個すべてが並ぶという報告がありました。この issue はすでにクローズされています(Factory-AI issue #40、2026 年 10 月 30 日確認)。

カスタムモデルは画像を読める?

anthropic と openai では既定で有効、generic-chat-completion-api では既定で無効です。noImageSupport の既定値が true です(Factory の BYOK ドキュメント、2026 年 10 月 30 日確認)。generic の項目で noImageSupport: false にすると有効になります。CLI v0.205.1 でそう設定しても画像が取り除かれた、という報告が 1 件あります(Factory-AI issue #24、2026 年 10 月 30 日確認)。

カスタムモデルに reasoning effort は設定できる?

droid exec の -r / --reasoning-effort はカスタムモデルには効きません。項目に reasoningEffort を書いてください。Droid が認識しないモデルの既定の強さを決め、選択肢に off、low、medium、high を加えます(Factory の BYOK ドキュメント、2026 年 10 月 30 日確認)。

デスクトップ版 Droid でもカスタムモデルは使える?

使えます。個人のカスタムモデルは CLI とデスクトップアプリで利用でき、ホスト型の Web 版とモバイル版には出ません。CLI とデスクトップアプリのモデル編集画面はどちらも ~/.factory/settings.json に保存します(Factory の BYOK ドキュメント、2026 年 10 月 30 日確認)。

確認した情報源

OmniaKey 自身のドキュメント(2026 年 10 月 30 日確認):API 概要 と OpenAI 互換 API。

この記事で紹介しているモデル

Factory DroidBYOKカスタムモデルClaude Sonnet 5.5GPT-6.1 TerraAPI 設定

関連記事

最近の記事