gpt4 book ai didi

c# - 连接 LUIS 对话框以形成对话框并映射正确的字段

转载 作者:行者123 更新时间:2023-11-30 12:23:24 25 4
gpt4 key购买 nike

我正在开发一个可以预订航类的机器人。我正在使用最新版本的 bot 框架 (1.1),如 suggested在这里建议。

你可以说“给我预订下周一从阿姆斯特丹到波士顿的航类”。

现在,我将 LUIS 配置为响应意图“BookFlight”,并且在我的机器人中我制作了一个 LuisDialog 和 FormDialog,如下所示:

[LuisIntent("BookFlight")]
public async Task Process(IDialogContext context, LuisResult result)
{
var form = new BookFlightForm();

var entities = new List<EntityRecommendation>(result.Entities);

var formDialog = new FormDialog<BookFlightForm>(form, BuildForm, FormOptions.PromptInStart, entities);

context.Call(formDialog, OnComplete);
}

[Serializable]
public class BookFlightForm
{
[Prompt("From which city do you want to leave from? {||}", AllowDefault = BoolDefault.True)]
[Describe("Location, example: Amsterdam")]
public string LocationFrom { get; set; }

[Prompt("To which city you want to fly to? {||}", AllowDefault = BoolDefault.True)]
[Describe("Location, example: Las Vegas")]

public string LocationTo { get; set; }

[Prompt("When do you want to leave? {||}", AllowDefault = BoolDefault.True)]
[Describe("Departure date, example: tomorrow, next week or any date like 12-06-2016")]
public DateTime DepartureDate { get; set; }
}

我从 Luis 那里得到以下回复:

{
"intent": "BookFlight",
"score": 0.987034,
"actions": [
{
"triggered": true,
"name": "BookFlight",
"parameters": [
{
"name": "locationFrom",
"required": true,
"value": [
{
"entity": "amsterdam",
"type": "Flight::LocationFrom",
"score": 0.8548711
}
]
},
{
"name": "locationTo",
"required": true,
"value": [
{
"entity": "boston",
"type": "Flight::LocationTo",
"score": 0.962294638
}
]
},
{
"name": "departureDate",
"required": true,
"value": [
{
"entity": "next monday",
"type": "builtin.datetime.date",
"resolution":
{
"date": "2016-05-09"
}
}
]
}
]
}
]
}

问题

表单未使用 LUIS 中的正确值填充。所以机器人会要求你填写你的出发地点、日期和你想飞往的地点。但这已经向 LUIS 描述过了。

到目前为止我尝试了什么

  1. 制作了一个没有子实体但具有正确实体名称的新应用,没有在表单中填写任何值。
  2. 在运行时将实体的“类型”从“Flight::LocationTo”重命名为“LocationTo”等。这行得通,但在该日期无效。
  3. 使用正确的值预填充“BookFlightForm”的新实例,但机器人仍会询问日期值。

所以我有点困惑如何解决这个问题。我是否正确配置了 LUIS?我需要配置 EntityRecognizer 吗? LUIS entity attribute会很好。

希望你能帮助我!

最佳答案

您的 Luis 实体类型应与表单中的字段名称匹配。如果您将 Luis 实体的 "type": "Flight::LocationFrom" 更改为 "type": "LocationFrom",表单流应将实体与 LocationFrom 字段并正确填充它。

关于c# - 连接 LUIS 对话框以形成对话框并映射正确的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36998505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com