Codex 用ローカル大規模モデル API の使用チュートリアル: Ollama、LM Studio、および vLLM

Codex でローカルの大規模モデルを使用する方法を紹介します。まず、Codex OSS モードを使用して Ollama または LM Studio に接続します。また、高度なベース URL 構成、検証手順、および vLLM などの OpenAI 互換 API の一般的な制限について説明します。

Codex でローカルの大規模モデルを使用する場合は、OpenAI 互換アドレスをプロジェクト構成に直接接続しないでください。現在、Codex には、より信頼性の高いローカル モデル パス、OSS モード があります。 Ollama または LM Studio をローカル プロバイダーとして選択することをネイティブにサポートします。

最も短いコマンドは次のとおりです。

1
codex --oss --local-provider ollama

または:

1
codex --oss --local-provider lmstudio

vLLM、LiteLLM、またはその他の OpenAI 互換ゲートウェイを自分でデプロイする場合は、openai_base_url の高度な構成を調べることができます。ただし、このパスでは、サービスが Codex で必要な API 動作と完全に互換性がある必要があり、トラブルシューティングのコストが高くなります。組み込み OSS モードと混同しないでください。

まず正しいルートを選択してください

あなたのローカルサービス 推奨接続方法 誰に適しているか
オラマ codex --oss --local-provider ollama ローカル モデルをできるだけ早く実行したい
LMスタジオ codex --oss --local-provider lmstudio LM Studio でダウンロードおよび管理されたモデル
vLLM / 自社構築OpenAI対応サービス ユーザーレベル openai_base_url API の互換性、認証、モデル ルーティングを理解している上級ユーザー

一般の個人ユーザーは、最初に Ollama または LM Studio を実行することをお勧めします。 Codex の --oss は、指定されたローカル OSS プロバイダーを使用します。 --local-provider が渡されず、デフォルト値が設定されていない場合、対話型 CLI は選択を求めるプロンプトを表示しますが、codex exec は直接エラーを報告します。

解決策 1: Ollama を使用して Codex に接続する

1. Ollama とモデルが利用可能であることを確認します

まず、Ollama が利用可能かどうかを確認します。

1
2
ollama -v
ollama ls

モデルがない場合は、まずローカル ビデオ メモリに適したコードまたは一般的なモデルをダウンロードします。次に例を示します。

1
ollama pull qwen3:8b

個別にテストします。

1
ollama run qwen3:8b

モデルを Ollama で実行できない場合は、まずビデオ メモリ、ドライバー、モデルのダウンロード、または Ollama サービスの問題を解決します。トラブルシューティングのために Codex に直接アクセスしないでください。

2. 使い捨てローカルモデル

プロジェクトディレクトリで実行します。

1
codex --oss --local-provider ollama

次に、通常どおりタスクを入力します。例:

1
阅读这个仓库的 README,列出本地启动步骤,不要修改文件。

これは現在のセッションにのみ影響します。一時的に通常の Codex に戻したい場合は、--oss なしで起動してください。

3. Ollama をデフォルトのローカルプロバイダーとして設定します

ローカル モデルを頻繁に使用する場合は、ユーザー レベル Codex 構成ファイルに次の内容を追加します。

1
oss_provider = "ollama"

その後、直接実行できます。

1
codex --oss

User-level configuration of Codex is usually located under CODEX_HOME, and the default is ~/.codex/config.toml;一般的な Windows パスは次のとおりです。

1
C:\Users\你的用户名\.codex\config.toml

変更後にコーデックスを再度開きます。複雑な構成がある場合は、config.toml をバックアップしてから、この行のみを追加してください。元のサンドボックス、MCP、スキル、その他の設定を上書きしないでください。

オプション 2: LM Studio を使用して Codex に接続する

LM Studio は、GGUF モデルをダウンロードし、グラフィカル インターフェイスを使用してコンテキストと GPU オフロードを調整したい人に適しています。

1. LM Studioでローカルサービスを開始し、モデルをロードします。

LM Studio の 開発者 ページに入り、サーバーを起動し、チャット/指示モデルがロードされていることを確認します。 LM Studio のローカル API は、デフォルトで次の場所でリッスンします。

