本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理聊天歷史記錄
Amazon Nova 2 Sonic 回應包含使用者和助理語音的 ASR (自動語音辨識) 文字記錄。儲存聊天歷史記錄是最佳實務,不僅用於記錄目的,也用於在連線意外關閉時繼續工作階段。這可讓用戶端將內容傳回 Nova Sonic,以無縫地繼續對話。
如需管理聊天歷史記錄的詳細資訊,請參閱下列資源:
傳送聊天歷史記錄
對話歷史記錄只能在系統/語音提示之後以及在音訊串流開始之前包含一次。整體聊天歷史記錄不能大於 40KB。下圖顯示聊天歷史記錄在事件生命週期期間傳入的時間:
每個歷史訊息都需要三個事件:contentStart、 textInput和 contentEnd。
每則訊息的事件結構描述:
-
contentStart- 定義訊息角色和組態{ "event": { "contentStart": { "promptName": "<prompt-id>", "contentName": "<content-id>", "type": "TEXT", "interactive": true, "role": "ASSISTANT", "textInputConfiguration": { "mediaType": "text/plain" } } } } -
textInput- 包含實際的訊息內容。一個 textInput 不能大於 1KB。若是如此,請在相同的內容區塊中分割成多個 textInputs。如果對話大於 40KB,請裁剪整體聊天歷史記錄。{ "event": { "textInput": { "promptName": "<prompt-id>", "contentName": "<content-id>", "content": "Take your time, Don. I'll be here when you're ready." } } } -
contentEnd- 標記訊息的結尾{ "event": { "contentEnd": { "promptName": "<prompt-id>", "contentName": "<content-id>" } } }
對聊天歷史記錄中的每個訊息重複這三個事件,在 USER 和 ASSISTANT 角色之間交替。
重要考量事項:
-
每個工作階段只能包含一次聊天歷史記錄
-
聊天歷史記錄必須在系統提示後和音訊串流開始之前傳送
-
在開始音訊串流之前,必須傳送所有歷史訊息
-
每個訊息都必須指定 USER 或 ASSISTANT 角色
-
使用來自 textOutput 事件的預存文字記錄內容作為 textInput 中的內容值
接收 ASR 文字記錄
在對話期間,Amazon Nova 2 Sonic 會透過輸出事件傳送 ASR 文字記錄。每個文字記錄會以三個事件的序列傳遞: contentStart、textOutput 和 contentEnd。
範例:使用者語音文字記錄:
1. contentStart - 指出文字記錄的開頭:
{ "event": { "contentStart": { "additionalModelFields": "{\"generationStage\":\"FINAL\"}", "completionId": "<completion-id>", "contentId": "<content-id>", "promptName": "<prompt-id>", "role": "USER", "sessionId": "<session-id>", "textOutputConfiguration": { "mediaType": "text/plain" }, "type": "TEXT" } } }
2. textOutput - 包含實際文字記錄內容:
{ "event": { "textOutput": { "completionId": "<completion-id>", "content": "hello how are you", "contentId": "<content-id>", "promptName": "<prompt-id>", "role": "USER", "sessionId": "<session-id>" } } }
3. contentEnd - 標記文字記錄的結尾:
{ "event": { "contentEnd": { "completionId": "<completion-id>", "contentId": "<content-id>", "promptName": "<prompt-id>", "sessionId": "<session-id>", "stopReason": "PARTIAL_TURN", "type": "TEXT" } } }
相同的三事件模式適用於 USER 和 ASSISTANT 角色。從textOutput事件擷取 content 欄位,從contentStart事件擷取 role 欄位,以建置您的聊天歷史記錄。
最佳實務
一律存放聊天歷史記錄以啟用:
-
不同裝置的工作階段恢復
-
對話記錄和稽核
-
追蹤互動的內容保留
重要:儲存聊天歷史記錄時,請根據其 generationStage 使用文字輸出:
-
推測 - 預覽 Nova 2 Sonic 計劃說的內容,在音訊合成開始之前產生
-
最終 - 音訊回應中所說內容的實際句子層級轉錄
一律將最終文字輸出儲存到您的聊天歷史記錄,因為它代表對話的準確記錄。
FINAL 輸出範例 (將此儲存到聊天歷史記錄):
ContentStart event: { "additionalModelFields": "{\"generationStage\":\"FINAL\"}", "completionId": "<completion-id>", "contentId": "<content-id>", "role": "ASSISTANT", "sessionId": "<session-id>", "type": "TEXT" }
SPECULATIVE 輸出範例 (選用預覽,不適用於歷史記錄):
ContentStart event: { "additionalModelFields": "{\"generationStage\":\"SPECULATIVE\"}", "completionId": "<completion-id>", "contentId": "<content-id>", "role": "ASSISTANT", "sessionId": "<session-id>", "type": "TEXT" }