gpt4 book ai didi

javascript - Rivescript:在条件响应中使用关键字触发器

转载 作者:行者123 更新时间:2023-11-29 15:10:54 25 4
gpt4 key购买 nike

我正在使用 Rivescript 开发聊天机器人,并尝试在条件响应中使用关键字触发器。

tutorial在网站上,解释说您可以使用...

[*] optionals to ignore parts of a message...

这在初始提示中工作正常 + [*] you [*]但是当我尝试使用此方法捕获包含 yes任何 响应时或 no作为条件响应的一部分,它似乎打破了它?我没有收到错误代码,但它只是默认为 - So, back to the matter at hand...作为回应。

  + [*] you [*]
- Oh, so we're talking about me now?

+ *
% oh so we are talking about me now
* <star> == [*] no [*] => Whatever...
* <star> == [*] yes [*] => This should be fun.{topic=myself}
- So, back to the matter at hand...

如果这可行,我希望对话能够进行,例如:

User: What do you do?
Bot: Oh, so we're talking about me now?
User: Yes, I suppose so
Bot: This should be fun.

那么,有什么方法可以在没有显式用户输入的情况下使用条件响应吗?而是一个只包含特定响应的?我想这是使用 * 的问题在两个实例中,都是 <star>[*] ,却无法在框架内想出解决方案?也许我错过了什么?我也试过使用 *yes**no* .

更新:

也许是我使用的条件运算符有问题?也许==是不是比较两个值的正确方法,而我只是想确定一个值是否包含在另一个值中?我已经找到了 Working Draft但这里也没有运气......

最佳答案

好的,所以我找到了一个使用对象宏的解决方案——但它不是很优雅。

此解决方案将用户的完整响应(所有单词都变成小写 – 用 lowercase – 在数组中分隔)返回到 中的 test 对象宏args 变量。枚举此数组中的项目以查看它们是否与 positivesnegatives 数组中的项目匹配(它们本质上是已存在于 rivescript 'brain' 中的重复替换).

如果匹配,action 变量将更新为 yesno,如果不匹配,则循环中断如果不匹配,则 action 变量保持 undefined。此 action 变量然后返回到条件响应并由 rivescript 评估以查看它是否符合任何条件。

> object test javascript
let positives = ['yes', 'yeah', 'yep', 'yup', 'yh', 'ya', 'y', 'sure'];
let negatives = ['no', 'nope', 'na', 'nah', 'pass'];
var action = 'undefined';
for (var i = 0; i < args.length; i++) {
if (positives.indexOf(args[i]) !== -1) {
action = 'yes'
break;
} else if (negatives.indexOf(args[i]) !== -1){
action = 'no'
break;
} else {

}
}
return action;
< object

// In the topic/main section

+ [*] you [*]
- Oh, so we're talking about me now?

+ *
% oh so we are talking about me now
* <call>test <lowercase></call> == no => Whatever...
* <call>test <lowercase></call> == yes => This should be fun.{topic=myself}
* <call>test <lowercase></call> == undefined => So, back to the matter at hand...
- So, back to the matter at hand...

这似乎工作得很好,但我确信必须有更好的解决方案,即使它只是清理对象宏本身(也许有一种方法可以将替换带入对象宏??)。

我接受这个答案,但如果有人有任何替代建议/解决方案,我仍然很乐意听取他们的意见。

关于javascript - Rivescript:在条件响应中使用关键字触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54593971/

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