1
http://localhost:1234

最初にモデル サービスを確認できます。

1
curl http://localhost:1234/v1/models

ここで返されるのは、LM Studio 側のモデルのステータスです。これは、サービスとモデルの両方の準備ができていることを確認するのに役立ちます。

2. Codex OSS モードで開始します

1
codex --oss --local-provider lmstudio

長期的なデフォルト構成:

1
oss_provider = "lmstudio"

次に、次を使用します。

1
codex --oss

LM Studio のモデル コンテキストの長さ、GPU オフロード、推論パラメータは引き続き LM Studio によって管理されます。 Codex の応答が遅い場合は、まずモデル サイズがビデオ メモリを超えていないか、コンテキストの設定が長すぎないか、他のローカル推論サービスが同時に GPU を占有しているかどうかを確認します。

オプション 3: vLLM などの OpenAI 互換 API の高度な接続方法

vLLM、LiteLLM、エンタープライズ ゲートウェイ、および一部のエージェントは、OpenAI 互換の /v1 インターフェイスを提供します。 Codex の公式構成リファレンスでは、組み込みの openai プロバイダーのベース アドレスをオーバーライドする openai_base_url が提供されています。

概略構成:

1
openai_base_url = "http://127.0.0.1:8000/v1"

サービスが LAN ホスト上にある場合:

1
openai_base_url = "http://192.168.1.20:8000/v1"

この道路には注意すべき境界線が 4 つあります。

  1. **ユーザー レベル ~/.codex/config.toml でのみ書き込まれます。 ** Codex は、リポジトリがマシンのモデル プロバイダーを密かに変更するのを防ぐために、プロジェクト .codex/config.tomlopenai_base_urlmodel_provider、および model_providers を無視します。
  2. サービスは「/v1/chat/completions」だけあれば十分ではありません。 Codex 固有のワークフローには、モデル、ストリーミング応答、ツール呼び出し、またはその他の互換性のある動作が必要な場合があります。
  3. 認証はゲートウェイによって決定されます。ゲートウェイにベアラー トークンが必要な場合は、ゲートウェイと Codex の現在の認証構成に従って正しく設定する必要があります。トークンをウェアハウス ファイルに書き込まないでください。
  4. これは、Codex にリストされている OSS の公式のローカル プロバイダーではありません。例外が発生した場合は、まず Ollama または LM Studio を使用して Codex OSS モードを確認し、次にゲートウェイの互換性を確認します。

vLLM サービスは、最初に個別に検証できます。

1
curl http://127.0.0.1:8000/v1/models

コマンドがモデルの安定したリストを返した後にのみ、コーデックスのユーザーレベル openai_base_url のチェックが継続されます。

モデルの選び方

ローカル モデルが「使用できる」かどうかと、「公式 Codex モデルと同じくらい信頼できる」かどうかは別のことです。コード エージェントは通常、長いコンテキスト、安定したツール呼び出し、強力なコード理解、および十分に速い生成速度を必要とします。

選択するときは、少なくとも次の点に注目してください。

  • ビデオ メモリがモデルの重みと共通のコンテキストに対応できるかどうか。
  • モデルが命令/チャット モデルであるか、特殊なコード モデルであるか。
  • ファイルの変更、テスト、コマンド実行の要件に安定して準拠できるかどうか。
  • 必要なツール呼び出しまたは JSON 出力をサポートしているかどうか。
  • 長いタスクの下では、軌道から逸れたり、制約を忘れたり、不完全な修正が生じたりしやすくなりますか?

ローカル 7B/8B モデルは、ウェアハウスの参照、単純なスクリプト、ドキュメントの編成、およびローカルの変更に適しています。複数ファイルのリファクタリング、複雑なテスト修復、および長期にわたるエージェント タスクには、より高度なモデルとハードウェア要件が必要です。ローカル API に接続できるからといって、それがリスクの高い自動変更に適しているとは考えないでください。

安全に始める方法

ローカル モデルを使用して Codex を初めて実行する場合は、最初に権限を制限することをお勧めします。

