コンテンツへスキップ
日本語

Messages ネイティブ対話インターフェース

Claude Messages のリクエストヘッダー、system と messages の違い、コンテンツブロック、終了理由。

Claude Code、Anthropic SDK、および Claude のネイティブコンテンツブロックを保持したいアプリケーションは POST https://1zheai.com/v1/messages を使用します。SDK Base URL には https://1zheai.com を設定します。

まずこのサイトの API キーの環境変数 ONEZHE_API_KEY を設定し、次を実行します:

bash
curl --fail-with-body --connect-timeout 10 --max-time 120 \
https://1zheai.com/v1/messages \
-H "x-api-key: $ONEZHE_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 256,
"system": "请用简短的中文回答。",
"messages": [{"role": "user", "content": "什么是域名解析?"}]
}'
フィールド型使用方法
modelstring必須。API キーで利用可能な Claude モデルを選択
max_tokensinteger必須。出力上限。選択したモデルの制限に合わせて設定
messagesarray必須。時系列順に user と assistant のメッセージを送信
systemstring またはコンテンツブロックの配列任意。システム指示はトップレベルに置き、role: system メッセージは使用しない
streamboolean任意。コンテンツブロックの差分をストリーミングで読み取る
toolsarray任意。ツール名、用途、入力スキーマを宣言

thinking、キャッシュ制御、beta パラメータは、具体的なモデルと上流のサポート状況によります。まず通常のテキストで検証し、必要に応じて追加してください。すべてのモデルを同じパラメータ群として扱わないでください。

返される content は配列であり、テキスト、ツールリクエスト、その他のコンテンツブロックが同時に含まれる場合があります。無条件に content[0].text を読み取らないでください。たとえば Anthropic Python SDK を使用する場合:

python
for block in message.content:
if block.type == "text":
print(block.text)

ここでの message は Anthropic SDK チュートリアル の client.messages.create(...) から取得しています。

stop_reasonアプリケーションでの処理
end_turn今回の回答が終了
max_tokens出力が上限で打ち切られており、完全な回答として扱えない
tool_useツールリクエストを確認し、許可されたツールを実行して結果を返送
その他の値レスポンスを保持し、選択したモデルのプロトコルに従って処理。テキスト完了とは限らないと仮定しない

ツール呼び出しループでは、まず完全な assistant コンテンツブロックを履歴に追加し、次に user コンテンツ内の tool_result で結果を返送します。tool_use_id は元のリクエストに対応していなければなりません。ツールリクエストをそのまま通常のテキストに変換しないでください。

毎回、保持する必要のある履歴を送信してください。インターフェース自体はアプリケーションの代わりに会話を保存しません。ストリーミングでは message_stop がメッセージの終了を示します。部分的なテキストを受信しただけではリクエストが完了したことを意味しません。詳細はストリーミング出力 を参照してください。

プロトコルの詳細は Anthropic Messages 使用説明 を参照してください。このサイトの拡張パラメータが利用可能かどうかは、モデルカタログと実際のレスポンスによります。