直接回答
Anthropic 公式 Python SDK の `base_url` パラメータで CodeNodex に接続し、Messages パスへ `/v1` を重複追加しないようにします。
このガイドで解決できること
Anthropic SDK のカスタム Base URL、API キー、Messages リクエスト、エラー処理を説明し、この SDK が CodeNodex CLI の自動設定対象ではないことを明確にします。
SDK をインストールして Anthropic グループのキーを準備する
Python 仮想環境に公式の anthropic パッケージをインストールし、CodeNodex の Anthropic グループに属する API キーを準備します。CodeNodex CLI の claude モードは Claude Code 用であり、任意の Anthropic SDK プロジェクトを自動変更するものではありません。
SDK プロジェクト自身で依存関係とシークレットを管理します。API キーは環境変数に保存し、リポジトリ、Notebook の出力、例外ログには書き込まないでください。
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade anthropic
export CODENODEX_API_KEY="YOUR_API_KEY"Base URL にはサイトのルートアドレスを使用する
Anthropic SDK は /v1/messages を自動で追加するため、base_url は https://token.codenodex.com とし、https://token.codenodex.com/v1 にはしません。
/v1 を重複して追加すると、最終的なリクエストが /v1/v1/messages となり、404 が返る場合があります。これは Anthropic SDK と OpenAI SDK の接続手順における最も重要なパスの違いです。
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["CODENODEX_API_KEY"],
base_url="https://token.codenodex.com",
timeout=60.0,
max_retries=2,
)最小の Messages リクエストを送信する
messages.create の呼び出しには、モデル ID、最大出力 token 数、メッセージ配列が必要です。現在のキーから実際に参照できるモデル ID を使用します。
レスポンス内容は構造化された block の配列です。すべての block がテキストであると仮定せず、最小例のように block の種別を確認してから読み取ります。
message = client.messages.create(
model="YOUR_MODEL_ID",
max_tokens=256,
messages=[
{"role": "user", "content": "用一句话解释最小权限原则。"}
],
)
for block in message.content:
if block.type == "text":
print(block.text)curl と比較して SDK のリクエストパスを確認する
SDK のリクエストが失敗した場合、curl で /v1/messages を直接呼び出し、キー、モデル、ゲートウェイプロトコルを検証します。curl が成功するのに SDK が失敗する場合は、SDK の base_url とバージョンを確認します。
比較リクエストには x-api-key、anthropic-version、JSON Content-Type が必要です。実際のキーを共有ターミナルの記録へ貼り付けないでください。
curl --fail-with-body "https://token.codenodex.com/v1/messages" -H "x-api-key: YOUR_API_KEY" -H "anthropic-version: 2023-06-01" -H "content-type: application/json" --data '{"model":"YOUR_MODEL_ID","max_tokens":64,"messages":[{"role":"user","content":"Reply OK"}]}'認証、モデル、レート制限のエラーを切り分ける
401 ではキーとグループ、404 では最初に /v1/v1/messages の重複を確認し、次にモデルを確認します。429 では残高、同時実行数、レートを、接続エラーではプロキシ、TLS、タイムアウトを確認します。
再試行するのは、回復可能なレート制限と一時的なサービスエラーだけです。認証失敗、権限不足、存在しないモデルは直ちに設定を修正し、再試行回数を増やして隠さないでください。
公式情報と検証範囲
本ガイドは公開されている公式ドキュメントを根拠にしています。コマンドや設定はクライアントのバージョンにより変わるため、実行前に参照元も確認してください。
技術検証方法を見る