1
codex --oss --local-provider ollama --sandbox read-only

まずモデルに読み取り専用タスクを完了させます。

1
分析当前仓库的目录结构,指出启动命令和测试命令。不要修改文件。

モデルがウェアハウスを理解し、出力が安定していることを確認したら、徐々にワークスペースの書き込みとテストの実行を許可します。確認ステップを保存するために、サンドボックスなしモードまたは承認スキップ モードを直接有効にしないでください。

よくある質問

1. codex exec --oss はエラーを直接報告します

通常、ローカルプロバイダーは指定されません。使用:

1
codex exec --oss --local-provider ollama "只分析当前仓库,不修改文件"

または、ユーザーレベルの構成で oss_provider を設定します。

2. Codex が Ollama または LM Studio に接続できない

まずサービスを個別に確認します。

1
2
ollama ls
curl http://localhost:1234/v1/models

次に、サービスが開始されているかどうか、モデルがロードされているかどうか、ローカル ポートがファイアウォールや他のプロセスの影響を受けているかどうかを確認します。

3. ローカルモデルは常にコードを中断する

まずタスクを減らします。分析用に読み取り専用にし、ファイルを 1 つだけ変更し、実行する前に最初に計画を示します。また、Git ブランチまたはコミット ポイントを使用して、元に戻せる状態を保存します。モデルの能力が不十分な場合、プロンプトワードの複雑さを増やしても、通常は根本的な問題を解決できません。

4. 構成は書き込まれますが、有効になりません。

プロジェクト .codex/config.toml が誤って書き込まれていないか確認してください。プロバイダー関連のキーはユーザーレベルの ~/.codex/config.toml で書き込む必要があります。変更後にCodexを再起動してください。

要約する

ローカルの大規模モデルを Codex で使用できるようにするには、優先順位を次のようにする必要があります。

1
2
3
4
5
Ollama / LM Studio 跑通模型
-> codex --oss --local-provider ollama|lmstudio
-> 只读任务验证
-> 设置 oss_provider 作为默认
-> 再考虑 vLLM 等 OpenAI 兼容网关

ほとんどのユーザーにとって、--oss は最も短く、最も制御しやすいエントリです。 openai_base_url は、互換性のあるゲートウェイと運用およびメンテナンス要件がすでにある高度なシナリオに適していますが、最初にユーザー レベルで構成し、インターフェイスの互換性を確認する必要があります。

参照:

LM Studio の OpenAI 互換ローカル API 詳細

LM Studio は、ローカルにロードされたモデルを OpenAI 互換インターフェイスに変換できます。既存のプロジェクトの場合、通常、呼び出しロジックを書き直す必要はありません。OpenAI クライアントの base_url を LM Studio のローカル アドレスに変更し、次に model を LM Studio のモデル識別子に変更します。

最も一般的に使用されるアドレスは次のとおりです。

1
http://localhost:1234/v1

既存の Python、JavaScript、C#、またはその他の OpenAI クライアント コードにプラグインするのに適しています。以下の手順は、「最初に実行してからプロジェクトにアクセスする」という順序になっています。

まず結論から話しましょう

LM Studio の OpenAI 互換インターフェイスを使用するには、次の 4 つの手順を完了するだけで済みます。

  1. LM Studio の 開発者 ページでローカル サーバーを起動します。
  2. チャットモデルをロードします。
  3. http://localhost:1234/v1/models をリクエストし、モデル ID を確認します。
  4. クライアント base_urlhttp://localhost:1234/v1 に変更します。

最小限の Python 記述:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:1234/v1",
    api_key="lm-studio",
)

response = client.chat.completions.create(
    model="你的 LM Studio 模型 ID",
    messages=[
        {"role": "user", "content": "用一句话解释什么是 KV cache。"}
    ],
)

print(response.choices[0].message.content)

api_key="lm-studio" は、認証が有効になっていない場合の OpenAI SDK の単なるプレースホルダー値です。 LM Studio サービス設定で API トークンを有効にしている場合は、実際のトークンに変更する必要があります。

ステップ 1: LM Studio ローカルサーバーを起動する

