> ## Documentation Index
> Fetch the complete documentation index at: https://factory-docs-auto-sync-jp-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 独自キーの使用（BYOK）

> 自分のAPIキーを接続し、オープンソースモデルを使用するか、ローカルモデルを実行する

Droid CLIは、BYOK（Bring Your Own Key）を通じてカスタムモデル設定をサポートしています。独自のOpenAIやAnthropicキーを使用し、任意のオープンソースモデルプロバイダーに接続するか、お使いのハードウェア上でローカルにモデルを実行できます。設定完了後は、`/model`コマンドを使用してモデル間を切り替えることができます。

Factory管理モデルと倍率については、[利用可能なモデル](/jp/models)を参照してください。

<Note>
  APIキーはローカルに保持され、Factoryサーバーにはアップロードされません。カスタムモデルはCLIでのみ利用可能で、Factory Appやモバイルプラットフォームには表示されません。
</Note>

<img src="https://mintcdn.com/factory-docs-auto-sync-jp-docs/DUsTyl5_U_XFKDjY/images/custom_models.png?fit=max&auto=format&n=DUsTyl5_U_XFKDjY&q=85&s=e3adc80d315b910972212422b8bef39d" alt="カスタムモデルを表示するモデルセレクター" width="1376" height="1166" data-path="images/custom_models.png" />

[5分クイックスタートでCLIをインストールする →](/jp/cli/getting-started/quickstart)

***

## 設定リファレンス

`~/.factory/settings.json`の`customModels`配列にカスタムモデルを追加してください：

```json theme={null}
{
  "customModels": [
    {
      "model": "your-model-id",
      "displayName": "My Custom Model",
      "baseUrl": "https://api.provider.com/v1",
      "apiKey": "${PROVIDER_API_KEY}",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 16384
    }
  ]
}
```

<Tip>
  `settings.json`（および`settings.local.json`）では、`apiKey`が`${VAR_NAME}`構文による環境変数参照をサポートします。たとえば、`"apiKey": "${PROVIDER_API_KEY}"`は`PROVIDER_API_KEY`という名前の環境変数から読み込みます（例: `export PROVIDER_API_KEY=your_key_here`）。
</Tip>

<Note>
  **レガシーサポート**: 後方互換性のため、`~/.factory/config.json`内でsnake\_caseフィールド名（`custom_models`、`base_url`など）を使うカスタムモデルは引き続きサポートされます。両方のファイルが読み込まれてマージされ、`settings.json`が優先されます。`apiKey`の環境変数展開は`settings.json`/`settings.local.json`に適用され、レガシーの`config.json`には適用されません。
</Note>

### サポートされているフィールド

