本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Converse API 進行推論
Converse API 僅適用於bedrock-runtime端點。
您可以使用 Amazon Bedrock Converse API 來建立對話式應用程式,以將訊息傳送 Amazon Bedrock 模型和接收來自 Amazon Bedrock 模型的訊息。例如,您可以建立聊天機器人,以維持多回合對話,並使用符合您需求的獨特角色或語氣自訂,例如實用的技術支援助理。
若要使用 Converse API,您可以使用 Converse 或 ConverseStream (用於串流回應) 操作將訊息傳送到模型。您可以將現有的基礎推論操作 (InvokeModel 或 InvokeModelWithResponseStream) 用於對話應用程式。不過,ConverseAPI 提供一致的 API,可與支援訊息的所有 Amazon Bedrock 模型搭配使用。這表示您可以編寫程式碼一次,並搭配不同的模型使用。如果模型具有唯一的推論參數,Converse API 也可讓您在模型特定結構中傳遞那些唯一參數。
您可以使用 Converse API 在應用程式中實作工具使用和防護機制。
注意
-
透過 Mistral AI 和 Meta 模型,Converse API 會將輸入內嵌在可啟用對話的模型特定提示範本。
-
限制適用於下列操作:
InvokeModel、Converse、InvokeModelWithResponseStream和ConverseStream。如需詳細資訊,請參閱 API 限制。
如需程式碼範例,請參閱下方:
-
本主題的 Python 範例:Converse API 範例
-
Java 教學課程:Bedrock 新 Converse API 的 Java 開發人員指南
-
JavaScript 教學課程:Bedrock 新 Converse API 的開發人員指南
使用 Converse API
若要使用 Converse API,您可以呼叫 Converse 或 ConverseStream 操作,將訊息傳送到模型。若要呼叫 Converse,您需要 bedrock:InvokeModel 操作的許可。若要呼叫 ConverseStream,您需要 bedrock:InvokeModelWithResponseStream 操作的許可。
請求
使用 Amazon Bedrock 執行時期端點提出 Converse 請求時,您可以包含下列欄位:
-
modelId:標頭中的必要參數,可讓您指定用於推論的資源。
-
下列欄位可讓您自訂提示:
-
訊息:用來指定提示的內容和角色。
-
系統:用來指定系統提示,以定義模型的指示或內容。
-
inferenceConfig:用來指定所有模型通用的推論參數。影響回應產生的推論參數。
-
additionalModelRequestFields:用來指定與您執行推論所用之模型所特有的推論參數。
-
promptVariables:(如果您使用提示管理中的提示) 使用此欄位來定義提示中要填入的變數,以及要填入這些變數的值。
-
-
下列欄位可讓您自訂回應的傳回方式:
-
guardrailConfig:使用此欄位來包含要套用至整個提示的防護機制。
-
toolConfig:使用此欄位來包含工具,以協助模型產生回應。
-
additionalModelResponseFieldPaths:使用此欄位指定要作為 JSON 指標物件傳回的欄位。
-
serviceTier – 使用此欄位來指定特定請求的服務層
-
-
requestMetadata:使用此欄位來包含可在使用調用日誌時篩選的中繼資料。
注意
當您搭配 Converse 或 ConverseStream 使用提示管理提示時,適用下列限制:
-
您無法包含
additionalModelRequestFields、inferenceConfig、system或toolConfig欄位。 -
如果您包含
messages欄位,會將訊息附加在提示中定義的訊息之後。 -
如果您包含
guardrailConfig欄位,則防護機制會套用至整個提示。如果您在 ContentBlock 欄位中包含guardContent區塊,防護機制只會套用至那些區塊。
展開區段以進一步了解 Converse 請求內文中的欄位:
messages
messages 欄位是 Message 物件的陣列,每個項目都會定義使用者與模型之間的訊息。Message 物件包含下列欄位:
-
角色:定義訊息是來自
user(傳送至模型的提示) 還是assistant(模型回應)。 -
內容:在提示中定義內容。
注意
Amazon Bedrock 不會存放您作為內容提供的任何文字、影像或文件。資料僅用於產生回應。
您可以在後續 Converse 請求中包含對話中的所有訊息,並使用 role 欄位來指定訊息是來自使用者或模型,以維護對話內容。
content 欄位會對應至 ContentBlock 物件的陣列。在每個 ContentBlock 中,您可以指定下列其中一個欄位 (若要查看哪些模型支援哪些區塊,請參閱模型一目了然):