最近 AI の使用頻度が大幅に増加し、Copilot は毎月中旬に制限を使い切り、Gemini Cli は毎日 Pro の制限を使い切っています。使い切った後、自分が AI から離れると非常に無能になってしまうことに気付きました。自分用に三公主を用意することを考え始め、Codex を選びましたが、副副手が 20 ドルの会員費を支払うのをためらったため、最終的に智谱の月額 20 ドルの Coding 会員を選びました(これは本当に安い...)。Codex はカスタムプロバイダーをサポートしていますが、いくつかの落とし穴があり、オンラインの情報もあまり多くないので、簡単に記録しておきます。
インストール#
インストールは非常に簡単で、基本的に 1 つのコマンドで完了します。
npm i -g @openai/codex または
brew install codex または
nix-shell -p codex
config.json の設定#
codex のデフォルト設定フォルダーは~/.codex/ にあり、オペレーティングシステムによってホームディレクトリが異なる場合があります(おそらく Windows だけが異なるでしょう)。このフォルダーには codex の設定に使用される config.json ファイルが含まれています。
まず、0.1.2504 のバージョンでは、多くのチュートリアルで config.toml の設定が機能せず、json または yaml を使用する必要があります。yaml の公式サンプルはあまり多くないので、json を使用するのが最善です。
以下は公式が提供する json のサンプルです。
{
"model": "o4-mini",
"provider": "openai",
"providers": {
"openai": {
"name": "OpenAI",
"baseURL": "https://api.openai.com/v1",
"envKey": "OPENAI_API_KEY"
},
"azure": {
"name": "AzureOpenAI",
"baseURL": "https://YOUR_PROJECT_NAME.openai.azure.com/openai",
"envKey": "AZURE_OPENAI_API_KEY"
},
"openrouter": {
"name": "OpenRouter",
"baseURL": "https://openrouter.ai/api/v1",
"envKey": "OPENROUTER_API_KEY"
},
"gemini": {
"name": "Gemini",
"baseURL": "https://generativelanguage.googleapis.com/v1beta/openai",
"envKey": "GEMINI_API_KEY"
},
"ollama": {
"name": "Ollama",
"baseURL": "http://localhost:11434/v1",
"envKey": "OLLAMA_API_KEY"
},
"mistral": {
"name": "Mistral",
"baseURL": "https://api.mistral.ai/v1",
"envKey": "MISTRAL_API_KEY"
},
"deepseek": {
"name": "DeepSeek",
"baseURL": "https://api.deepseek.com",
"envKey": "DEEPSEEK_API_KEY"
},
"xai": {
"name": "xAI",
"baseURL": "https://api.x.ai/v1",
"envKey": "XAI_API_KEY"
},
"groq": {
"name": "Groq",
"baseURL": "https://api.groq.com/openai/v1",
"envKey": "GROQ_API_KEY"
},
"arceeai": {
"name": "ArceeAI",
"baseURL": "https://conductor.arcee.ai/v1",
"envKey": "ARCEEAI_API_KEY"
}
},
"history": {
"maxSize": 1000,
"saveHistory": true,
"sensitivePatterns": []
}
}
ここには私たちが必要とする智谱プロバイダーが含まれていないため、既存のプロバイダーを削除するか、新しいプロバイダーを追加することができます。最終的な config.json ファイルは以下の通りです。
{
"model": "glm-4.5",
"approvalMode": "suggest",
"fullAutoErrorMode": "ask-user",
"notify": true,
"provider": "zhipuai",
"providers": {
"zhipuai": {
"name": "zhipuai",
"baseURL": "https://open.bigmodel.cn/api/coding/paas/v4",
"envKey": "OPENAI_API_KEY"
}
},
"history": {
"maxSize": 1000,
"saveHistory": true,
"sensitivePatterns": []
}
}
ここで注意が必要なのは、プロバイダーに openai を使用してはいけないことです。必ず zhipuai を使用すること、name も厳密に zhipuai を使用しないと 404 または 401 が発生します。envKeyの意味は、環境変数の名前を読み取ることです。実際に API を入力する必要はありません。ZHIPUAI_API_KEY を設定している場合、環境変数から ZHIPUAI_API_KEY を読み取ってそのプロバイダーの API として使用します。この設計は、異なるプロバイダーの異なるモデルを切り替えるためのものです。私たちは智谱のモデルのみを使用するので、OPENAI_API_KEY を保持しても問題ありません。
プロジェクトでの使用#
codex は起動時に環境変数を読み取るため、echo $OPENAI_API_KEY を使用して正しくキーが出力されれば、正しく使用できます。codex は.env 内の変数も読み取るため、設定方法は多くあります。以下に主流の方法を紹介します。
1. 現在のセッション (Current Session)#
この方法は現在のコマンドラインセッションでのみ有効で、ターミナルを閉じたり新しいターミナルセッションを開いたりすると、この変数は無効になります。
操作方法
Linux または macOS システムでは、export
コマンドを使用できます:
export OPENAI_API_KEY='あなたのキー'
Windows システムでは、set
コマンドを使用できます:
set OPENAI_API_KEY='あなたのキー'
適用範囲
- 一時的なテストとデバッグ:現在のターミナルセッションでスクリプトやコマンドを迅速にテストしたい場合、キーを永続的に保存したくない場合、この方法が最も便利です。
- セキュリティの考慮:デバイスが共有されている場合や、キーをファイルに長期間保存したくない場合、この方法はキーの漏洩を防ぐことができます。
2. .bashrc
または .zshrc
#
.bashrc
は Bash シェルの設定ファイルで、.zshrc
は Zsh シェルの設定ファイルです。これらのファイルは新しいターミナルセッションを開くたびに自動的に実行されます。これらのファイルにキーを追加することで、ターミナルを起動するたびにこの環境変数が自動的に読み込まれます。
操作方法
テキストエディタ(nano
やvim
など)で.bashrc
または.zshrc
ファイルを開き、ファイルの末尾に以下の行を追加します:
export OPENAI_API_KEY='あなたのキー'
保存して終了した後、source ~/.bashrc
またはsource ~/.zshrc
を実行して即座に反映させるか、ターミナルを閉じて再度開きます。
適用範囲
- 個人開発環境:デバイスの唯一の使用者であり、すべてのターミナルセッションでこのキーを使用したい場合、この方法が非常に便利です。
- 長期使用:このキーに依存するツールを頻繁に使用する場合、一度設定すれば永久に有効になり、毎回手動で入力する手間が省けます。
3. .env
ファイル#
.env
ファイルは、プロジェクトの環境変数を保存するための一般的な形式です。多くのツールやフレームワーク(Codex を含む)は、.env
ファイルから環境変数を自動的に読み込むことをサポートしています。この方法は通常、プロジェクトディレクトリにバインドされています。
操作方法
プロジェクトのルートディレクトリに.env
という名前のファイルを作成し、以下の内容を追加します:
OPENAI_API_KEY='あなたのキー'
=
の両側には通常スペースはありません。
適用範囲
- プロジェクト特有の設定:キーが特定のプロジェクトでのみ使用される場合、
.env
ファイルをプロジェクトディレクトリに置くことで設定の独立性を保ち、他のプロジェクトやグローバル環境変数との衝突を避けることができます。 - チーム協力:
.env
ファイルはテンプレートとして使用でき、チームメンバーが自分のキーを設定するのに便利です。セキュリティのため、通常は.env
ファイルを.gitignore
に追加して、キーが Git リポジトリにアップロードされるのを防ぎます。 - フレームワークとライブラリのサポート:多くの現代の開発フレームワークやライブラリ(Next.js、React、Python の
dotenv
ライブラリなど)は、.env
ファイルの読み取りをネイティブにサポートしています。
ベストプラクティス:
- もし迅速にテストしたいだけなら、現在のセッションの方法が最も簡単です。
- もし個人のコンピュータで Codex を頻繁に使用し、毎回設定したくない場合、**
.bashrc
** にキーを追加するのが最適です。 - もし特定のプロジェクト開発を行っていて、設定をプロジェクトにバインドしたい場合、**
.env
** ファイルを使用することをお勧めします。これはより安全で、一般的な方法です。