本文档将给出一个复杂的在线编排实例,其中主要使用了在线编排通用节点和Function
节点。
该实例的需求是实现一个对话应用,当检测到用户输入的内容意图为查询天气时,启用AIUI辅助查询天气并返回结果给用户,若用户意图为其他内容时,则直接调用通用模型进行回复。
明确需求后,我们可以先进行粗略的功能节点编排。例如在本例中,我们可以得出如下的功能节点编排:
上图中实现的功能为对话入口
接收输入后,通过意图落域
判断用户的意图是否与天气有关,然后通过switch
节点将与天气相关和不相关的信息分别传送到AIUI调用
和星火大模型
节点,最后进入流程结束
节点。
为一个新的流程配置开始节点和结束节点
对话入口
是对话应用的交互入口,即对话应用的开始节点。流程结束
是对话应用的交互出口,即对话应用的结束节点。如下图所示:
通过意图落域
节点判断用户的意图,目前支持的意图包括应用、计算、车控、命令控制、星座、菜谱、时间查询、节假日、有声节目、笑话、彩票、导航、音乐、新闻、订票、诗词、电台、日程、股票、故事、电话、翻译、电视频道、视频、天气、词语、人设查询、闲聊、场景立方、烟草营销等等。
详细的返回结构体可以查看节点帮助文档,如下图所示:
添加switch
节点并连线,如下图所示:
双击switch
节点进行节点配置,对上一个(意图落域
)节点输出结果进行判断
。这里对msg.payload.choices[0].skill
进行判断,若包含天气
则走出口1,其他则走出口2,如下图所示:
添加AIUI调用
节点并连线,命中的技能走出口1,否则走出口2,如下图所示:
双击AIUI调用
节点进行节点配置,其中API_KEY
必选,如下图所示:
*API_KEY配置
:关于AIUI的ID和KEY请见AIUI使用指南
场景配置
:与AIUI中的场景同一概念,默认是main,若场景未发布,则需要配置为main_box
支持技能
:若某个场景配置多种技能,但又不想被命中,则在这里可以进一步进行过滤,将需要命中的技能的service填写,多个service用英文逗号进行分割。
添加星火大模型
节点并连线,如下图所示:
双击星火大模型
节点进行节点配置,如下图所示:
模型
:选择所需的模型服务
流式返回
:建议勾选,减少模型返回结果的时间。
在1.4
章节中,当AIUI未命中技能,若没有做任何处理,则没有回复。页面可能会提示超时等报错信息。这里可以简单用大模型兜底回复,也可以自定义固定回复语。
大模型兜底回复,则可以进行简单连线。如下图所示:
语义改写可以帮我们改写用户的问题,当有多轮提问的时候,使用语义改写可以将用户的多个问题改写成一个完整的问题,提高流程的处理效果。
在对话入口
和意图落域
之间添加语义改写
,如下图所示:
至此,我们成功完成了对话应用的编排!接下来,可以参考《AIFlow调试技巧》对编排应用进行调试。
join节点用于将多个消息合并成一个单一的消息对象,可以基于特定的条件,例如在接收到一定数量的消息、具有相同的 msg.topic、或在特定时间窗口内收集消息。
当你有两个耗时不确定的几点,后续流程需要等待这两个节点的结果,才能做处理,join节点就非常合适。
1、part1
msg.parts = {
id: 'part',
index: 0,
count: 2
};
return msg;
2、part2
msg.parts = {
id: 'part',
index: 1,
count: 2
};
return msg;
解释:
1、打开function节点的设置。
2、点击添加,并把要引入的模块填在“模块名称”,导入变量名,填在“导入为”。
如图片例子,相当于:
var Axios = require('axios');
3、填写完毕后,对编排测试环境进行重启。
4、等待重启完毕后,该function节点可直接使用引入的模块。