LM Studio を開き、開発者 ページに入り、サーバーの開始 スイッチをオンにします。デフォルトのサービスは以下をリッスンします。

1
http://localhost:1234

LM Studio コマンド ライン ツールを使用して以下を開始することもできます。

1
lms server start

lms がコンピュータで利用できない場合は、LM Studio の公式ドキュメントに従って CLI をインストールできます。

1
npx lmstudio install-cli

サービスの開始は、API ポートがリッスンしていることを意味するだけで、推論できるモデルがあることを意味するわけではありません。引き続きチャット ページまたは開発者ページでモデルをロードするか、lms load を使用してモデルをロードします。

ステップ 2: まずモデル ID を取得します

ファイル名に基づいて model パラメーターを推測しないでください。最も安定した方法は、モデルのリストをリクエストすることです。

1
curl http://localhost:1234/v1/models

Windows PowerShell は次の場合に使用できます。

1
Invoke-RestMethod http://localhost:1234/v1/models

返された data リストにはモデル識別子が含まれます。次に、リクエストで実際に返された ID を model に入力します。

この手順により、モデルがダウンロードされているがロードされていない、またはコードに記述された名前が LM Studio によって現在公開されているモデル ID と一致していないという 2 つの一般的な問題を回避できます。

ステップ 3:curl を使用してチャットの完了をテストする

最も直感的な OpenAI 互換エンドポイントを使用して最初のテストを行います。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
curl http://localhost:1234/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "你的 LM Studio 模型 ID",
    "messages": [
      {"role": "system", "content": "你是一个简洁的中文助手。"},
      {"role": "user", "content": "解释什么是向量数据库。"}
    ],
    "temperature": 0.7
  }'

成功した場合、通常、答えは次のようになります。

1
choices[0].message.content

チャット完了は、チャット モデルのプロンプト テンプレートを自動的に適用します。モデル自体がチャット/命令タイプである限り、通常、クライアント側で特別な制御トークンを手動で結合する必要はありません。

OpenAI を Python プロジェクトに置き換える方法

プロジェクトが元々 OpenAI Python SDK を使用している場合、通常は base_urlmodel の 2 つの焦点のみがあります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:1234/v1",
    api_key="lm-studio",
)

completion = client.chat.completions.create(
    model="你的 LM Studio 模型 ID",
    messages=[
        {"role": "system", "content": "你是一名 Python 助手。"},
        {"role": "user", "content": "写一个读取 JSON 文件的最小示例。"},
    ],
    temperature=0.2,
    max_tokens=500,
)

print(completion.choices[0].message.content)

この利点は、アプリケーション層が引き続き OpenAI SDK のオブジェクトと戻り形式を使用し、バックエンドがクラウド OpenAI API とローカル LM Studio の間で切り替えることができることです。

ただし、「互換性」とは、クラウド モデルのすべての機能をそのままコピーできることを意味するものではありません。ツール呼び出し、構造化出力、ビジュアル入力、推論コンテンツ、および応答 API が利用できるかどうかは、依然として LM Studio のバージョン、現在のモデルの機能、および対応するエンドポイントのサポートに依存します。

ストリーミング出力

