Coze 识别用户意图
本文将通过 LLM 节点、Condition 节点和插件节点构建一个用于识别用户意图的工作流。
效果示例
本文构建的示例工作流概览如下。
在该工作流中:
- 使用 LLM 节点将用户输入数据分为 1(天气)、2(新闻)、3(其他) 三种类型。
- 使用 Condition 节点判断用户输入数据的类型,并分支处理。
- 如果数据类型为 1,会将数据流转至 LLM 节点和获取天气工具节点,获取地区天气。
- 如果数据类型为 2,会将数据流转至获取新闻工具节点,获取新闻。
- 如果数据类型为 3,则不做处理直接返回。
下图展示了示例工作流添加到 Bot 之后,Bot 带来的用户任务处理能力。当用户输入内容后,Bot 会调用示例工作流处理任务,并向用户返回处理结果。
步骤一:构建工作流
1.登录扣子。2.在左侧导航栏的工作区区域,选择进入指定团队。
- 在页面顶部进入工作流页面,并单击创建工作流。
- 本文示例配置如下:
- 工作流名称:输入 weather_news_workflow
- 工作流描述:输入 识别用户意图并获取相关信息(仅获取天气、新闻相关)
- 在工作流的编辑页面,按如下图所示的顺序,依次添加 LLM 节点、Condition 节点、插件节点,并进行连接。
- 你可以在编辑页面左侧的基础节点列表内,添加 LLM 节点、Condition 节点。
- 你可以在编辑页面左侧的插件列表内,搜索并添加 get_current_weather 工具节点(用于查询天气)、getToutiaoNews 工具节点(用于获取新闻)。
-
- 连接各节点后,依次为节点配置输入输出参数。
- 本示例中各节点配置的参数信息如下表所示。
| **节点** | **参数配置** | | --------- | ------------------------------------------------------------ | | Start | 新增 input 输入参数,选择 **String** 类型。 | | LLM | 选择 LLM 节点的**单次**模式。示例配置如下:Temperature:输入 0.7。输入参数:名称 **query**,并在**变量值**区域选择**引用 Start > input**。提示词:使用以下示例 Markdown 信息,表示将用户输入的数据传入 LLM 进行处理。**## 分析**分析以下使用 ```括起来的文本:```{{query}}```## 返回- 如果文本与天气有关,则返回1 - 如果文本与新闻有关,则返回2 - 否则返回3输出值:名称 **intent**,类型选择 **String**。 | | Condition | 第一个 Condition 节点。从该节点开始,工作流将分为两个分支。示例配置如下:分支一:**如果**区域的判断条件设置为 **LLM > intent 取值包含 1** ,并连接至第二个 LLM 节点(LLM_1)。该分支用于获取天气数据。分支二:**否则**区域无需设置参数,连接至第二个 Condition 节点即可。该分支用于做下一步的判断。 |
- 分支一用于获取天气数据,节点配置如下表。
| **节点** | **参数配置** | | ------------------- | ------------------------------------------------------------ | | LLM_1 | 选择 LLM 节点的**单次**模式。示例配置如下:Temperature:输入 0.7。输入参数:名称 **query**,并在**变量值**区域选择**引用 Start > input**。提示词:使用以下示例 Markdown 信息,表示将用户输入的数据传入 LLM 进行处理。**## 返回**从{{query}}中提取地理位置信息,并转换为对应的经纬度(十进制数值)。- 纬度参数:{{lat}}- 经度参数:{{lon}}输出值:新增 lat,类型选择 **String**。新增 lon,类型选择 **String**。 | | get_current_weather | 获取指定地区天气。选择节点内的**单次**模式,并需要配置以下输入参数:设置 lat 参数,在**参数值**区域选择**引用 LLM_1 > lat**。设置 lon 参数,在**参数值**区域选择**引用 LLM_1 > lon**。 | | End | 在 End 节点的输入参数中,新增一个名为 weatherForecasts 参数,并在**参数值**区域选择**引用 get_current_weather > weather**。该参数用于返回天气信息。 |
- 分支二用于进行下一步判断,判断是获取新闻,还是直接流转至 End 节点。
| **节点** | **参数配置** | | -------------- | ------------------------------------------------------------ | | Condition | 第二个 Condition 节点,用于判断是继续获取新闻,还是直接流转至 End 节点。**如果**区域的判断条件设置为 **LLM > intent 取值包含 2** ,并连接至 getToutiaoNews 节点。该分支用于获取新闻。**否则**区域无需设置参数,连接至 End 节点即可。 | | getToutiaoNews | 搜索新闻。选择节点内的**单次**模式,并需要配置输入参数 **q** 的**参数值**为**引用 Start > input**。 | | End | 在 End 节点的输入参数中,新增以下参数,参数名称 intent,**参数值**选择**引用 LLM > intent**。该参数用于返回用户意图。参数名称 newsItems,**参数值**选择**引用 getToutiaoNews > news**。该参数用于返回新闻内容。 |
- 配置完成后,单击页面右上角的试运行,测试工作流。
- 例如,输入 杭州天气 进行测试,待所有节点都运行成功(节点会展示绿色边框)后,查看指定节点的运行结果。测试完天气之后,按同样的方法测试新闻和其他内容即可。
- 测试工作流无问题后,单击页面右上角的发布。
- 成功发布后,在工作流列表中可以查看到该工作流。
步骤二:在 Bot 添加工作流并测试
- 前往当前团队的 Bots 页面,创建或进入指定 Bot。
- 在 Bot 编排页面,找到技能区域的工作流,在右侧单击加号图标。
- 在对话框左侧单击我创建的,找到自建的 weather_news_workflow 工作流,并在右侧单击添加。
- 在 Bot 的人设与回复逻辑内,声明 Bot 使用 weather_news_workflow 工作流处理任务。
- 编写后,你可以单击优化,让 AI 帮助你生成结构化的回复逻辑。
- 在 Bot 的右侧预览与调试区域,输入内容预览 Bot 实现的效果。
- 例如输入 杭州天气。