状态

状态记录了对话交互的背景信息,主要用于上下文信息(如参数值)的传递。此外,它可以被用于管理会话流,串联起原本孤立的不同场景。多个场景通过场景里的输入输出状态连接成图网络以完成更加复杂的功能。一个AI的多轮对话功能也是利用状态来实现的。

注:场景中的输入和输出状态不是必需的,可以不填写。

开发者可以在场景中定义输入输出状态的名称,状态向下传递次数,甚至关闭所有存在的状态。

输入状态明确了当前场景被触发的先决条件。只有前面的对话中包含了某场景的所有输入状态(见上一轮对话中query接口返回的state),此场景才会作为候选场景参加对用户提问的匹配过程。例如,

  • 如果当前场景的输入状态为s1,而上一轮对话中query接口返回的state里只包含了状态s2s3,则当前场景不会在这轮对话中被触发。
  • 如果当前场景的输入状态为s1s2,而上一轮对话中query接口返回的state里只包含了状态s2s3,则当前场景不会在这轮对话中被触发。
  • 如果当前场景的输入状态为s1s2,而上一轮对话中query接口返回的state里包含了状态s1s2s3,则当前场景可能会在这轮对话中被触发。(如果当前场景与用户输入的匹配度在所有可能被触发的场景中最高,则此场景被触发。)

如果某个应用只包含一个场景,请不要为此场景设置输入状态,否则此场景永远不会被触发。 输入状态也会把上一轮场景里参数信息传递进当前场景。

输出状态是当前场景完成时返回的状态,状态里面会包括场景中获取到的所有参数信息。这些输出状态也会成为下一轮对话中场景的输入状态。可以通过点击“状态”栏里的“输出”按钮关闭所有的输出状态,此时场景返回里不会包含任何状态。

注:如果只需要关闭单个状态,只需要把此状态的“传递次数”设为0即可。

下面以听歌曲为例。

第一轮对话:场景一

用户说:“我想要听周杰伦的歌曲”。
AI回复:“好的,稍等马上为你搜索周杰伦的歌曲。”

image

第二轮对话:场景二

用户说:“我想要听更多的”。
AI回复:“好的,我帮你搜索周杰伦更多的歌曲。”

image

分析

当用户在场景二中给出听更多的提问时,如果没有场景一做背景的话,那么系统不能确定用户说的是什么。当场景二引用入场景一的输出状态后,系统就能够将场景一作为背景信息进行衔接。

results matching ""

    No results matching ""