| フィールド             | タイプ       | 必須 | 説明                                                                                                                                               |
| ----------------- | --------- | -- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `model`           | `string`  | ✓  | API経由で送信されるモデル識別子（例：`claude-sonnet-4-5-20250929`、`gpt-5-codex`、`qwen3:4b`）                                                                       |
| `displayName`     | `string`  |    | モデルセレクターに表示される人間が読みやすい名前                                                                                                                         |
| `baseUrl`         | `string`  | ✓  | APIエンドポイントのベースURL                                                                                                                                |
| `apiKey`          | `string`  | ✓  | プロバイダー用のAPIキー。空にはできません。`settings.json`/`settings.local.json`での`${VAR_NAME}`をサポートします（例：`${PROVIDER_API_KEY}`は`PROVIDER_API_KEY`環境変数を使用します）。       |
| `provider`        | `string`  | ✓  | 次のいずれか：`anthropic`、`openai`、または`generic-chat-completion-api`                                                                                     |
| `maxOutputTokens` | `number`  |    | モデルレスポンスの最大出力トークン数                                                                                                                               |
| `noImageSupport`  | `boolean` |    | このモデルで画像入力を無効にするには`true`に設定                                                                                                                      |
| `extraArgs`       | `object`  |    | APIリクエストに含める追加のプロバイダー固有の引数                                                                                                                       |
| `extraHeaders`    | `object`  |    | リクエストと共に送信する追加のHTTPヘッダー                                                                                                                          |
| `bedrock`         | `object`  |    | AWS Bedrockへのルーティングオプション（`awsRegion`、`awsProfile`、`bedrockBaseUrl`、`awsAuthRefresh`、`awsCredentialExport`）。[AWS Bedrock](#aws-bedrock)を参照してください。 |

### extraArgsの使用

temperatureやtop\_pなどのプロバイダー固有のパラメータを渡します：

```json theme={null}
{
  "customModels": [
    {
      "model": "your-model",
      "displayName": "Custom Model",
      "baseUrl": "https://your-provider.com/v1",
      "apiKey": "YOUR_API_KEY",
      "provider": "generic-chat-completion-api",
      "extraArgs": {
        "temperature": 0.7,
        "top_p": 0.9
      }
    }
  ]
}
```

### extraHeadersの使用

APIリクエストにカスタムHTTPヘッダーを追加します：

```json theme={null}
{
  "customModels": [
    {
      "model": "your-model",
      "displayName": "Custom Model",
      "baseUrl": "https://your-provider.com/v1",
      "apiKey": "YOUR_API_KEY",
      "provider": "generic-chat-completion-api",
      "extraHeaders": {
        "X-Custom-Header": "value",
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  ]
}
```

***

## AWS Bedrock

AnthropicまたはOpenAIのカスタムモデルをAWS Bedrock経由でルーティングするには、モデル設定に`bedrock`オブジェクトを追加します。認証情報は、標準のAWS SDKプロバイダーチェーン（環境変数、共有config/credentialsファイル、またはSSO/IAMプロファイル）を通じて解決されます。

```json theme={null}
{
  "customModels": [
    {
      "model": "anthropic.claude-sonnet-4-5-20250929-v1:0",
      "displayName": "Sonnet 4.5 [Bedrock]",
      "provider": "anthropic",
      "apiKey": "not-used-for-bedrock",
      "bedrock": {
        "awsRegion": "${AWS_REGION}",
        "awsProfile": "${AWS_PROFILE}"
      }
    }
  ]
}
```

### Bedrockフィールド

| フィールド                 | タイプ      | 説明                                                                                            |
| --------------------- | -------- | --------------------------------------------------------------------------------------------- |
| `awsRegion`           | `string` | Bedrockリクエスト用のAWSリージョン。省略可能で、省略時はDroidがAWSのデフォルトリージョンチェーンにフォールバックします。`${VAR_NAME}`補間をサポートします。 |
| `awsProfile`          | `string` | 認証情報と（最終手段として）リージョンを解決するためのAWSプロファイル名。`${VAR_NAME}`補間をサポートします。                                |
| `bedrockBaseUrl`      | `string` | Bedrockエンドポイントを明示的に上書きします。完全なURL、またはそれに展開される`${VAR_NAME}`参照を指定できます。                           |
| `awsAuthRefresh`      | `string` | リクエスト前にAWS認証情報を更新するために実行されるシェルコマンド。                                                           |
| `awsCredentialExport` | `string` | 出力を通じてリクエスト環境にAWS認証情報をエクスポートするシェルコマンド。                                                        |

### 環境変数補間

`apiKey`と同様に、`awsRegion`、`awsProfile`、`bedrockBaseUrl`フィールドは`settings.json`/`settings.local.json`内で`${VAR_NAME}`参照をサポートし、パース時にワークスペースごとに展開されます。これにより、一元配布された単一の`customModels`設定でも、各環境で正しい値に解決できます。

```json theme={null}
{
  "bedrock": {
    "awsRegion": "${AWS_REGION}"
  }
}
```

参照された変数が設定されていない場合、Droidは`${VAR_NAME}`という文字列をそのままAWSに送信する代わりに、不足している変数名を明示したわかりやすいエラーですぐに失敗します。

<Note>
  `awsAuthRefresh`と`awsCredentialExport`は**設定パーサーでは展開されません**。これらはシェル経由で実行されるため、それらのコマンド内の`${VAR}`は子プロセス環境に対して実行時にシェルが置換します。
</Note>

### リージョン解決

`awsRegion`を省略した場合、Droidは次の順序でAWSのデフォルトチェーンを使ってリージョンを解決します。

1. `AWS_REGION`
2. `AWS_DEFAULT_REGION`
3. `~/.aws/config`内で解決されたAWSプロファイルに設定された`region`

これらのいずれでもリージョンが提供されない場合、Droidは暗黙のデフォルトを使わず、明確なエラーですぐに失敗します。これにより、リクエストがワークスペースで選択していないリージョンを誤ってターゲットにすることを防ぎます（VPCエンドポイントのリージョンアフィニティにとって重要です）。

***

## プロバイダーの理解

FactoryはAPI互換性を決定する3つのプロバイダータイプをサポートしています：

| プロバイダー                        | API形式                                | 使用目的                                                               | ドキュメント                                                                             |
| ----------------------------- | ------------------------------------ | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------- |
| `anthropic`                   | Anthropic Messages API (v1/messages) | 公式APIまたは互換プロキシ上のAnthropicモデル                                       | [Anthropic Messages API](https://docs.claude.com/en/api/messages)                  |
| `openai`                      | OpenAI Responses API                 | 公式APIまたは互換プロキシ上のOpenAIモデル。GPT-5やGPT-5-Codexなどの最新モデルに必要。            | [OpenAI Responses API](https://platform.openai.com/docs/api-reference/responses)   |
| `generic-chat-completion-api` | OpenAI Chat Completions API          | OpenRouter、Fireworks、Together AI、Ollama、vLLM、およびほとんどのオープンソースプロバイダー | [OpenAI Chat Completions API](https://platform.openai.com/docs/api-reference/chat) |

<Warning>
  Factoryは主要モデルでのDroidの性能を継続的に検証していますが、すべてのカスタムモデルがそのまま動作することは保証できません。公式API経由でアクセスするAnthropicおよびOpenAIモデルのみが完全にテストされ、ベンチマークされています。
</Warning>

<Note>
  **モデルサイズに関する考慮事項**: 300億パラメータ未満のモデルは、エージェント型コーディングタスクで大幅に低い性能を示しています。これらの小型モデルは実験や学習には役立ちますが、本番のコーディング作業や複雑なソフトウェアエンジニアリングタスクには一般的に推奨されません。
</Note>

***

## プロンプトキャッシング

Droid CLIは利用可能な場合にプロンプトキャッシングを自動的に使用してAPIコストを削減します：

* **公式プロバイダー（`anthropic`、`openai`）**：Factoryは公式APIを通じてプロンプトキャッシングの使用を試みます。キャッシング動作は各プロバイダーの実装と要件に従います。
* **汎用プロバイダー（`generic-chat-completion-api`）**：プロンプトキャッシングサポートはプロバイダーによって異なり、保証されません。一部のプロバイダーはキャッシングをサポートする場合もあれば、そうでない場合もあります。

### プロンプトキャッシングの確認

カスタムモデルでプロンプトキャッシングが正しく動作しているかを確認するには：

1. カスタムモデルで会話を実行
2. Droid CLIで`/cost`コマンドを使用してコスト内訳を表示
3. 出力でキャッシュヒット率と節約額を確認

期待されるキャッシング節約が表示されない場合は、プロバイダーのプロンプトキャッシングサポートと要件についてのドキュメントを参照してください。

***

## クイックスタート

特定の設定例を表示するには、左ナビゲーションからプロバイダーを選択してください：

* **[Baseten](/jp/cli/byok/baseten)** - カスタムモデルのデプロイと提供
* **[DeepInfra](/jp/cli/byok/deepinfra)** - オープンソースモデル向けの費用対効果の高い推論
* **[Fireworks AI](/jp/cli/byok/fireworks)** - オープンソースモデル向けの高性能推論
* **[Google Gemini](/jp/cli/byok/google-gemini)** - GoogleのGeminiモデルへのアクセス
* **[Groq](/jp/cli/byok/groq)** - GroqのLPU™ Inference Engineによる超高速推論
* **[Hugging Face](/jp/cli/byok/huggingface)** - HF Inference API上のモデルへの接続
* **[Ollama](/jp/cli/byok/ollama)** - ローカルまたはクラウドでのモデル実行
* **[OpenAI & Anthropic](/jp/cli/byok/openai-anthropic)** - 公式モデル用の独自APIキーの使用
* **[OpenRouter](/jp/cli/byok/openrouter)** - 単一インターフェース経由での複数プロバイダーへのアクセス

***

## カスタムモデルの使用

設定完了後、CLIでカスタムモデルにアクセスできます：

1. `/model`コマンドを使用
2. カスタムモデルはFactory提供モデルの下にある別の「カスタムモデル」セクションに表示されます
3. 任意のモデルを選択して使用開始

カスタムモデルは`displayName`で設定した名前で表示され、異なるプロバイダーと設定を簡単に識別できます。

***

## トラブルシューティング

### セレクターにモデルが表示されない

* `~/.factory/settings.json`（レガシー形式を使用している場合は`config.json`）でJSON構文を確認
* 設定変更はファイル監視により自動的に検出されます
* すべての必須フィールドが存在することを確認

### 「Invalid provider」エラー

* プロバイダーは正確に`anthropic`、`openai`、または`generic-chat-completion-api`である必要があります
* タイプミスを確認し、適切な大文字小文字を確保

### 認証エラー

* APIキーが有効で利用可能なクレジットがあることを確認
* APIキーに適切な権限があることを確認
* ベースURLがプロバイダーのドキュメントと一致することを確認

### ローカルモデルが接続できない

* ローカルサーバーが実行中であることを確認（例：`ollama serve`）
* ベースURLが正しく、必要に応じて`/v1/`サフィックスが含まれていることを確認
* モデルがローカルでプルされ/利用可能であることを確認

### レート制限またはクォータエラー

* プロバイダーのレート制限と使用クォータを確認
* プロバイダーのダッシュボードで使用量を監視

***

## 請求

* Factory のマークアップや使用料なしで、プロバイダーに直接お支払いいただきます
* プロバイダーのダッシュボードでコストと使用量を追跡
