# 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://unsloth.ai/docs/jp/ji-ben/codex.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
