機能の概要
このAPIは、Anthropicモデルとメッセージをやり取りするために使用され、Anthropic Messages API仕様に準拠しています。専用のプレフィックス /api/anthropic/v1/messages を使用し、複数ラウンドの対話、ストリーミング応答、ツール呼び出しなどの機能をサポートしています。
呼び出しの説明
インターフェース制約
- 呼び出し元はAPIキーを保有している必要があります。詳細については、AI APIキーの管理をご参照ください。
リクエストパス
POST {BASE_URL}/api/anthropic/v1/messages
リクエストヘッダー
名前 |
必須 |
サンプル値 |
説明 |
|---|---|---|---|
| Authorization | はい | Bearer {token} | 認証情報 |
| Content-Type | いいえ | application/json | リクエストボディの形式 |
リクエストパラメータ
Pathパラメータ
このAPIにはPathパラメータはありません。
Queryパラメータ
このAPIにはQueryパラメータはありません。
Bodyパラメータ
名前 |
型 |
必須 |
サンプル値 |
説明 |
|---|---|---|---|---|
| model | string | はい | claude-3-opus-20240229 | モデル名。サポートされているモデルについては、Anthropicモデル一覧の検索をご参照ください。 |
| max_tokens | integer | はい | 1024 | Anthropic公式で必須となっています。常に明示的に指定することを推奨します。モデルによって最大値が異なります |
| messages | array[object] | はい | [{"role": "user", "content": "Hello"}] | メッセージリスト。複数ラウンドの対話をサポートしており、各メッセージにはroleとcontentが含まれます |
| system | string または array[object] | いいえ | "You are a helpful assistant" | システムプロンプト。コンテキストや指示を提供するために使用されます |
messagesフィールドの説明
各メッセージには以下のフィールドが含まれます:
名前 |
型 |
必須 |
説明 |
|---|---|---|---|
| role | string | はい | ロール。user(ユーザー)、assistant(アシスタント)を選択可能 |
| content | stringまたはarray[object] | はい | メッセージの内容。文字列またはコンテンツブロックの配列が指定できます |
contentのコンテンツブロックタイプ:
- テキストコンテンツ:
{"type": "text", "text": "メッセージテキスト"} - 画像コンテンツ:
{"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": "..."}} - ツールの使用:
{"type": "tool_use", "id": "...", "name": "...", "input": {...}} - ツールの結果:
{"type": "tool_result", "tool_use_id": "...", "content": "..."}
実行結果
戻り値パラメータ
名前 |
型 |
説明 |
|---|---|---|
| success | boolean | リクエストが成功したかどうか |
| code | string | 戻り値コード |
| message | string | 戻り値メッセージ |
| data | object | 業務データ |
リクエスト例
基礎的なテキスト対話
curl --request POST '{BASE_URL}/api/anthropic/v1/messages' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"model": "claude-3-opus-20240229",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, Claude"
}
]
}'
複数ラウンド対話
curl --request POST '{BASE_URL}/api/anthropic/v1/messages' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"model": "claude-3-opus-20240229",
"max_tokens": 1024,
"system": "You are a helpful assistant",
"messages": [
{
"role": "user",
"content": "Hello there."
},
{
"role": "assistant",
"content": "Hi, I'\''m Claude. How can I help you?"
},
{
"role": "user",
"content": "Can you explain LLMs in plain English?"
}
]
}'
ストリーミング応答
curl --request POST '{BASE_URL}/api/anthropic/v1/messages' \
--header 'Authorization: Bearer {token}' \
--header 'Content-Type: application/json' \
--data '{
"model": "claude-3-opus-20240229",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Write a short poem"
}
],
"stream": true
}'
実行例
成功応答
{
"id": "msg_01XYZ",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello! How can I help you today?"
}
],
"model": "claude-3-opus-20240229",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 10,
"output_tokens": 8,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
}
}
ストリーミング応答イベント
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01XYZ", "type": "message", "role": "assistant", "content": [], "model": "claude-3-opus-20240229", "stop_reason": null, "usage": {"input_tokens": 10, "output_tokens": 0}}}
event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "text_delta", "text": "Hello"}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "text_delta", "text": "!"}}
event: content_block_stop
data: {"type": "content_block_stop", "index": 0}
event: message_delta
data: {"type": "message_delta", "delta": {"stop_reason": "end_turn"}, "usage": {"output_tokens": 8}}
event: message_stop
data: {"type": "message_stop"}
エラー応答
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "messages: field required"
}
}