> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# エアギャップ化されたDevinのモデルファイル

> エアギャップ化されたDevinの接続先となるOpenAI互換モデルエンドポイントを指定するmodels.jsonファイルのスキーマリファレンスと注釈付きの使用例、およびMDLコード。

> [!NOTE]
>
> このドキュメントは、Devinの連邦政府向け導入環境を対象としています。[Devinドキュメントに戻る](/ja/get-started/devin-intro)

エアギャップ化されたDevinは、ユーザーが作成する単一のJSONファイルからモデル設定を読み込みます。モデルエンドポイントの定義元はこのファイルのみで、推論リクエストはファイルに記載されたOpenAI互換のエンドポイントに送信されます。

## 場所

| 優先順位 | ソース |
| - | - |
| 1 | `$DEVIN_MODELS_FILE` (絶対パス) |
| 2 | `/etc/devin/models.json` (Windows: `C:\ProgramData\Devin\models.json`) |

CLI、`devin models validate`、Desktopの**モデル**設定セクションは、いずれも同じ方法でファイルの場所を解決します。システムパスは通常rootが所有しているため、ユーザーごとの上書き設定には`DEVIN_MODELS_FILE`を利用してください。Windowsでは、ファイルを配置する前に[`C:\ProgramData\Devin\`へのアクセスを制限](/ja/federal/air-gapped/install#windows-lock-down-the-configuration-folder)してください。

## 完全な使用例

```json theme={null}
{
  "schema_version": 0,
  "models": [
    {
      "name": "llama-3.3-70b",
      "display_name": "Llama 3.3 70B (vLLM)",
      "base_url": "https://models.internal:8000/v1",
      "api_key": { "env": "VLLM_API_KEY" },
      "api": "chat_completions",
      "capabilities": ["parallel_tool_calls"],
      "max_context_tokens": 131072,
      "max_output_tokens": 8192,
      "default": true
    },
    {
      "name": "qwen3-vl-32b",
      "display_name": "Qwen3 VL 32B (vision)",
      "base_url": "https://gateway.internal/openai/v1",
      "api_key": { "env": "GATEWAY_API_KEY" },
      "api": "chat_completions",
      "capabilities": ["vision", "reasoning", "parallel_tool_calls"],
      "max_context_tokens": 65536,
      "max_output_tokens": 16384
    },
    {
      "name": "gpt-oss-120b",
      "display_name": "gpt-oss 120B (Responses API)",
      "base_url": "https://responses.internal:8080/v1",
      "api_key": { "env": "RESPONSES_API_KEY" },
      "api": "responses",
      "capabilities": ["reasoning"],
      "max_context_tokens": 131072
    },
    {
      "name": "llama3.1:8b",
      "display_name": "Llama 3.1 8B (Ollama)",
      "base_url": "http://localhost:11434/v1",
      "api_key": { "env": "OLLAMA_API_KEY" },
      "max_context_tokens": 32768
    }
  ]
}
```

この使用例には、すべてのフィールド、2 種類の API 対象 (`chat_completions` と `responses`) 、ループバックの `http://` エンドポイントが含まれています。これを `/etc/devin/models.json` (Windows の場合は `C:\ProgramData\Devin\models.json`) にコピーして編集してください。

## スキーマリファレンス (バージョン 0)

トップレベル:

| フィールド | 必須 | 意味 |
| - | - | - |
| `schema_version` | はい | `0` を指定する必要があります。 |
| `models` | はい | モデル項目の配列 (空は不可) 。 |

`models` の各項目:

| フィールド | 必須 | 意味 |
| - | - | - |
| `name` | はい | 一意のモデルスラッグ。ユーザーは CLI の `--model` またはセッション内の `/model` でこの値を指定して選択します。 |
| `display_name` | いいえ | メニューに表示される、人が理解しやすいラベル。デフォルトは `name` です。 |
| `base_url` | はい | OpenAI 互換エンドポイントのベース URL。`https://` を使用する必要があります。`http://` を使用できるのはループバックホスト (`localhost`、`127.0.0.0/8`、`[::1]`) の場合のみです (例: 同じマシン上で動作する vLLM や Ollama サーバー) 。 |
| `api_key.env` | はい | APIキーを保持する環境変数の**名前**。キーの値そのものは、ファイル、診断情報、Desktop の設定 UI のいずれにも表示されません。 |
| `api` | いいえ | `chat_completions` (デフォルト) または `responses`。 |
| `capabilities` | いいえ | `vision`、`reasoning`、`parallel_tool_calls` から任意に組み合わせて指定します。 |
| `max_context_tokens` | はい | 前提情報ウィンドウのサイズ (トークン数) 。0 は指定できません。 |
| `max_output_tokens` | いいえ | 出力の上限 (トークン数) 。0 は指定できず、`max_context_tokens` 以下である必要があります。 |
| `default` | いいえ | デフォルトモデルとして指定します。設定できるのは 1 項目までです。 |

スキーマは厳密に検証されます。**未定義のフィールドは拒否される**ため、タイプミスがあっても見過ごされることはなく、検証エラーになります。なお、トップレベルでエンドポイントブロックを定義したり、APIキーをインラインで記述したりすることはできません。

## APIキーの環境変数

`api_key.env` は間接参照です。エージェントは起動時に、キーを**自身のプロセス環境**から読み取ります。リストに含まれるすべてのモデルについて、この変数が**設定されている**必要があります。これは、キーを使用しないエンドポイント (Ollama や認証なしの vLLM など) でも同様です。値は空でもかまいません。設定されていない場合、エージェントは `model '<name>': API key environment variable '<VAR>' is not set` というエラーで起動に失敗します。

* **CLI:** `devin` を実行するシェル、または systemd/launchd ユニットで変数を export します。
* **Desktop:** バンドルされたエージェントは、ターミナルではなく **Desktop アプリ**の環境を継承します。`~/.zshrc` で export した変数は、通常、Dock、Finder、Spotlight から起動したアプリからは参照できません。次のいずれかの方法で変数を渡してください。
  * **推奨:** `devin.acp.agentEnv` 設定 (**設定 → Devin Local → 環境変数**、または `settings.json`) :

    ```json theme={null}
    "devin.acp.agentEnv": {
      "devin-cli": { "VLLM_API_KEY": "...", "OLLAMA_API_KEY": "ollama" }
    }
    ```

    これらの値は、エージェントの起動時にその環境へ統合されます。変更後はエージェントまたはアプリを再起動してください。ファイルがデフォルトのパスにない場合は、`DEVIN_MODELS_FILE` も同じ設定で指定します。
  * **起動環境:** macOS では、`open` はシェルの環境をアプリに渡しません。`launchctl setenv VAR value` を実行して、次回ログインまで Dock や Finder から起動したアプリで変数を参照できるようにするか、変数を export したシェルから `/Applications/Devin - Airgap.app/Contents/MacOS/` 配下の実行ファイルを直接実行してアプリを起動してください。Linux では、`.desktop` ランチャーまたは systemd のユーザー環境で変数を設定します。

エージェントが実行されるのと同じ環境で、次のように確認します:

```sh theme={null}
devin airgap doctor
```

```text theme={null}
…
pass  model 'llama-3.3-70b': API key env var  VLLM_API_KEY is set
FAIL  model 'qwen3-vl-32b': API key env var   CFG002: environment variable 'GATEWAY_API_KEY' (referenced by `api_key.env`) is not set
…
```

## ファイルを検証する

```sh theme={null}
devin models validate
```

```text theme={null}
/etc/devin/models.json: OK
```

オプション：

| オプション | 説明 |
| - | - |
| `--file <path>` | 決定されたデフォルトのファイルの代わりに、別のファイルを検証します。 |
| `--format text` (デフォルト) または `--format json` | 出力形式。 |

問題が見つかった場合は、各診断情報がその診断コードと対象のモデルとともに出力され、コマンドは 0 以外の終了コードで終了します：

```sh theme={null}
devin models validate --file ./models.json
```

```text theme={null}
./models.json: 2 problem(s) found
  MDL005 [model 'llama-3.3-70b']: duplicate model name 'llama-3.3-70b'
  MDL010 [model 'qwen3-vl-32b']: model 'qwen3-vl-32b': `base_url` must be an https:// URL (plain http:// is only allowed for loopback addresses: localhost, 127.0.0.0/8, or [::1])
```

JSON形式では、自動化用に `{"path": …, "valid": false, "diagnostics": [...]}` が返されます。`devin models validate` は有効なライセンスがなくても実行できるため、ライセンスのインストール前にファイルを準備しておけます。

## 変更の適用

モデルのバックエンドはプロセスの起動時に初期化されます。ファイルを編集したら、CLI を再起動するか、Desktop のバンドルエージェントを再起動して、新しい設定を読み込んでください。

ファイルが存在しない、または無効な場合、スタンドアロンの CLI は起動せずにエラーを出力します。Desktop のバンドルエージェントは、モデルが 1 つもない**機能制限状態**で起動します。この状態ではセッションで推論を実行できませんが、**モデル**設定セクションに `MDL` 診断情報が表示されるため、その場でファイルを修正できます。Desktop は保存前に検証を行うため、無効なファイルが書き込まれることはありません。書き込みはアトミックに行われます。また、別のユーザーが所有するファイルの置き換えは拒否されます (`MDL014`)。そのため、root が所有する `/etc/devin/models.json` は、管理者がディスク上で直接変更する必要があります。Windows では、モデルファイルを管理者が所有している場合、標準ユーザーは Desktop からモデル設定を保存できません (保存は `MDL014` で拒否されます)。保存できるのは管理者のみです。

## エラーコード

| コード | 意味 | 対処法 |
| - | - | - |
| `MDL001` | ファイルがスキーマ v0 の有効な JSON ではない (未定義のフィールドが含まれている場合も該当) | JSON を修正し、上記のスキーマ表にないフィールドを削除します |
| `MDL002` | `schema_version` がサポートされていない | `"schema_version": 0` を設定します |
| `MDL003` | `models` が空 | モデルの項目を少なくとも 1 つ追加します |
| `MDL004` | モデルの `name` が空 | すべての項目に一意の `name` を指定します |
| `MDL005` | モデルの `name` が重複している | いずれかの項目の名前を変更します |
| `MDL006` | `base_url` が空 | エンドポイントの URL を設定します |
| `MDL007` | `api_key.env` が空 | キーを格納する環境変数の名前を指定します |
| `MDL008` | `max_context_tokens` がゼロ | モデルの前提情報ウィンドウを設定します |
| `MDL009` | 複数のモデルに `default` が設定されている | `default: true` は 1 つの項目にのみ設定します |
| `MDL010` | `base_url` がホストを含む `https://` URL ではない (`http://` はループバックの場合のみ可) | `https://` を利用するか、同一ホスト上のサーバーにはループバックアドレスを利用します |
| `MDL011` | `max_output_tokens` が `max_context_tokens` を超えている | `max_output_tokens` の値を小さくします |
| `MDL012` | ファイルは存在するが読み取れない (権限の問題、または無効な UTF-8) | Devin を実行するユーザーの権限を修正し、ファイルを UTF-8 で保存します |
| `MDL013` | `max_output_tokens` がゼロ | フィールドを削除するか、正の値を設定します |
| `MDL014` | ファイルの所有者が別のユーザーであるため、Desktop がファイルを置き換えられない | 所有者としてディスク上のファイルを編集するか、`DEVIN_MODELS_FILE` で自分が所有するファイルを指定します |

`devin airgap doctor` で検出されたエンドポイントの到達性や推論に関する問題は、`NET` および `CFG` コードとして報告されます。詳しくは[エラーコード](/ja/federal/air-gapped/error-codes)を参照してください。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.