メインコンテンツへスキップ
Claudeプロトコルは、AnthropicのMessages API形式です。Anthropic SDKやClaude Codeは、ベースURLを変更し、LaoZhang APIのキーを使うだけで接続できます。
アプリケーションがOpenAI SDKを使っている場合は、代わりにOpenAIプロトコルを使ってください。以下のモデルは、どちらの形式でも呼び出せます。2つの形式はリクエストとレスポンスの構造が異なるため、クライアントごとにどちらか一方を選びます。

モデルを選ぶ

モデルカタログのEndpoints列にAnthropic Messagesが含まれるモデルを使います。2026年10月18日時点の公開価格では、次のモデルが該当します。
  • Claudeモデル:claude-sonnet-5-5、claude-opus-5-5 など11種類。default トークングループで掲載されています。全モデルと価格は、モデルカタログのAnthropicのセクションを参照してください。
  • glm-5.2:このページの例で使います。default トークングループで掲載されており、このプロトコルでは公式のMessages APIとほぼ同じように動作します。
  • deepseek-v4-pro
  • deepseek-v4-flash
Claudeモデルは2026年10月18日から再び利用できます。 切り替える前に、下の「Claudeモデルの制限」を読んでください。詳細はお知らせにあります。
モデルIDは、製品名やBedrock、Vertex AIのIDから組み立てずに、カタログまたはコンソールの料金ページから正確にコピーしてください。

Claudeモデルの制限

Claudeモデルは、ストリーミング、ツール使用、adaptive thinking、5分と1時間のプロンプトキャッシュ、画像入力に対応しています。Anthropic自身のAPIとは、次の点が異なります。
  • 出力の長さ: 1回のレスポンスは32,768トークンが上限です。これより大きい max_tokens は上限に切り詰められます。
  • PDFとドキュメント: document コンテンツブロックには対応していません。先にテキストを抽出し、text ブロックで送ってください。
  • サーバーツール: web_search、web_fetch、code_execution などのAnthropicのサーバーツールには対応していません。宣言したリクエストは400を返します。
  • その他のエンドポイント: /v1/messages/count_tokens、Message Batches、Files APIは利用できません。
  • 停止シーケンス: 停止シーケンスに一致したときは、stop_reason が end_turn、stop_sequence が null になります。
  • Haikuの長いプロンプト: claude-haiku-5-5 のプロンプトがキャッシュの読み書きを含めて100,000トークンを超えると、リクエスト全体がカタログの段階料金にある長いコンテキストの料金で課金されます。

メッセージを送る

トークン管理でAPIキーを作成します。課金方式は、従量優先(推奨。コンソールの表示は「按量优先」)または従量課金(「按量计费」)にしてください。作成したキーは、ターミナルで環境変数に設定します。
回答は connected になります。 SDKはAPIキーと anthropic-version ヘッダーを自動で送り、ベースURLに /v1/messages を付加します。base_url には /v1 を含めないでください。 システムプロンプトは、system ロールのメッセージではなく、トップレベルの system フィールドに指定します。 messages は user と assistant のターンが交互に並びます。会話を続けるには、これまでのターンに続けて新しい user メッセージを送ります。

レスポンスを読み取る

読み取るフィールドだけを残したレスポンスの例です。
content はブロックのリストで、1つのレスポンスに複数のブロックが入ることがあります。content[0] がテキストだと決めつけず、各ブロックを type で判断して読み取ってください。 stop_reason は、回答が終わった理由を示します。
  • end_turn:回答が完了した。
  • max_tokens:出力の上限で途中で切れた。
  • tool_use:モデルがツールの結果を待っている。
トークン数は usage に入ります。リクエストごとの課金額は呼び出しログで確認できます。

レスポンスをストリーミングする

