# OpenAI Codex でローカル LLM を実行する方法

このガイドでは、オープンLLMをCodex CLIにローカルで接続する方法を案内します。 **完全にローカルで**。DeepSeek、Qwen、Gemmaなどを含む、OpenAI互換またはAPI互換のローカルモデル設定ならどれでも動作します。

このチュートリアルでは、 [GLM-4.7-Flash](https://open-2v.gitbook.com/url/preview/site_mXXTe/~/revisions/NYG3pIjIP3JF6zgJgfjl/models/glm-4.7-flash) （30BのMoE、エージェント機能＋コーディングモデル）を使用します。これは24GBのRAM／ユニファイドメモリデバイスにうまく収まり、Unslothを使ってLLMを自律的にファインチューニングします。 [Unsloth](https://github.com/unslothai/unsloth)。別のモデルを使いたいですか？ [任意の別のモデル](https://open-2v.gitbook.com/url/preview/site_mXXTe/~/revisions/NYG3pIjIP3JF6zgJgfjl/models/tutorials) をスクリプト内のモデル名を更新して差し替えてください。

<a href="#openai-codex-cli-tutorial" class="button primary" data-icon="openai">OpenAI Codex チュートリアル</a>

モデルの量子化には、Unslothの [Dynamic GGUFs](https://open-2v.gitbook.com/url/preview/site_mXXTe/~/revisions/NYG3pIjIP3JF6zgJgfjl/basics/unsloth-dynamic-2.0-ggufs) を使用します。これにより、できるだけ品質を保ったまま量子化されたGGUFモデルを実行できます。

使用するのは [`llama.cpp`](https://github.com/ggml-org/llama.cpp)です。これはmacOS、Linux、Windows上でLLMを実行するためのオープンソース実行環境です。その `llama-server` コンポーネントは、単一の **OpenAI互換の** HTTPエンドポイント経由でモデルを効率的に提供できます。この構成では、モデルは **ポート8001**で提供され、すべてのエージェントのツール呼び出しはその1つのエンドポイントを通じてルーティングされます。

### 📖 #1: セットアップ チュートリアル

{% stepper %}
{% step %}

#### llama.cpp をインストールする

デプロイ／Codexなどで使用するローカルLLMを提供するために、 `llama.cpp` をインストールする必要があります。正しいGPUバインディングと最大性能のために公式ビルド手順に従います。 `-DGGML_CUDA=ON` を `-DGGML_CUDA=OFF` に変更してください（GPUを持っていない場合やCPU推論を使用したい場合）。 **Apple Mac / Metal デバイスの場合**、次を設定し、 `-DGGML_CUDA=OFF` その後通常通り続けてください。Metalサポートはデフォルトで有効です。

```bash
apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev git-all -y
git clone https://github.com/ggml-org/llama.cpp
cmake llama.cpp -B llama.cpp/build \\
    -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-mtmd-cli llama-server llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp
```

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2F4DmycqgjxOz6TOQd9PLJ%2Fimage.png?alt=media&#x26;token=c94db0b5-8e4a-4043-b2a3-c68bad93213e" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### モデルをダウンロードしてローカルで使用する

モデルをダウンロードするには、 `huggingface_hub` をPythonで使用します（先に `pip install huggingface_hub hf_transfer`をインストールしてください）。我々は **UD-Q4\_K\_XL** 量子化を、サイズと精度のバランスが最良となるように使用します。すべてのUnsloth GGUFアップロードは私たちの [コレクションはこちら](https://unsloth.ai/docs/jp/meru/unsloth-model-catalog)で見つけられます。ダウンロードが止まる場合は、 [hugging-face-hub-xet-debugging](https://unsloth.ai/docs/jp/ji-ben/troubleshooting-and-faqs/hugging-face-hub-xet-debugging "mention")

{% hint style="success" %}
我々は次を使用しました： `unsloth/GLM-4.7-Flash-GGUF` が使えますが、例えば `unsloth/Qwen3-Coder-Next-GGUF` のようなものも利用できます。詳細は [qwen3-coder-next](https://unsloth.ai/docs/jp/moderu/qwen3-coder-next "mention")
{% endhint %}

```python
import os
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
from huggingface_hub import snapshot_download

snapshot_download(
    repo_id = "unsloth/GLM-4.7-Flash-GGUF",
    local_dir = "unsloth/GLM-4.7-Flash-GGUF",
    allow_patterns = ["*UD-Q4_K_XL*"],
)
```

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FxlIrQGQ0cevb1ckkSFy5%2Fimage.png?alt=media&#x26;token=b1a42562-927a-4ad2-85f8-29c2993c46aa" alt="" width="563"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Llama-server を起動する

エージェント用途で GLM-4.7-Flash をデプロイするために、我々は `llama-server`を使用します。Z.ai が推奨するサンプリングパラメータ（`temp 1.0`, `top_p 0.95`）を適用し、適切なツール呼び出しサポートのために `--jinja` を有効にします。

新しいターミナルでこのコマンドを実行してください（ `tmux` を使用するか新しいターミナルを開いてください）。以下は **RTX 4090（24GB GPU）にちょうど収まるはずです（23GBを使用）。** `--fit on` も自動オフロードしますが、パフォーマンスが悪い場合は `--ctx-size` を減らしてください。我々は `--cache-type-k q8_0 --cache-type-v q8_0` をKVキャッシュ量子化に使用し、VRAM使用量を削減しました。

```bash
./llama.cpp/llama-server \\
    --model unsloth/GLM-4.7-Flash-GGUF/GLM-4.7-Flash-UD-Q4_K_XL.gguf \\
    --alias "unsloth/GLM-4.7-Flash" \\
    --temp 1.0 \\
    --top-p 0.95 \\
    --min-p 0.01 \\
    --port 8001 \\
    --kv-unified \\
    --cache-type-k q8_0 --cache-type-v q8_0 \\
    --flash-attn on \\
    --batch-size 4096 --ubatch-size 1024 \\
    --ctx-size 131072
```

{% hint style="success" %}
また、GLM-4.7-Flash の「思考」（thinking）を無効にすると、エージェント的なコーディング用途で性能が向上する場合があります。llama.cpp で思考を無効にするには、llama-server コマンドに次を追加してください：

`--chat-template-kwargs "{\"enable_thinking\": false}"`

<img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FyKf6guCV8snRaAV16Zxc%2FG_16XLgXUAEnSWH.jpg?alt=media&#x26;token=3b557c6d-3f6f-4515-ba9f-4cc8b50bcef1" alt="" data-size="original">
{% endhint %}
{% endstep %}
{% endstepper %}

## <i class="fa-openai">:openai:</i> OpenAI Codex CLI チュートリアル

[Codex ](https://github.com/openai/codex)はOpenAIの公式コーディングエージェントで、ローカルで実行されます。ChatGPT向けに設計されていますが、カスタムAPIエンドポイントをサポートするため、ローカルLLMに最適です。 [Windows](https://developers.openai.com/codex/windows/) では、WSLを使うのが最良です。

#### **をインストールする**

**Mac（Homebrew）：**

```bash
brew install --cask codex
```

**ユニバーサル（NPM）Linux向け**

```bash
apt update
apt install nodejs npm -y
npm install -g @openai/codex
```

**設定する**

まず一度 `codex` を実行してログインと初期設定を行い、次に設定ファイルを作成または編集してください： `~/.codex/config.toml` （Mac／Linux）または `%USERPROFILE%\\.codex\\config.toml` （Windows）。

Linux／Macでは次を使います： `cat > ~/.codex/config.toml` 以下を入力：

```toml
[model_providers.llama_cpp]
name = "llama_cpp API"
base_url = "http://localhost:8001/v1"
wire_api = "responses"
stream_idle_timeout_ms = 10000000
```

プロジェクトフォルダに移動してください（`mkdir project ; cd project`）そして次を実行：

```bash
codex --model unsloth/GLM-4.7-Flash -c model_provider=llama_cpp --search
```

または任意のコードの実行を許可するには、 **（注意：これによりCodexは承認なしに好きなようにコードを作成・実行します！）**

{% code overflow="wrap" %}

```bash
codex --model unsloth/GLM-4.7-Flash -c model_provider=llama_cpp --search --dangerously-bypass-approvals-and-sandbox
```

{% endcode %}

すると次のように表示されます：

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FiTjL7DtyNg0GREwR7p54%2Fimage.png?alt=media&#x26;token=9f793df2-e91b-4631-a7c8-00e659fd1a07" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
OpenAIのCodexは次を取り除いています： `wire_api = "chat"` サポートがなくなりつつあるようです — 2026年1月29日時点ではまだ動作しています。我々はに切り替えるべきですが、 `wire_api = "responses"` 次のエラーが発生し続けます： `{"error":{"code":400,"message":"'type' of tool must be 'function'","type":"invalid_request_error"}}`
{% endhint %}

簡単なUnslothファインチューニングをインストールして実行するために、次のプロンプトを試してください：

{% code overflow="wrap" %}

```
あなたはcwdのproject/ディレクトリ内でのみ作業できます。AGENTS.mdを探さないでください—これがそれです。uvを用いた仮想環境でUnslothをインストールしてください。方法は https://unsloth.ai/docs/get-started/install/pip-install を参照してください（取得して読んでください）。その後、https://github.com/unslothai/unsloth に記載された簡単なUnslothのファインチューニング実行を行ってください。GPUは1台利用可能です。
```

{% endcode %}

そして次のように表示されます：

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2Fg2R9WPuNRNUUFnPRXE2F%2Fimage.png?alt=media&#x26;token=686f4be8-7a50-4f6b-86cb-327cec36de81" alt=""><figcaption></figcaption></figure>

さらに少し待つと、最終的に次のようになります：

<figure><img src="https://735611837-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FHTKt5sGFpkYzS8DlM9E7%2Fimage.png?alt=media&#x26;token=f4fa2e27-10d7-4c4e-8af0-448170336af9" alt=""><figcaption></figcaption></figure>
