1. はじめに
OpenAI Codex CLI は、ターミナルから直接 AI モデルにアクセスできる便利なツールです。通常は OpenAI のモデルを利用しますが、設定を変更することで任意のプロバイダーを利用することも可能です。
特に注目したいのが、ローカルで LLM を動かせる環境「Ollama」と、OpenAI が公開したオープンウェイトモデル「gpt-oss」です。本記事では Codex CLI の柔軟性を活かし、「Ollama で gpt-oss を使う」 という最新かつ引きの強い事例を軸に、任意プロバイダー活用のポイントを解説します。
2. Codex CLIの柔軟なプロバイダー設定
Codex CLI は config.json
または config.yaml
によって利用するプロバイダーを定義します。デフォルトでは OpenAI API が設定されていますが、この仕組みを使えばクラウド API、オンプレミスのモデル、ローカル実行環境など、さまざまなプロバイダーを統合できます。
つまり、Codex CLI は単なる「OpenAI専用ツール」ではなく、共通のCLIから異なるバックエンドを切り替えられる統合クライアントとして使えるのです。
図解:プロバイダー切り替えのイメージ
3. 任意プロバイダーの追加方法
任意のプロバイダーを利用するには、設定ファイルの providers
セクションを編集します。基本構造は以下の通りです。
{
"providers": [
{
"NAME": "provider名",
"BASE_URL": "https://api.example.com/v1",
"API_KEY": "your-api-key-here",
"MODEL": "model-identifier"
}
]
}
- NAME: CLI で切り替える際に使う名前
- BASE_URL: API のエンドポイント
- API_KEY: 認証が必要な場合のキー(不要なら省略可能)
- MODEL: 呼び出したいモデル名
この仕組みを応用すれば、Ollama や社内APIを Codex CLI から直接利用できます。
4. 具体例:Ollamaでgpt-ossを使う
Ollama はローカルで LLM を簡単に動かせる環境で、OpenAI が公開したオープンモデル「gpt-oss(20B / 120B)」をサポートしています。これを Codex CLI に統合すると、最新モデルを自分のマシン上で利用できるようになります。
設定例(config.json
)
{
"providers": [
{
"NAME": "ollama-gpt-oss",
"BASE_URL": "http://localhost:11434/v1",
"API_KEY": "",
"MODEL": "gpt-oss"
}
]
}
設定例(config.yaml
)
providers:
- NAME: ollama-gpt-oss
BASE_URL: http://localhost:11434/v1
API_KEY: ""
MODEL: gpt-oss
Ollama を起動した状態で Codex CLI を実行し、--provider ollama-gpt-oss
を指定すれば、gpt-oss モデルをローカルで利用できます。
図解:Codex CLI と Ollama / gpt-oss の関係
この図は以下を示しています:
- Codex CLI は設定ファイルを通じて複数のプロバイダーを切り替え可能
-
--provider
オプションで OpenAI API か Ollama を選択できる - Ollama を経由することで gpt-oss をローカルで動かせる
5. 複数プロバイダーの使い分け
複数のプロバイダーを設定しておけば、Codex CLI から簡単に切り替えて利用できます。例えば、以下のように --provider
オプションを指定します。
OpenAI(クラウド)を利用する場合
codex --provider openai "Write a Python function to calculate Fibonacci numbers."
Ollama + gpt-oss(ローカル)を利用する場合
codex --provider ollama-gpt-oss "Write a Python function to calculate Fibonacci numbers."
図解:クラウドとローカルの使い分け
このように、同じコマンドライン操作でクラウドとローカルを切り替えられるのが Codex CLI の大きな強みです。
6. トラブルシューティング
① モデル名の不一致エラー
> codex --provider ollama-gpt-oss "Hello"
Error: model not found: gpt-oss
解決策: ollama pull gpt-oss
を実行し、設定を確認する
② メモリ不足エラー
> codex --provider ollama-gpt-oss "Summarize this text"
Error: CUDA out of memory. Tried to allocate 2.00 GiB
解決策: 量子化版を使う/ハードウェア強化/--num-ctx
を短く指定
③ API Key 設定不要時のエラー
> codex --provider ollama-gpt-oss "Test connection"
Error: invalid API key
解決策: API_KEY
を空文字にする
7. 応用編:自作プロキシで複数モデルを一元化する
Codex CLI のプロバイダー設定を「自作プロキシ」に向けると、CLI 側の設定は固定のまま、裏側で OpenAI/Ollama(gpt-oss)など複数モデルを切り替えられます。
図解:Codex CLI → 自作プロキシ → 複数モデル
簡単なTSサンプル
詳細な実装は別記事にて説明しますが、最小構成のサンプルを示します。
import { Hono } from 'hono'
const app = new Hono()
const OPENAI_API_KEY = process.env.OPENAI_API_KEY || ''
const OPENAI_BASE_URL = process.env.OPENAI_BASE_URL || 'https://api.openai.com/v1'
const OLLAMA_BASE_URL = process.env.OLLAMA_BASE_URL || 'http://localhost:11434/v1'
app.post('/v1/chat/completions', async (c) => {
const body = await c.req.json()
const model: string = body?.model || ''
const isOllama = model.includes('gpt-oss')
const upstream = isOllama ? OLLAMA_BASE_URL : OPENAI_BASE_URL
const headers: Record<string, string> = { 'content-type': 'application/json' }
if (!isOllama && OPENAI_API_KEY) headers['authorization'] = `Bearer ${OPENAI_API_KEY}`
const res = await fetch(`${upstream}/chat/completions`, {
method: 'POST',
headers,
body: JSON.stringify(body)
})
return c.body(await res.arrayBuffer(), res.status, Object.fromEntries(res.headers))
})
Codex CLI 側の設定例:
{
"providers": [
{
"NAME": "internal-proxy",
"BASE_URL": "http://localhost:8787/v1",
"API_KEY": "not-required",
"MODEL": "gpt-oss"
}
]
}
8. まとめ
Codex CLI は、OpenAI のモデルだけでなく任意のプロバイダーを柔軟に統合できる強力なツールです。特に 「Ollama × gpt-oss」 という組み合わせは、最新モデルをローカルで動かせる点で引きが強く、コスト効率や開発の自由度を大きく高めてくれます。
さらに、自作プロキシを組み合わせれば、複数のモデルや環境を一元的に管理でき、企業利用や大規模開発にも耐えうる構成が実現できます。今後はローカル/クラウドを問わず多様なモデルを Codex CLI からシームレスに扱う流れが加速していくでしょう。