本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Converse API
若要使用 Converse API,您可以呼叫 Converse
或 ConverseStream
操作,將訊息傳送至模型。若要呼叫 Converse
,您需要 bedrock:InvokeModel
操作的許可。若要呼叫 ConverseStream
,您需要bedrock:InvokeModelWithResponseStream
操作的許可。
請求
您可以透過設定 modelId
欄位來指定要使用的模型。如需 IDs Amazon Bedrock 支援的模型清單,請參閱 Amazon Bedrock 模型 IDs。
對話是使用者與模型之間的一系列訊息。您可以透過以使用者 (使用者角色) 身分將訊息傳送至模型來開始對話。模型擔任助理 (輔助角色 ),然後產生回應,並在訊息中傳回。如果需要,您可以傳送其他使用者角色訊息至模型,以繼續對話。若要維護對話內容,請務必在後續請求中包含從模型接收的任何助理角色訊息。
您可以在 messages
欄位中提供您要傳遞給模型的訊息,該模型會映射到訊息物件陣列。每個訊息都包含訊息的內容,以及訊息在對話中扮演的角色。
注意
Amazon Bedrock 不會儲存您作為內容提供的任何文字、影像或文件。資料僅用於產生回應。使用 Converse 時API,您必須使用大小小於 4.5 MB 的未壓縮和解碼文件。
您可以將訊息的內容存放在 content
欄位中,該欄位會映射到ContentBlock物件陣列。在每個 中ContentBlock,您可以指定下列其中一個欄位 (若要查看哪些模型支援哪些模態,請參閱 支援的模型和模型功能):
中的其他欄位ContentBlock
適用於工具使用 。
您可以在 role
欄位中指定角色。此角色可以是下列其中一個:
-
user — 正在傳送訊息至模型的人。
-
助理 — 將訊息傳回給人工使用者的模型。
注意
下列限制與 content
欄位相關:
-
您最多可以包含 20 個影像。每個影像的大小、高度和寬度分別不得超過 3.75 MB、8,000 px 和 8,000 px。
-
您最多可以包含五個文件。每個文件的大小不得超過 4.5 MB。
-
如果
role
是 ,您只能包含映像和文件user
。
在下列messages
範例中,使用者會要求三首流行歌曲的清單,而模型會產生歌曲清單。
[ { "role": "user", "content": [ { "text": "Create a list of 3 pop songs." } ] }, { "role": "assistant", "content": [ { "text": "Here is a list of 3 pop songs by artists from the United Kingdom:\n\n1. \"As It Was\" by Harry Styles\n2. \"Easy On Me\" by Adele\n3. \"Unholy\" by Sam Smith and Kim Petras" } ] } ]
系統提示是一種提示類型,可針對模型應執行的任務或對話期間應採用的角色,提供相關指示或內容。您可以在 system
(SystemContentBlock) 欄位中指定請求的系統提示清單,如下列範例所示。
[ { "text": "You are an app that creates play lists for a radio station that plays rock and pop music. Only return song names and the artist. " } ]
推論參數
Converse API支援一組您在 inferenceConfig
欄位 (InferenceConfiguration) 中設定的推論參數。推論參數的基本集為:
maxTokens – 在產生的回應中允許的最大字符數量。
stopSequences – 停止序列的清單。停止序列是導致模型停止產生回應的字元序列。
溫度 – 在產生回應時,模型選擇較高機率選項的可能性。
topP – 模型考慮用於下一個權杖的最可能候選者的百分比。
如需詳細資訊,請參閱利用推論參數影響回應產生。
下列範例會JSON設定temperature
推論參數。
{"temperature": 0.5}
如果您使用的模型有其他推論參數,您可以透過JSON在 additionalModelRequestFields
欄位中指定這些參數來設定這些參數。下列範例JSON示範如何設定 top_k
,其可在 中使用 Anthropic Claude 模型,但 不是訊息 中的基本推論參數API。
{"top_k": 200}
您可以在 additionalModelResponseFieldPaths
欄位中指定其他模型參數的路徑,如下列範例所示。
[ "/stop_sequence" ]
會API傳回您在 欄位中請求的其他additionalModelResponseFields
欄位。
回應
您從 Converse 取得的回應API取決於您呼叫的操作,Converse
或 ConverseStream
。
對話回應
在來自 的回應中Converse
, output
欄位 (ConverseOutput) 包含模型產生的訊息 (訊息 )。訊息內容位於 content
(ContentBlock) 欄位中,而訊息對應的角色 (user
或 assistant
) 位於 role
欄位中。
metrics
欄位 (ConverseMetrics) 包含呼叫的指標。若要判斷模型停止產生內容的原因,請檢查 stopReason
欄位。您可以透過檢查 usage
欄位 (),取得傳遞給請求中模型的權杖,以及在回應中產生的權杖的相關資訊TokenUsage。如果您在請求中指定了其他回應欄位, 會如 JSON additionalModelResponseFields
欄位一樣API傳回它們。
下列範例顯示當您傳遞 中討論的提示Converse
時,來自 的回應請求。
{ "output": { "message": { "role": "assistant", "content": [ { "text": "Here is a list of 3 pop songs by artists from the United Kingdom:\n\n1. \"Wannabe\" by Spice Girls\n2. \"Bitter Sweet Symphony\" by The Verve \n3. \"Don't Look Back in Anger\" by Oasis" } ] } }, "stopReason": "end_turn", "usage": { "inputTokens": 125, "outputTokens": 60, "totalTokens": 185 }, "metrics": { "latencyMs": 1175 } }
ConverseStream 回應
如果您呼叫 ConverseStream
從模型串流回應,串流會在stream
回應欄位中傳回。串流會依下列順序發出下列事件。
-
messageStart
(MessageStartEvent)。訊息的啟動事件。包含訊息的角色。 -
contentBlockStart
(ContentBlockStartEvent)。內容區塊啟動事件。僅限工具使用。 -
contentBlockDelta
(ContentBlockDeltaEvent)。內容區塊差異事件。包括模型產生的部分文字或用於工具的部分輸入 json。 -
contentBlockStop
(ContentBlockStopEvent)。內容區塊停止事件。 -
messageStop
(MessageStopEvent)。訊息的停止事件。包括模型停止產生輸出的原因。 -
metadata
(ConverseStreamMetadataEvent)。請求的中繼資料。中繼資料包括usage
(TokenUsage) 中的字符用量和metrics
() 中呼叫的指標ConverseStreamMetadataEvent。
ConverseStream 會將完整的內容區塊串流為ContentBlockStartEvent
事件、一或多個ContentBlockDeltaEvent
事件和ContentBlockStopEvent
事件。使用 contentBlockIndex
欄位作為索引,關聯組成內容區塊的事件。
下列範例是來自 的部分回應ConverseStream
。
{'messageStart': {'role': 'assistant'}} {'contentBlockDelta': {'delta': {'text': ''}, 'contentBlockIndex': 0}} {'contentBlockDelta': {'delta': {'text': ' Title'}, 'contentBlockIndex': 0}} {'contentBlockDelta': {'delta': {'text': ':'}, 'contentBlockIndex': 0}} . . . {'contentBlockDelta': {'delta': {'text': ' The'}, 'contentBlockIndex': 0}} {'messageStop': {'stopReason': 'max_tokens'}} {'metadata': {'usage': {'inputTokens': 47, 'outputTokens': 20, 'totalTokens': 67}, 'metrics': {'latencyMs': 100.0}}}