gpt4 book ai didi

c# - 使用 Bot Framework C# v4 的动态提示

转载 作者:太空宇宙 更新时间:2023-11-03 22:39:15 25 4
gpt4 key购买 nike

我正在构建一个聊天机器人来安排与人的 session ,截至目前,我已经构建了一个简单的瀑布模型。第一个查询找到意图,下面的查询完成任务

  1. 什么时候?
  2. 和谁一起?
  3. 主题是什么?

但这感觉就像是在填写表格。我还构建了一个没有瀑布模型的基 native 器人,但用户必须在单个查询中包含上述所有信息。

例如,“安排在明天上午 10:30 与 Aditya 和 Jhon 会面作为早餐”

我的目标是根据第一个查询中缺少的内容来询问动态提示例如,“安排明天上午 10:30 开会”,将提示输入姓名和主题。或者“安排与 Aditya 的早餐会面”会提示输入时间。

我正在为用户的每个响应调用 Luis,因为它比 Hardcode 更好,而且“明天上午 10:30”会给我返回一个 DateTime Formate,我不必弄清楚基于今天的明天日期。

最佳答案

阿迪亚,为您需要的实体设置一个状态对象。我猜这些人会是什么人、什么事、什么时候?看起来您已经在训练 Luis,因此请确保您也在训练它以从话语中提取实体。当 Luis 返回您的新约会意向时,它还将具有能够提取的实体。将找到的实体保存在您的状态对象中。现在,当您执行瀑布步骤时,首先检查状态对象。如果您已经拥有该实体,请跳过提示。如果不这样做,请按照提示继续。看看这个sample on github .它相当复杂,但显示了我在说什么。特别注意“GetAllRequiredPropertiesAsync”方法。这就是 samepl 正在做我第一次描述的事情的地方。你 100% 走在正确的轨道上,这应该会让你到达你想去的地方。

我正在编辑以添加一些示例代码。

在github的代码中,构造函数声明了两个瀑布步骤:

var waterfallSteps = new WaterfallStep[]
{
GetAllRequiredPropertiesAsync,
BookTableAsync,
};

“GetAllRequiredPropertiesAsync”方法正在检查预订餐 table 所需的每条数据。该方法真的很长,所以我将只展示一小部分相关代码。

经过一系列设置后,这段代码最终会提示用户填写餐 table 预订中遗漏的任何部分

 var options = new PromptOptions()
{
Prompt = MessageFactory.Text(reservationResult.NewReservation.GetMissingPropertyReadOut()),
};
// Start the prompt with the first missing piece of information.
return await stepContext.PromptAsync(GetLocationDateTimePartySizePrompt, options);

现在,看看“GetLocationDateTimePartySizePrompt”。此对话框在同一页的第 53 行附近声明。它检查预订是否完成,如果没有,它会读出它已经知道的内容,然后询问其余部分。这发生在 101 左右,然后第 109 行在此代码中截断了 await promptValidatorContext.Context.SendActivityAsync(newReservation.GetMissingPropertyReadOut());

那个方法是declared here .这真的很容易理解。它会被反复调用,直到返回空字符串,表示所有属性都已填写。

希望对你有帮助

关于c# - 使用 Bot Framework C# v4 的动态提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53247941/

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