View a markdown version of this page

中融合系統訊息 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

中融合系統訊息

您可以將{"role": "system", ...}訊息附加至messages陣列。這會在對話過程中新增或更新系統指示,而不會使快取的字首失效。

先前,系統指示只能透過頂層system參數提供。這可讓您在不重設先前內容的情況下更新指示。

這在模型需要隨著任務進度進行調整的代理工作流程中非常有用。範例包括引入新的限制條件任務中、重新整理授權內容,或變更工具指引以供稍後使用。

支援的模型

此功能僅適用於 Claude Opus 4.8。不需要 Beta 標頭。在不支援的模型role: "system"messages[]中包含 的請求會傳回 400 invalid_request_error

訊息欄位

欄位 類型 Description
role String 必要. 必須為 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"])