チャット完了に stream=True を設定します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
stream = client.chat.completions.create(
    model="你的 LM Studio 模型 ID",
    messages=[{"role": "user", "content": "写一首四行小诗。"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

ストリーミング出力は、チャット インターフェイス、ターミナル ツール、および長い回答に適しています。これにより、ユーザーの待機エクスペリエンスが向上しますが、ローカル モデル自体の生成が高速化されるわけではありません。

埋め込み、レスポンス、ネイティブ REST API のいずれかを選択する方法

LM Studio の OpenAI 互換性レイヤーには、次の共通エンドポイントが含まれています。

終点 何に適しているか
/v1/models 現在利用可能なモデルを問い合わせる
/v1/chat/completions ほとんどの従来のチャット コードと互換性があります
/v1/responses 新しい OpenAI Response スタイルが必要な場合に使用します。
/v1/embeddings ベクトル化されたテキスト、RAG 取得
/v1/completions 従来のテキスト補完との互換性

LM Studio には独自のネイティブ インターフェイスもあります。現在推奨されるパスは、/api/v1/chat/api/v1/models などの /api/v1/* です。ネイティブ API は、モデルのロード/アンロード、ステートフル チャット、MCP または LM Studio 固有の機能を必要とするプロジェクトに適しています。

簡単な判断: すでに OpenAI SDK プロジェクトがある場合は、最初に /v1 を使用します。新しいプロジェクトでローカル モデルの詳細な管理が必要な場合、または LM Studio の専用機能を使用する場合は、/api/v1 を検討してください。

構造化された出力とツール呼び出し

LM Studio の OpenAI 互換性レイヤーは、対応するエンドポイントでのツール呼び出しと構造化出力をサポートしていますが、最初に次の 2 つのことを確認してください。

  1. ロードするモデルには、信頼性の高いツール呼び出し機能または JSON 出力機能が必要です。
  2. LM Studio とクライアント SDK のバージョンは十分に新しいものである必要があります。

リクエストにエラーがないからといって、モデルがスキーマに準拠した結果を安定して生成できるとは考えないでください。テストは、オンラインにする前に、実際のパラメータ、異常な分岐、および複数ラウンドのリクエストを使用して実行する必要があります。

一般的なエラーのトラブルシューティング

1. 接続が拒否された、または Connection refused

まず、開発者ページでサーバーが起動していることを確認してから、以下をテストします。

1
curl http://localhost:1234/v1/models

ここに接続できない場合は、まずポート、LM Studio がまだ実行中かどうか、またはローカル セキュリティ ソフトウェアがローカル ポートをブロックしていないかどうかを確認してください。

2. 404 Not Found

最も一般的な理由は、パスが正しく書かれていないことです。 OpenAI 互換のチャット エンドポイントは次のとおりです。

1
/v1/chat/completions

/api/v1/chat/completions ではありません。後者は、別のネイティブ API パスのセットに属します。

3. モデルが存在しないか、空のリストが返される

まず LM Studio にモデルをロードし、/v1/models が返されることを確認します。コード内の model は、実際に返された識別子を使用する必要があり、他の人のモデル名をコピーしないでください。

4. 答えられるが形式がおかしい

指示/チャット モデルの代わりに基本モデルがロードされていることを確認します。チャット テンプレートが LM Studio によって自動的に適用されていることも確認してください。ツール呼び出しと JSON 出力については、モデルが実際にその機能をサポートしていることも確認してください。

5. LANデバイスにアクセスできない

LM Studio は、開発者ページでローカル ネットワークへのサービスを構成できます。ネットワーク アクセスを有効にした後、ファイアウォール、リスニング アドレス、API トークンの設定を確認する必要もあります。認証されていないローカル モデル サービスをパブリック ネットワークに直接公開しないでください。

最小限のアクセスのチェックリスト

1
2
3
4
5
6
7
1. LM Studio Developer -> Start server
2. 加载一个 instruct/chat 模型
3. curl http://localhost:1234/v1/models
4. 客户端 base_url 改为 http://localhost:1234/v1
5. model 填实际返回的 ID
6. 用 chat/completions 跑通单轮请求
7. 再测试流式、工具调用、Embeddings 或结构化输出

最初に最小限のリクエストを実行してから、RAG、エージェント、またはエディター プラグインに接続すると、トラブルシューティングがはるかに簡単になります。

要約する

LM Studio の OpenAI 互換インターフェイスは、ローカル モデルを既存の OpenAI SDK プロジェクトに接続するのに適しています。最も重要なことは、コードの一部をコピーすることではなく、サービスが開始されていること、モデルがロードされていること、base_url/v1 を指していること、model が実際のモデル ID を使用していることを確認することです。

より詳細なローカル モデル管理、ステートフル チャット、または MCP が必要な場合は、LM Studio の /api/v1/* ネイティブ インターフェイスの方が適しています。古いプロジェクトとの迅速な互換性が目的の場合、通常は /v1/chat/completions を使用し続けるのが最も簡単です。

参照: