如何在 Watson Assistant 中对随机数进行采样?
How to sample random numbers in Watson Assistant?
我正在使用 IBM Watson Assistant 创建聊天机器人。我正在使用带有意图、实体和对话流|树的网络界面(我不知道它是怎么叫的,我只是称它为网络界面)。
我想定义一个数字数组 [1,2,3,4,5]。然后一个节点应该从该数组(例如 2)中采样一个随机数而不进行替换,即剩下的数组是 [1,3,4,5]。一段时间后,另一个节点应该从数组中随机选择另一个数字(比如 4)。等等。如何实施?我知道变量(例如 $var),但我不知道如何表示数组和样本随机数。
非常感谢您提前的回答。祝大家新年快乐。
作为关于可能发生的事情的一般规则,我们使用 Spring Expression Language 的文档。基于此,您可以 select 来自某些数据结构 $some_array
的值,如下所示:
{
"context": {
"randomNumber": "<? (new java.util.Random().nextInt($some_array.size())) ?>"
}
}
之后,您可以使用
访问您的值
{
"context": {
"element": "<? $some_array.get($randomNumber) ?>",
"shorter_array": "<? $some_array.remove($randomNumber) ?>"
}
}
现在有一些问题(可能是评论中提到的错误),因为 remove 方法应该是来自 gson JsonArray 的方法并且表现如下:
Removes the element at the specified position in this array. Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the array.
但是,它 returns 删除了元素的数组,而不是元素本身。
1) 在您的对话节点中,定义插槽
2) 在第一个中,生成随机值(如果数组已定义且不为空)
3) 第二步,获取元素并移除
请注意,即使这有效,您也可能 不要在 Chatbot 的生产版本中使用它。相反,将大部分逻辑放在您的应用程序中(包括对话的控制)。 Web 界面很难测试,变量的解析方式有时可能会发生变化。
我正在使用 IBM Watson Assistant 创建聊天机器人。我正在使用带有意图、实体和对话流|树的网络界面(我不知道它是怎么叫的,我只是称它为网络界面)。
我想定义一个数字数组 [1,2,3,4,5]。然后一个节点应该从该数组(例如 2)中采样一个随机数而不进行替换,即剩下的数组是 [1,3,4,5]。一段时间后,另一个节点应该从数组中随机选择另一个数字(比如 4)。等等。如何实施?我知道变量(例如 $var),但我不知道如何表示数组和样本随机数。
非常感谢您提前的回答。祝大家新年快乐。
作为关于可能发生的事情的一般规则,我们使用 Spring Expression Language 的文档。基于此,您可以 select 来自某些数据结构 $some_array
的值,如下所示:
{
"context": {
"randomNumber": "<? (new java.util.Random().nextInt($some_array.size())) ?>"
}
}
之后,您可以使用
{
"context": {
"element": "<? $some_array.get($randomNumber) ?>",
"shorter_array": "<? $some_array.remove($randomNumber) ?>"
}
}
现在有一些问题(可能是评论中提到的错误),因为 remove 方法应该是来自 gson JsonArray 的方法并且表现如下:
Removes the element at the specified position in this array. Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the array.
但是,它 returns 删除了元素的数组,而不是元素本身。
1) 在您的对话节点中,定义插槽
请注意,即使这有效,您也可能 不要在 Chatbot 的生产版本中使用它。相反,将大部分逻辑放在您的应用程序中(包括对话的控制)。 Web 界面很难测试,变量的解析方式有时可能会发生变化。