1
工作流程介绍
工作流支持通过可视化的方式,对插件、大语言模型、代码块等功能进行组合,从而实现复杂、稳定的业务流程编排,例如旅行规划、报告分析等。 当目标任务场景包含较多的步骤,且对输出结果的准确性、格式有严格要求时,适合配置工作流来实现。功能概述
工作流由多个节点构成,节点是组成工作流的基本单元。例如,大语言模型 LLM、自定义代码、判断逻辑等节点。 工作流默认包含了 Start 节点和 End 节点。- Start 节点是工作流的起始节点,可以包含用户输入信息。
- End 节点是工作流的末尾节点,用于返回工作流的运行结果。
节点名称 | 描述 |
---|---|
LLM | 大语言模型节点,该节点支持选择不同的 AI 模型处理文本生成任务。 |
Code | 代码节点。通过 IDE 编写代码处理输入参数,并返回输出值。 |
Knowledge | 知识库节点。根据输入参数从关联知识库中召回数据,并返回。 |
Condition | if-else 逻辑节点。满足设置条件则运行 if 分支,否则运行 else 分支。 |
Variable | 变量节点。用于读取和写入 Bot 中的变量。 |
典型场景
工作流常用于处理报告分析、旅行规划等多步骤的复杂 AI 任务,但也不限制于仅处理复杂任务。你可以灵活搭配各类型的节点,构建适用于自身需求的工作流。以下提供了工作流的典型场景供你参考。入门场景
仅添加一个节点所构建的简单工作流。- 场景一:通过工具节点内的插件能力,自定义工作流。例如,使用 getNews 插件,构建一个用于获取新闻列表的工作流。
- 场景二:使用大语言模型(LLM)节点,接收并处理用户问题。
- 场景三:使用 Code 节点,生成随机数。
进阶场景
通过多节点组合,构建逻辑较复杂的工作流。- 场景一:搜索并获取指定信息的详情。先通过插件能力进行关键词搜索、然后通过 Code 节点过滤指定信息、最后通过插件能力获取信息详情。
- 场景二:通过条件判断,识别用户意图。例如,通过 LLM 节点处理用户消息,将消息分为不同的类型,然后通过 Condition 节点分别处理不同类型的用户消息。
Last updated: 2024/2/26 10:58
2
使用工作流
通过本文你可以了解如何创建、发布、复制工作流,以及如何在 Bot 中添加工作流。 使用工作流的顺序如下:- 创建工作流。
- 配置工作流。添加工作流节点并按照要处理的用户任务顺序连接工作流。
- 测试并发布工作流。
- 将工作流添加到你的 Bot 内。
步骤一:创建工作流
- 登录 Coze。
- 在左侧导航栏的 My Workspace 区域,选择进入指定团队。
- 在页面顶部进入 Workflows 页面,单击 Create workflow。
- 设置工作流的名称与描述,并单击 Confirm。清晰明确的工作流名称和描述,有助于大语言模型更好的理解工作流的功能。创建后页面会自动跳转至工作流的编辑页面,初始状态下工作流包含 Start 节点和 End 节点。 - Start 节点用于启动工作流。 - End 节点用于返回工作流的运行结果。
步骤二:配置工作流
创建工作流后,你可以通过拖拽的方式将节点添加到画布内,并按照任务执行顺序连接节点。 工作流提供了基础节点供你使用,除此之外,你还可以添加插件节点来执行特定任务。- 在左侧面板中选择要使用的节点。
- 将节点拖拽到画布中,并与其他节点相连接。
- 配置节点的输入输出参数。
配置 LLM 节点
LLM 节点是 Coze 提供的基础节点之一,你可以使用该节点的大语言模型处理文本生成任务。节点配置说明:- Model:所用的大语言模型。
- Temperature:模型生成内容的随机度。取值范围[0-1],数值越大表示生成不确定性越高、内容越多元。
- Prompt:该节点的提示词。在提示词中支持使用 引用输入参数(Input)。
- Batch processing:支持配置批量处理模式,后续该节点会按照配置多次运行。每次运行都会分配参数值,直到达到次数限制或者列表的最大长度。
配置 Code 节点
你可以在 Code 节点内使用 IDE 工具,通过 AI 自动生成代码或编写自定义代码逻辑,来处理输入参数并返回响应结果。 该节点支持 JavaScript、Python 运行时。JavaScript
- JavaScript 支持 TypeScript,提供静态语言编码体验。
- JavaScript 中,仅内置了dayjs(版本 1.8.36) 和 lodash(版本 4.17.20) 两个三方依赖库。javascript
- JavaScript 运行时遵循 WinterCG 规范,支持 Minimum Common Web Platform API 列举的大多数 API,具体可用的 API 你可以在 IDE 内编码时参考代码提示。
Python
Python 中,仅内置了 requests_async 和 numpy 两个三方依赖库,requests_async 依赖库与 requests 类似,但需要 await。python
节点操作说明
在节点内的 Code 区域单击 Edit in IDE 可通过 IDE 编辑和调试代码。 具体使用说明如下:- 使用 AI 生成代码你可以在 IDE 底部单击 Try AI,并输入自然语言设定代码逻辑,AI 将自动生成代码。你也可以选中代码片段,通过快捷键(macOS 为 Command + I、Windows 为 Ctrl + I)唤起 AI,并输入自然语言让 AI 帮助你修改代码。
- 补全代码如果你已经为 Code 节点配置好了输入参数,则编辑时支持自动补全参数。
- 调试代码单击 Test Code,在测试面板以 JSON 格式输入参数进行测试。支持使用 AI 自动生成模拟数据进行测试。设置输入参数后,单击 Run,你可以在 Output Value 区域查看运行结果。在页面底部单击 Update Schema,可将结果同步到 Code 节点的 Output。
配置 Knowledge 节点
知识库节点可以根据输入参数从指定知识库内召回匹配的信息。节点配置说明:- 设置 Input,节点会根据参数值召回关键内容。
- 设置 Knowledge,你需要使用的知识库。 - Maximum number of recalls:从知识库召回的最大段落数,数值越大返回的内容越多。 - Minimum matching degree:知识库会根据设置的匹配度召回段落,低于匹配度的内容将不会被召回。
配置 Condition 节点
该节点是一个 if-else 节点,用于设计工作流内的分支流程。 当向该节点输入参数时,节点会判断是否符合 If 区域的条件,符合则执行 If 对应的工作流分支,否则执行 Else 对应的工作流分支。配置 Variable 节点
该节点用于读取和写入 Bot 中的变量。 Variable 节点需要搭配 Bot 使用,即你需要先创建 Bot 并设置变量,然后再来编辑包含 Variable 节点的工作流,并且 Variable 节点内的变量名称需要和 Bot 内的变量名称保持一致。- 选择 Set variable value to bot,你可以将工作流中的参数,赋值到 Bot 的变量中。该操作的 Output 用于校验是否成功为 Bot 变量赋值。
- 选择 Get variable value from bot,你可以获取 Bot 内的变量值,并作为 Output 使用。
步骤三:测试并发布工作流
完成工作流编辑后,你可以单击页面右上角的 Test run 测试工作流。测试时,运行成功的节点边框会显示绿色,运行失败的节点边框会显示红色。在各节点的右上角单击 Display result 可查看节点的运行结果。该测试能力用于确保工作流在发布前,所有节点均已正确运行。 要想在 Bot 内使用该工作流,则需要发布工作流。- 单击 Test run。运行成功的节点边框会显示绿色,在各节点的右上角单击 Display result 可查看节点的输出。
- 单击发布。只有试运行成功时,才能发布工作流。
步骤四:在 Bot 中添加工作流
- 前往当前团队的 Bots 页面,选择进入指定 Bot。
- 在 Bots 编排页面的 Workflows 区域,单击 +。
- 在 Add workflow 对话框的 I created 页面,选择自建的工作流。
- 在 Bot 的 Persona & Prompt 区域设置提示词,引用工作流的名称来调用工作流。
其他操作
复制工作流
在某一工作流的编辑页面,单击右上角的 Duplicate 图标,可以将该工作流复制到你的 Workflows 列表。删除工作流
对于不再需要使用的工作流,你可以在 Workflows 列表的 Actions 列单击删除图标。 如果工作流已添加至 Bot,在删除时会同步删除 Bot 中的工作流。
//only dayjs and lodash are allowed
import dayjs from 'dayjs';
import _ from 'lodash';
async function main({ params }: Args): Promise<Output> {
// get input params by this way
return {
content: params.name
};
}
import requests_async as requests
async def main(args: Args) -> Output:
# you can get url by this way
url = args.params['url']
response = await requests.get(url)
ret = {
'code': response.status_code,
'res': response.text,
}
return ret
Last updated: 2024/2/26 10:58