在預測執行階段擴充應用程式
重要
LUIS 將於 2025 年 10 月 1 日淘汰,而自 2023 年 4 月 1 日開始,您將無法建立新的 LUIS 資源。 建議移轉 LUIS 應用程式至交談語言理解,以享有產品持續支援和多語言功能的優點。
應用程式的結構描述 (模型和特徵) 已定型並發佈至預測端點。 這個已發佈的模型用於預測執行階段。 您可以將新資訊以及使用者的語句傳遞至預測執行階段,以增強預測功能。
兩個預測執行階段結構描述變更包括:
外部實體
外部實體可讓您的 LUIS 應用程式在執行階段能夠識別和標記實體,而這些實體可作為現有實體的功能。 這可讓您使用自己的個別和自訂實體擷取器,然後再將查詢傳送至您預測端點。 由於這是在查詢預測端點上完成,因此您不需要重新定型和發佈模型。
用戶端應用程式會藉由管理實體比對來提供自己的實體擷取器,並決定該相符實體的語句內的位置,然後將該資訊與要求一起傳送。
外部實體是一種擴充任何實體類型的機制,但仍可作為其他模型的信號。
這適用於只有在查詢預測執行階段才有可用資料的實體。 這類資料的範例包括不斷變化的資料或每位使用者的特定資料。 您可以從使用者的連絡人清單中,使用外部資訊來擴充 LUIS contact 實體。
外部實體是 V3 撰寫 API 的一部分。
實體已存在於應用程式中
當提出要求時,在已定型和已發佈的應用程式中,傳遞給端點要求 POST 本文的外部實體,其 entityName
值必須已經存在。 實體類型並不重要,支援所有類型。
第一回合對話
請考慮聊天機器人交談中的第一個語句,其中使用者會輸入下列未完成的資訊:
Send Hazem a new message
從聊天機器人至 LUIS 的要求可以在 POST 本文中傳入與 Hazem
相關的資訊,因此其會直接與使用者的其中一個連絡人相符。
"externalEntities": [
{
"entityName":"contacts",
"startIndex": 5,
"entityLength": 5,
"resolution": {
"employeeID": "05013",
"preferredContactType": "TeamsChat"
}
}
]
預測回應包含該外部實體,以及所有其他預測的實體,因為其是在要求中定義。
第二回合對話
下一次與聊天機器人的使用者語句會使用更清楚的字詞:
Send him a calendar reminder for the party.
在此交談回合中,語句會使用 him
做為 Hazem
的參考。 POST 本文中的交談式聊天機器人可以將 him
對應到從第一個語句中擷取的實體值 Hazem
。
"externalEntities": [
{
"entityName":"contacts",
"startIndex": 5,
"entityLength": 3,
"resolution": {
"employeeID": "05013",
"preferredContactType": "TeamsChat"
}
}
]
預測回應包含該外部實體,以及所有其他預測的實體,因為其是在要求中定義。
覆寫現有的模型預測
preferExternalEntities
options 屬性指定如果使用者傳送的外部實體與具有相同名稱的預測實體重疊,LUIS 會選擇傳入的實體或模型中現有的實體。
例如,請考量 today I'm free
查詢。 LUIS 會以下列回應,以 datetimeV2 的形式偵測 today
:
"datetimeV2": [
{
"type": "date",
"values": [
{
"timex": "2019-06-21",
"value": "2019-06-21"
}
]
}
]
如果使用者傳送外部實體:
{
"entityName": "datetimeV2",
"startIndex": 0,
"entityLength": 5,
"resolution": {
"date": "2019-06-21"
}
}
如果 preferExternalEntities
設定為 false
,LUIS 就會傳回回應,如同未傳送外部實體一樣。
"datetimeV2": [
{
"type": "date",
"values": [
{
"timex": "2019-06-21",
"value": "2019-06-21"
}
]
}
]
如果 preferExternalEntities
設定為 true
,LUIS 會傳回回應,包括:
"datetimeV2": [
{
"date": "2019-06-21"
}
]
解決方法
選用 resolution
屬性會在預測回應中傳回,可讓您傳入與外部實體相關聯的中繼資料,然後在回應中傳回。
主要用途是擴充預建實體,但不限於該實體類型。
resolution
屬性可以是數位、字串、物件或陣列:
- "Dallas"
- {"text": "value"}
- 12345
- ["a", "b", "c"]
動態清單
動態清單可讓您擴充已在 LUIS 應用程式中的現有已定型且已發佈的清單實體。
當您的清單實體值需要定期變更時,請使用此功能。 這項功能可讓您擴充已定型和已發佈的清單實體:
- 在查詢預測端點要求時。
- 針對單一要求。
LUIS 應用程式中的清單實體可以是空的,但必須存在。 LUIS 應用程式中的清單實體不會變更,但端點的預測能力會擴充到最多包含大約 1000 個項目的 2 個清單。
動態清單 JSON 要求本文
使用下列 JSON 本文來傳送新的子清單,以將同義字新增至清單,並使用 POST
查詢預測要求來預測文字的清單實體 LUIS
:
{
"query": "Send Hazem a message to add an item to the meeting agenda about LUIS.",
"options":{
"timezoneOffset": "-8:00"
},
"dynamicLists": [
{
"listEntity*":"ProductList",
"requestLists":[
{
"name": "Azure AI services",
"canonicalForm": "Azure-Cognitive-Services",
"synonyms":[
"language understanding",
"luis",
"qna maker"
]
}
]
}
]
}
預測回應包含該清單實體,以及所有其他預測的實體,因為其是在要求中定義。