直接回答
SDK のソースコードを変更せず、公式クライアントの `base_url` と `api_key` パラメータだけで CodeNodex の OpenAI 互換エンドポイントを呼び出します。
このガイドで解決できること
Python プロジェクト向けに、最小限で再現可能かつ本番運用できる CodeNodex 接続手順を提供し、API キー、タイムアウト、再試行、例外処理の境界を明確にします。
公式 SDK をインストールして環境変数を設定する
プロジェクトの仮想環境に公式の openai パッケージをインストールします。CodeNodex CLI は Python SDK のクライアント設定を提供せず、プロジェクトの依存関係も変更しません。
キーは環境変数またはデプロイ先のシークレット管理に保存し、Git へコミットしないでください。変数名はプロジェクト独自の CODENODEX_API_KEY を使用し、コードから明示的に読み取れます。
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade openaiexport CODENODEX_API_KEY="YOUR_API_KEY"base_url を指定してクライアントを初期化する
OpenAI の初期化時に base_url を https://token.codenodex.com/v1 に設定します。SDK はこの URL に Responses、Models などのリソースパスを連結します。
同時にリクエストのタイムアウトと回数を制限した再試行を設定します。パラメータをクライアント初期化にまとめると、テスト環境と本番環境で異なる設定を管理しやすくなります。
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["CODENODEX_API_KEY"],
base_url="https://token.codenodex.com/v1",
timeout=60.0,
max_retries=2,
)Responses API リクエストを送信する
responses.create で最小のテキストリクエストを送信します。model は現在のキーから参照できるモデル ID に置き換えます。不明な場合は先に client.models.list() を呼び出してください。
output_text から結合済みのテキストを取得できます。構造化イベントやストリーミングの増分が必要になってから、公式 SDK の API に沿って拡張します。
response = client.responses.create(
model="YOUR_MODEL_ID",
input="用一句话解释幂等性。",
)
print(response.output_text)接続エラーと HTTP エラーを明示的に処理する
SDK はネットワーク接続エラーと 2xx 以外の HTTP ステータスを区別します。エラー種別、ステータスコード、request ID は記録しますが、完全な認証ヘッダーや機密性の高いユーザー内容は記録しません。
どのエラーを再試行できるかは、アプリケーション層で決めます。認証失敗や存在しないモデルは、リクエストを繰り返しても自動復旧しません。
from openai import APIConnectionError, APIStatusError
try:
response = client.responses.create(
model="YOUR_MODEL_ID",
input="返回 ok",
)
except APIConnectionError as exc:
print(f"network error: {exc}")
except APIStatusError as exc:
print(f"http status: {exc.status_code}")
print(f"request id: {exc.request_id}")本番導入前の検証を完了する
モデル一覧、最小の Responses リクエスト、例外経路のテストをそれぞれ実行します。デプロイ環境では、環境変数の注入、DNS、TLS、リクエストタイムアウトも検証します。
404 では base_url に /v1 がない、または重複していないかを確認し、モデル ID を照合します。401 ではキーをローテーションし、429 では残高、同時実行数、呼び出し頻度を確認します。
client.models.list()から現在のキーで利用できるモデルが返る。- 最小の Responses リクエストが完全なテキストを出力する。
- エラーログに API キーや Authorization Header が含まれない。
- デプロイ環境では、ソースコードの定数ではなくシークレット注入を使用する。
公式情報と検証範囲
本ガイドは公開されている公式ドキュメントを根拠にしています。コマンドや設定はクライアントのバージョンにより変わるため、実行前に参照元も確認してください。
技術検証方法を見る