# Comment exécuter des LLMs locaux avec OpenAI Codex

Ce guide vous expliquera comment connecter des LLMs ouverts au CLI Codex **entièrement localement**. Il fonctionne avec toute configuration locale de modèle compatible OpenAI ou API, y compris : DeepSeek, Qwen, Gemma, et plus encore.

Dans ce tutoriel, nous utiliserons [GLM-4.7-Flash](https://open-2v.gitbook.com/url/preview/site_mXXTe/~/revisions/NYG3pIjIP3JF6zgJgfjl/models/glm-4.7-flash) (un MoE 30B, modèle agentif + codage) qui tient bien sur un appareil à 24 Go de RAM/mémoire unifiée pour affiner automatiquement un LLM en utilisant [Unsloth](https://github.com/unslothai/unsloth). Vous préférez un autre modèle ? Remplacez par [n'importe quel autre modèle](https://open-2v.gitbook.com/url/preview/site_mXXTe/~/revisions/NYG3pIjIP3JF6zgJgfjl/models/tutorials) en mettant à jour les noms de modèle dans les scripts.

<a href="#openai-codex-cli-tutorial" class="button primary" data-icon="openai">Tutoriel OpenAI Codex</a>

Pour les quants de modèle, nous utiliserons Unsloth [Dynamic GGUFs](https://open-2v.gitbook.com/url/preview/site_mXXTe/~/revisions/NYG3pIjIP3JF6zgJgfjl/basics/unsloth-dynamic-2.0-ggufs) pour que vous puissiez exécuter des modèles GGUF quantifiés tout en préservant autant de qualité que possible.

Nous utiliserons [`llama.cpp`](https://github.com/ggml-org/llama.cpp), un runtime open-source pour exécuter des LLMs sur macOS, Linux et Windows. Son `llama-server` composant vous permet de servir des modèles efficacement via un seul **endpoint HTTP compatible OpenAI** . Dans cette configuration, le modèle est servi sur **le port 8001**, et tous les appels d'outils d'agent sont routés via ce seul endpoint.

### 📖 #1 : Tutoriel d'installation

{% stepper %}
{% step %}

#### Installer llama.cpp

Nous devons installer `llama.cpp` pour déployer/servir des LLMs locaux à utiliser dans Codex, etc. Nous suivons les instructions de build officielles pour des liaisons GPU correctes et des performances maximales. Changez `-DGGML_CUDA=ON` en `-DGGML_CUDA=OFF` si vous n'avez pas de GPU ou si vous voulez simplement l'inférence CPU. **Pour appareils Apple Mac / Metal**, définissez `-DGGML_CUDA=OFF` puis continuez comme d'habitude - le support Metal est activé par défaut.

```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://550366147-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 %}

#### Télécharger et utiliser des modèles localement

Téléchargez le modèle via `huggingface_hub` en Python (après installation via `pip install huggingface_hub hf_transfer`). Nous utilisons le **UD-Q4\_K\_XL** quant pour le meilleur compromis taille/précision. Vous pouvez trouver tous les uploads GGUF d'Unsloth dans notre [Collection ici](https://unsloth.ai/docs/fr/commencer/unsloth-model-catalog). Si les téléchargements se bloquent, voir [hugging-face-hub-xet-debugging](https://unsloth.ai/docs/fr/bases/troubleshooting-and-faqs/hugging-face-hub-xet-debugging "mention")

{% hint style="success" %}
Nous avons utilisé `unsloth/GLM-4.7-Flash-GGUF` , mais vous pouvez utiliser n'importe quoi comme `unsloth/Qwen3-Coder-Next-GGUF` - voir [qwen3-coder-next](https://unsloth.ai/docs/fr/modeles/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://550366147-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 %}

#### Démarrer le Llama-server

Pour déployer GLM-4.7-Flash pour des charges de travail agentives, nous utilisons `llama-server`. Nous appliquons les paramètres d'échantillonnage recommandés par Z.ai (`temp 1.0`, `top_p 0.95`) et activons `--jinja` pour un support correct des appels d'outils.

Exécutez cette commande dans un nouveau terminal (utilisez `tmux` ou ouvrez un nouveau terminal). Ce qui suit devrait **tenir parfaitement dans un GPU 24 Go (RTX 4090) (utilise 23 Go)** `--fit on` offrira également un déchargement automatique, mais si vous constatez de mauvaises performances, réduisez `--ctx-size` . Nous avons utilisé `--cache-type-k q8_0 --cache-type-v q8_0` pour la quantification du cache KV afin de réduire l'utilisation de la 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" %}
Vous pouvez également désactiver la réflexion pour GLM-4.7-Flash, ce qui peut améliorer les performances pour les tâches de codage agentives. Pour désactiver la réflexion avec llama.cpp, ajoutez ceci à la commande llama-server :

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

<img src="https://550366147-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> Tutoriel OpenAI Codex CLI

[Codex ](https://github.com/openai/codex)est l'agent de codage officiel d'OpenAI qui s'exécute localement. Bien qu'il soit conçu pour ChatGPT, il prend en charge des endpoints API personnalisés, ce qui le rend parfait pour les LLMs locaux. Pour l'installation sur [Windows](https://developers.openai.com/codex/windows/) - il est préférable d'utiliser WSL.

#### **Installer**

**Mac (Homebrew) :**

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

**Universel (NPM) pour Linux**

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

**Configurer**

Exécutez d'abord `codex` pour vous connecter et configurer les choses, puis créez ou modifiez le fichier de configuration à `~/.codex/config.toml` (Mac/Linux) ou `%USERPROFILE%\.codex\config.toml` (Windows).

Utilisez `cat > ~/.codex/config.toml` pour Linux / Mac :

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

Naviguez vers votre dossier de projet (`mkdir project ; cd project`) et exécutez :

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

Ou pour autoriser l'exécution de n'importe quel code. **(ATTENTION cela fera que Codex fera et exécutera du code comme il l'entend sans aucune approbation !)**

{% code overflow="wrap" %}

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

{% endcode %}

Et vous verrez :

<figure><img src="https://550366147-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" %}
Le Codex d'OpenAI supprime `wire_api = "chat"` le support semble-t-il - il fonctionne toujours au 29 janvier 2026. Nous devrions passer à `wire_api = "responses"` mais il continue de générer des erreurs avec : `{"error":{"code":400,"message":"'type' of tool must be 'function'","type":"invalid_request_error"}}`
{% endhint %}

Essayez cette invite pour installer et exécuter un simple finetune Unsloth :

{% code overflow="wrap" %}

```
Vous ne pouvez travailler que dans le répertoire de travail project/. Ne cherchez pas AGENTS.md - c'est celui-ci. Installez Unsloth via un environnement virtuel via uv. Voir https://unsloth.ai/docs/get-started/install/pip-install pour savoir comment (obtenez-le et lisez). Ensuite, faites une simple exécution de finetuning Unsloth décrite dans https://github.com/unslothai/unsloth. Vous avez accès à 1 GPU.
```

{% endcode %}

et vous verrez :

<figure><img src="https://550366147-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>

et si nous attendons un peu plus longtemps, nous obtenons enfin :

<figure><img src="https://550366147-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>
