Anthropicは、Claudeを使って構築するための2つの方法を提供しており、それぞれ異なるユースケースに適しています。
| Messages API | Claude Managed Agents | |
|---|---|---|
| 概要 | モデルへの直接的なプロンプトアクセス | マネージドインフラストラクチャ上で動作する、事前構築済みで設定可能なエージェントハーネス |
| 最適な用途 | カスタムエージェントループときめ細かな制御 | 長時間実行タスクと非同期処理 |
| 詳細情報 | Messages APIドキュメント | Claude Managed Agentsドキュメント |
このガイドでは、基本的なリクエスト、マルチターン会話、プリフィル手法、ビジョン機能など、Messages APIを使用する際の一般的なパターンについて説明します。完全なAPI仕様については、Messages APIリファレンスを参照してください。
この機能はZero Data Retention(ZDR)の対象です。組織がZDR契約を締結している場合、この機能を通じて送信されたデータは、APIレスポンスが返された後に保存されることはありません。
temperature、top_p、top_kのサンプリングパラメータは、Claude Opus 4.8を含むClaude Opus 4.7以降のモデルではサポートされていません。これらをデフォルト以外の値に設定すると400エラーが返されます。リクエストペイロードからこれらを省略し、代わりにプロンプトを使用してモデルの動作を誘導してください。移行ガイドを参照してください。
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Hello!"
}
],
"model": "claude-opus-4-8",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 12,
"output_tokens": 6
}
}Claude Opus 4.7以降のモデルでは、拒否レスポンス(stop_reason: "refusal")に、拒否をトリガーしたポリシーカテゴリを識別するstop_detailsオブジェクトも含まれます。フィールドリファレンスと処理コードの例については、停止理由の処理を参照してください。
Messages APIはステートレスであるため、常に完全な会話履歴をAPIに送信する必要があります。このパターンを使用して、時間をかけて会話を構築できます。以前の会話ターンは、必ずしも実際にClaudeから発信されたものである必要はありません。合成のassistantメッセージを使用できます。
{
"id": "msg_018gCsTGsXkYJVqYPxTgDHBU",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Sure, I'd be happy to provide..."
}
],
"model": "claude-opus-4-8",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 30,
"output_tokens": 309
}
}Claude Opus 4.8では、ユーザーターンの後に"role": "system"を持つメッセージを含めることで(配置ルールに従う必要があります)、会話の途中で新しいシステム指示を追加できます。systemメッセージはmessagesの最初のエントリにすることはできません。最初から適用される指示には、トップレベルのsystemフィールドを使用してください。
会話途中のシステムメッセージはトップレベルのsystemフィールドと同じ権限を持ちますが、メッセージ履歴の末尾に追加されるため、それより前にあるキャッシュされたプレフィックスを無効化しません。最初のターンから適用すべき指示にはトップレベルのsystemフィールドを使用し、後になって初めて関連性が生じる指示には会話途中のシステムメッセージを使用してください。
プロンプトキャッシングとの組み合わせ方を含む完全なガイドについては、会話途中のシステムメッセージを参照してください。
入力メッセージリストの最後の位置にClaudeのレスポンスの一部を事前に入力できます。これを使用してClaudeのレスポンスを形成できます。以下の例では、"max_tokens": 1を使用してClaudeから単一の多肢選択式の回答を取得しています。
プリフィルは、Claude Fable 5、Claude Mythos 5、Claude Mythos Preview、Claude Opus 4.8、Claude Opus 4.7、Claude Opus 4.6、およびClaude Sonnet 4.6ではサポートされていません。これらのモデルでプリフィルを使用したリクエストは400エラーを返します。代わりに、サポートしているモデルでは構造化出力を使用するか、システムプロンプトによる指示を使用してください。移行パターンについては移行ガイドを参照してください。
{
"id": "msg_01Q8Faay6S7QPTvEUUQARt7h",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "C"
}
],
"model": "claude-sonnet-4-5",
"stop_reason": "max_tokens",
"stop_sequence": null,
"usage": {
"input_tokens": 42,
"output_tokens": 1
}
}Claudeはリクエスト内のテキストと画像の両方を読み取ることができます。画像はbase64、url、またはfileのソースタイプを使用して提供できます。fileソースタイプは、Files APIを通じてアップロードされた画像を参照します。サポートされているメディアタイプはimage/jpeg、image/png、image/gif、image/webpです。詳細については、ビジョンガイドを参照してください。
{
"id": "msg_01EcyWo6m4hyW8KHs2y2pei5",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "This image shows an ant, specifically a close-up view of an ant. The ant is shown in detail, with its distinct head, antennae, and legs clearly visible. The image is focused on capturing the intricate details and features of the ant, likely taken with a macro lens to get an extreme close-up perspective."
}
],
"model": "claude-opus-4-8",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 1551,
"output_tokens": 71
}
}各stop_reason値を処理し、レスポンスが終了したときに何をすべきかを決定します。
Messages API内から外部サービスやAPIを呼び出すためのツールをClaudeに提供します。
Messages APIでデスクトップコンピュータ環境を制御します。
Was this page helpful?
message = anthropic.Anthropic().messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello, Claude"}],
)
print(message)message = anthropic.Anthropic().messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello, Claude"},
{"role": "assistant", "content": "Hello!"},
{"role": "user", "content": "Can you describe LLMs to me?"},
],
)
print(message)message = anthropic.Anthropic().messages.create(
model="claude-sonnet-4-5",
max_tokens=1,
messages=[
{
"role": "user",
"content": "What is latin for Ant? (A) Apoidea, (B) Rhopalocera, (C) Formicidae",
},
{"role": "assistant", "content": "The answer is ("},
],
)
print(message)import base64
import httpx
# オプション1:Base64エンコードされた画像
image_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"
image_media_type = "image/jpeg"
image_data = base64.standard_b64encode(httpx.get(image_url).content).decode("utf-8")
message = anthropic.Anthropic().messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": image_media_type,
"data": image_data,
},
},
{"type": "text", "text": "What is in the above image?"},
],
}
],
)
print(message)
# オプション2:URLで参照される画像
message_from_url = anthropic.Anthropic().messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "url",
"url": "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg",
},
},
{"type": "text", "text": "What is in the above image?"},
],
}
],
)
print(message_from_url)Claudeからスキーマ検証済みのJSON出力を確実に取得します。