"stream": true を追加すると、回答をserver-sent eventsとして受け取れます。 テキストは、delta.type が text_delta の content_block_delta イベントで届き、ストリームは message_stop イベントで終わります。
-N を付けると、cURLの出力バッファリングが無効になり、イベントが届くたびに表示されます。
ストリーミングのレスポンスは、次の順序で届きます。必要なフィールドだけに省略しています。
ストリームを読み取るときの注意点です。
  • ブロックの index ごとに text_delta を連結すると、回答を再構成できます。
  • thinkingとツールの入力は別のdeltaタイプで届きます。ストリームに ping イベントが含まれることもあるため、扱わないイベントタイプは読み飛ばしてください。
  • Pythonの text_stream はテキストだけを返し、message_stop のあとで終了します。
  • message_stop の前に接続が閉じた場合は、回答が途中で終わったものとして扱ってください。

ツールを使う

tools 配列で定義したツールは、LaoZhang APIではなく、お使いのアプリケーションで実行されます。回答が stop_reason: "tool_use" で止まったら、次の手順で進めます。
  1. 各 tool_use ブロックの id、name、input を読み取る。
  2. 対応する関数を、自分のコードで実行する。
  3. アシスタントのターンをそのまま付けて、次のリクエストを送る。続けて、呼び出しごとに1つの tool_result ブロックを持つ user ターンを追加する。tool_use_id は、対応する呼び出しの id と一致させる。
この続きのリクエストの messages 配列は、次のようになります。
次のループは、Python SDKでやり取り全体を実行します。天気を返す関数を宣言し、モデルから求められたらローカルで実行して、結果を返します。モデルがテキストで回答するまで繰り返します。
続きのリクエストにも毎回同じ tools を送り、アシスタントのターンは返ってきたとおりに保持してください。 web_search_* や code_execution_* などのAnthropicのサーバーツールは、ゲートウェイでは実行されません。Claudeモデルは、これらを宣言したリクエストを400エラーで拒否します。 それ以外のモデルは、検索やコードを実行せず、通常の tool_use ブロックとして呼び出しを返します。この呼び出しはクライアントツールと同じようにアプリケーション側で処理するか、これらのツールをリクエストから外してください。

Claude Codeで使う

Claude Codeは、Anthropic Messages形式を使います。
  • ANTHROPIC_BASE_URL を https://api.laozhang.ai(/v1 を付けないホストのルート)に設定します。
  • Endpoints にAnthropic Messagesが含まれるモデルを選びます。claude-sonnet-5-5 や glm-5.2 などで、どちらも default トークングループで利用できます。
  • default グループで、課金方式が従量優先のトークンを使います。以前に Claude Code グループ(旧claude_code)で作成したトークンは引き続き使えます。新しいトークンにこのグループは必要ありません。
~/.claude/settings.json の完全な例は、LaoZhang APIでのClaude Code設定を参照してください。Claude Codeが400 ValidationExceptionを返す場合は、Claude Codeの400 ValidationExceptionの対処を参照してください。

トラブルシューティング

  • 401: Authorization: Bearer ヘッダーを確認してください。使うのは、アカウントのAccessTokenではなく、トークン管理で作成したモデル用のAPIキーです。
  • max_tokens に触れた400: max_tokens を追加してください。Chat Completionsと違い、Messagesのリクエストでは必須です。
  • リクエストURLに /v1/v1/messages が含まれる: SDKのベースURLが /v1 で終わっています。https://api.laozhang.ai に設定してください。
  • 404、またはモデルが見つからない: モデルIDを正確に確認し、モデルカタログで、お使いのトークングループにAnthropic Messagesが表示されているか確認してください。
  • Claude Codeが 400 ValidationException または Extra inputs are not permitted を返す: Claude Codeの400 ValidationExceptionの対処に従ってください。
  • Claudeモデルで web_search などのサーバーツールを宣言して400になる: tools からサーバーツールを外してください。検索はアプリケーション側で実行し、結果を tool_result ブロックとして返します。
  • upstream-busyのメッセージ付きの529: ピーク時に処理能力が不足しています。少し待ってから再試行してください。Anthropic SDKは、既定で529を自動的に再試行します。
タイムアウトや5xxエラーが出たときは、再送する前に呼び出しログを確認してください。Pythonの例では、再試行のタイミングをアプリケーション側で決められるように、自動リトライを無効にしています。

関連ドキュメント