モデルを選ぶ
モデルカタログの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-prodeepseek-v4-flash
Claudeモデルは2026年10月18日から再び利用できます。 切り替える前に、下の「Claudeモデルの制限」を読んでください。詳細はお知らせにあります。
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キーを作成します。課金方式は、従量優先(推奨。コンソールの表示は「按量优先」)または従量課金(「按量计费」)にしてください。作成したキーは、ターミナルで環境変数に設定します。- cURL
- Python
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 イベントで終わります。
- cURL
- Python
-N を付けると、cURLの出力バッファリングが無効になり、イベントが届くたびに表示されます。- ブロックの
indexごとにtext_deltaを連結すると、回答を再構成できます。 - thinkingとツールの入力は別のdeltaタイプで届きます。ストリームに
pingイベントが含まれることもあるため、扱わないイベントタイプは読み飛ばしてください。 - Pythonの
text_streamはテキストだけを返し、message_stopのあとで終了します。 message_stopの前に接続が閉じた場合は、回答が途中で終わったものとして扱ってください。
ツールを使う
tools 配列で定義したツールは、LaoZhang APIではなく、お使いのアプリケーションで実行されます。回答が stop_reason: "tool_use" で止まったら、次の手順で進めます。
- 各
tool_useブロックのid、name、inputを読み取る。 - 対応する関数を、自分のコードで実行する。
- アシスタントのターンをそのまま付けて、次のリクエストを送る。続けて、呼び出しごとに1つの
tool_resultブロックを持つuserターンを追加する。tool_use_idは、対応する呼び出しのidと一致させる。
messages 配列は、次のようになります。
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を自動的に再試行します。