支援終止通知:2025 年 9 月 15 日, AWS 將停止對 Amazon Lex V1 的支援。2025 年 9 月 15 日之後,您將無法再存取 Amazon Lex V1 主控台或 Amazon Lex V1 資源。如果您使用的是 Amazon Lex V2,請改參閱 Amazon Lex V2 指南。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
一般準則
本節說明使用 Amazon Lex 時的一般準則。
-
簽署請求 – 中的所有 Amazon Lex 模型建置和執行時間 API 操作都會API 參考使用簽章 V4 來驗證請求。如需有關驗證請求的詳細資訊,請參閱《Amazon Web Services 一般參考》中的 Signature 第 4 版簽署程序。
對於 PostContent,Amazon Lex 使用 Amazon Simple Storage Service (S3) API 參考中授權標頭:在單一區塊 (AWS Signature 第 4 版) 中傳輸承載的簽章計算中所述的未簽章承載選項。
當使用未簽署的承載選項時,請勿在正式請求中包含承載的雜湊。您可以改用字串常值「UNSIGNED-PAYLOAD」做為承載的雜湊。另外也請在
x-amz-content-sha256請求中包含名稱UNSIGNED-PAYLOAD和數值PostContent的標頭。 -
請注意,Amazon Lex 如何從使用者表達用語擷取槽值:
Amazon Lex 會使用您在槽類型定義中提供的列舉值來訓練其機器學習模型。假設您使用以下範例表達用語,來定義稱為
GetPredictionIntent的意圖:"Tell me the prediction for {Sign}"當中
{Sign}是自訂類型為ZodiacSign的槽。它有 12 個列舉值,Aries至Pisces。從使用者表達用語 "Tell me the prediction for ..." Amazon Lex 了解以下什麼是 zodiac 符號。當
valueSelectionStrategy欄位設定為ORIGINAL_VALUE使用 PutSlotType操作,或在主控台中選取展開值時,如果使用者說「告知我地球預測」,Amazon Lex 會推斷「地球」是 ,並將其ZodiacSign傳遞給用戶端應用程式或 Lambda 函數。您必須先檢查槽值具有有效的值,再將其用於您的履行活動。如果您使用 PutSlotType 操作將
valueSelectionStrategy欄位設定為TOP_RESOLUTION,或是主控台中已選取Restrict to slot values and synonyms (限制為槽值和同義詞),則傳回的值會受限於您為槽類型定義的值。例如,如果使用者表示「我想知道地球的運勢預測」,將無法辨識該值,因為它不屬於為槽類型定義的值之一。當為槽值定義同義詞時,會將其視同槽值,不過,傳回的是槽值,而不是同義詞。當 Amazon Lex 呼叫 Lambda 函數或傳回與用戶端應用程式之語音互動的結果時,不保證槽值的大小寫。例如,如果您要引出 AMAZON.Movie
內建槽類型的值,而使用者說或輸入「強風,Amazon Lex 可能會傳回「強風、「強風」或「強風」。在文字互動中,槽值的大小寫會符合輸入的文字或槽值,端視 valueResolutionStrategy欄位的值而定。 -
定義包含縮寫的槽值時,請使用下列模式:
-
以句點分隔的大寫字母 (D.V.D.)
-
以空格分隔的大寫字母 (D V D)
-
-
Amazon Lex 不支援 Alexa Skills Kit 支援的 AMAZON.LITERAL 內建槽類型。不過,Amazon Lex 支援建立自訂插槽類型,您可以使用這些類型來實作此功能。如前一點所述,您可以擷取自訂槽類型定義以外的值。新增更多和多樣化的列舉值來提升自動語音辨識 (ASR) 和自然語言了解 (NLU) 的準確性。
-
AMAZON.DATE
和 AMAZON.TIME 內建槽類型會同時擷取絕對和相對的日期和時間。相對日期和時間會在 Amazon Lex 正在處理請求的區域中解析。 對於
AMAZON.TIME內建插槽類型,如果使用者未指定時間在中午之前或之後,則時間不明確,Amazon Lex 會再次提示使用者。我們建議提示引出絕對的時間。例如,使用如「您希望比薩何時送達? 您可以說下午 6 點或傍晚 6 點」的提示。 -
在機器人中提供可轉換的訓練資料,會降低 Amazon Lex 了解使用者輸入的能力。請考量以下範例:
假設您的機器人中有兩個意圖 (
OrderPizza和OrderDrink),而且兩者都是以「我想要訂購」的表達用語來設定。此表達用語不會對應到 Amazon Lex 在建置時為機器人建置語言模型時可以從中學習的特定意圖。因此,當使用者在執行時間輸入此表達用語時,Amazon Lex 無法挑選具有高度可信度的意圖。再來看看另一個範例,您定義了自訂意圖向使用者獲取確認 (例如,
MyCustomConfirmationIntent) 並以表達用語「是」和「否」來設定意圖。請注意,Amazon Lex 也有了解使用者確認的語言模型。這可能會產生衝突的情況。當使用者以「是」回應時,這是表示確認進行中的意圖,還是確認使用者請求您所建立的自訂意圖?一般來說,您提供的範例表達用語應該對應到特定的意圖,或是選擇對應到特定槽值。
-
執行時間 API 操作 PostContent 和 PostText 會將使用者 ID 視為必要的參數。開發人員可以將此設定為符合 API 中所述之限制的任何值。我們建議您不要使用此參數來傳送任何機密資訊 (例如使用者登入、電子郵件或身分證號碼。這個 ID 主要是用來唯一識別與機器人的對話 (可能有多個使用者訂購外送的比薩)。
-
如果您的用戶端應用程式使用 Amazon Cognito 進行身分驗證,您可以使用 Amazon Cognito 使用者 ID 做為 Amazon Lex 使用者 ID。請注意,為機器人設定的任何 Lambda 函數都必須有自己的身分驗證機制,才能識別代表 Amazon Lex 叫用 Lambda 函數的使用者。
-
我們鼓勵您定義一個意圖來捕捉使用者停止對話的意圖。例如,您可以定義具有範例表達用語的意圖 (
NothingIntent) (「我不需要任何內容」、「結束」、「再見」)、沒有插槽,也沒有設定為程式碼掛勾的 Lambda 函數。這可讓使用者從容地關閉對話。