View a markdown version of this page

会話中のシステムメッセージ - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

会話中のシステムメッセージ

messages 配列に{"role": "system", ...}メッセージを追加できます。これにより、キャッシュされたプレフィックスを無効にすることなく、会話の途中でシステム手順を追加または更新できます。

以前は、システム命令は最上位systemパラメータを介してのみ提供できました。これにより、以前のコンテキストをリセットせずに手順を更新できます。

これは、タスクの進行に合わせてモデルが適応する必要があるエージェントワークフローに役立ちます。例としては、タスクの途中で新しい制約を導入したり、権限のあるコンテキストを更新したり、後からツールガイダンスを変更したりすることが挙げられます。

サポートされているモデル

この機能は Claude Opus 4.8 でのみ使用できます。ベータヘッダーは必要ありません。サポートされていないモデルrole: "system"messages[]で を含むリクエストは、 を返します400 invalid_request_error

メッセージフィールド

フィールド タイプ 説明
role 文字列 必須。system を指定してください
content テキストブロックの文字列またはリスト 必須。ユーザーまたはアシスタントメッセージと同じプレーン文字列またはコンテンツブロックを使用します。
cache_control オブジェクト オプション。最上位のシステムパラメータと同じセマンティクス。

配置ルール

{"role": "system"}メッセージmessagesには、次の配置制約があります。

  • を の最初のエントリにすることはできませんmessages。最初から適用される手順については、最上位systemフィールドを使用します。

  • サーバーツールの使用で終わるユーザーメッセージまたはアシスタントメッセージをすぐにフォローする必要があります。

  • の最後のエントリであるかmessages、アシスタントターンの後に続く必要があります。

  • 別のシステムメッセージに隣接することはできません。連続するシステムメッセージは許可されません。

これらのプレイスメントルールに違反するリクエストは、 を返します400 invalid_request_error

コンテンツルール

システムロールメッセージコンテンツは、テキストブロックのみをサポートします。イメージ、ドキュメント、ツールブロック、および引用はサポートされていません。

プレーン文字列またはコンテンツブロックcontentに設定します。この指示は、会話のその時点から適用されます。会話全体に適用する手順には最上位systemフィールドを使用し、後で関連する手順には会話中のシステムメッセージを使用します。

プロンプトキャッシュ

会話中のシステムメッセージは、プロンプトキャッシュで動作するように設計されています。リクエスト間で変更されない最後のブロックcache_controlに を配置することで、安定したプレフィックスを通常どおりにキャッシュします。次に、そのブレークポイントの後にシステムメッセージを追加します。新しい命令はキャッシュされたプレフィックスの後に表示されるため、プレフィックスハッシュは変更されず、キャッシュはヒットする可能性があります。

会話中のシステムメッセージが安定した履歴の一部になると、その後のターンでキャッシュから読み取ることができます。以前のメッセージを変更すると、その時点からキャッシュが無効になるため、以前に送信された会話中のシステムメッセージを編集または削除することは避けてください。

プロンプトキャッシュの詳細については、「モデル推論を高速化するためのプロンプトキャッシュ」を参照してください。

レスポンスの動作

レスポンスシェイプは変更されません。システムロールメッセージはレスポンスコンテンツ配列に表示されません。モデルはシステム指示を処理しますが、応答にエコーバックしません。

コード例

次の Python の例は、Amazon Bedrock で中間会話システムプロンプトを使用する方法を示しています。

import boto3 import json client = boto3.client("bedrock-runtime", region_name="us-east-1") response = client.invoke_model( modelId="us.anthropic.claude-opus-4-8", body=json.dumps({ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "system": "You are a helpful travel planning assistant.", "messages": [ {"role": "user", "content": "Help me plan a week in Paris."}, {"role": "assistant", "content": "I'd love to help! What kind of experience are you looking for?"}, {"role": "user", "content": "I want to see the major sights. What should I do on day one?"}, {"role": "system", "content": "The user has a budget of $150/day. Only suggest options that fit within this budget. Prioritize free attractions and affordable dining."} ] }) ) result = json.loads(response["body"].read()) print(result["content"][0]["text"])