たねやつの木

Photographs, Keyboards and Programming

【Ollama】Codex CLIでgpt-oss:20bを動かす!コンテキストサイズ拡張編

こんにちは、たねやつです。

ローカルLLM環境のOllamaと、自然言語でCLI操作ができるOpenAIの「Codex CLI」の組み合わせは非常に強力です。しかし、gpt-oss:20bのような比較的高性能なモデルをそのまま使おうとすると、モデルが一度に読み取れる情報量(コンテキストサイズ)が原因で、うまく動作しないことがあります。

今回はこの問題を解決し、gpt-oss:20bをCodex CLIで快適に使うまでの一連の手順を解説します。

この記事でできること

  • Codex CLIでgpt-oss:20bのような大規模モデルを動かすための具体的な設定がわかります。
  • Ollamaモデルのコンテキストサイズを拡張し、新しいモデルとして保存する方法を学べます。
  • 拡張したモデルをCodex CLIで利用する方法がわかります。

ステップ1: 前提ツールの準備

まず、必要なツールをインストールし、モデルを準備します。

Codex CLIのインストール

まだインストールしていない場合は、npm経由でグローバルにインストールします。

npm install -g @openai/codex

gpt-oss:20bモデルの準備

Ollamaでgpt-oss:20bモデルをpullしておきます。

ollama pull gpt-oss:20b

ステップ2: Ollamaでコンテキストサイズを拡張する

Codex CLIは、動作の裏側で非常に長い「システムプロンプト」をモデルに渡しています。gpt-oss:20bのデフォルトのコンテキストサイズではこのプロンプトが収まりきらないため、手動で拡張してあげる必要があります。

  1. ターミナルで以下のコマンドを実行し、対話モードを開始します。 bash ollama run gpt-oss:20b

  2. プロンプト(>>>)が表示されたら、/setコマンドでコンテキストサイズ(num_ctx)を希望の値に設定します。ここでは例として64000に設定します。

/set parameter num_ctx 64000
設定する値はご自身のPCのVRAM(グラフィックボードのメモリ)容量に応じて調整してください。
  1. 最後に、/saveコマンドで設定を反映した新しいモデルを作成します。後でどのモデルかわかりやすいように、名前にサイズを含めておくのがオススメです。
/save gpt-oss-20b-64k

これで、コンテキストサイズが64kに拡張されたgpt-oss-20b-64kという新しいモデルが作成されました。

ステップ3: Codex CLIの設定ファイルを変更する

次に、Codex CLIがこの新しいモデルを読み込むように設定ファイルを変更します。

~/.codex/config.toml (Windowsの場合は C:\Users\<ユーザー名>\.codex\config.toml) を開き、以下のように書き換えます。

ポイントは、profileに新しいモデル用のプロファイル名を指定し、[profiles.gpt-oss-20b-64k]セクションでmodelに先ほど作成したモデル名を設定する点です。

profile = "gpt-oss-20b-64k"

[model_providers.ollama]
name = "Ollama"
base_url = "http://127.0.0.1:11434/v1"

[profiles.gpt-oss-20b-64k]
model = "gpt-oss-20b-64k"
model_provider = "ollama"

ステップ4: 実行

すべての設定が完了しました。ターミナルでcodexコマンドを実行してみましょう。

codex

Codex CLIが起動したら、自然言語で指示を出してみます。

> create a file named 'hello-codex.txt'

コンテキストサイズの問題が解決されていれば、モデルはtouch hello-codex.txtのような適切なコマンドを提案し、実行してくれるはずです。

最後に

今回は、OllamaとCodex CLIを連携させ、gpt-oss:20bモデルを最大限に活用するための手順を紹介しました。

ローカルLLMのセットアップは少し手間がかかる部分もありますが、一度環境を整えてしまえば、APIキーや料金を気にすることなく、強力なAIアシスタントを自由に試すことができます。

ぜひ、ご自身の環境でもお試しください。