第6章:工作流 (Workflow):编排复杂的业务逻辑
摘要:工作流是Coze中处理复杂多步骤任务的核心工具,通过可视化拖拽界面实现精准逻辑编排。基础节点包括Start(定义输入)、LLM(文本处理)、Code(执行代码)、If/Else(条件判断)和End(输出结果)。工作流可结合知识库、插件等能力,实现端到端自动化,如“智能招聘助手”案例所示:解析简历→筛选→安排面试→通知候选人。工作流为大模型行为提供稳定性和可控性,适用于需条件判断、格式化输出或
6.1 工作流的可视化编排界面
内容讲解
如果说提示词定义了 Bot 的“性格”,插件和知识库扩展了它的“能力”,那么工作流(Workflow)则赋予了 Bot 一个“严谨的思维逻辑”。工作流是 Coze 中用于处理复杂、多步骤、有明确逻辑顺序的任务的核心工具。
与完全依赖大模型“自由发挥”的提示词不同,工作流通过一个可视化的拖拽界面,让你能够像画流程图一样,精确地定义每一步操作。这为 Bot 的行为提供了极高的稳定性和可控性。
何时使用工作流?
- 当任务需要多个步骤才能完成时(例如:先搜索信息,再处理数据,最后生成报告)。
- 当任务包含条件判断逻辑时(例如:如果用户是VIP,则执行A流程;否则执行B流程)。
- 当你需要对大模型的输出进行格式化或结构化处理时。
- 当你需要稳定、可复现的结果时。
界面导览:
- 画布 (Canvas):中心区域,你将在这里拖拽和连接节点来构建你的流程。
- 节点面板 (Node Panel):左侧面板,包含了所有可用的节点类型,如大模型、代码、判断等。
- 配置面板 (Configuration Panel):右侧面板,当你选中一个节点时,这里会显示该节点的详细配置选项。
- 开始/结束节点:每个工作流都有一个唯一的“开始”节点和一个或多个“结束”节点,代表流程的起点和终点。
6.2 基础节点详解
内容讲解
工作流是由一个个“节点”连接而成的。每个节点代表一个特定的操作。让我们来了解几个最基础、最核心的节点。
-
Start (开始) 节点:
- 功能:定义工作流的输入参数。例如,一个“请假流程”工作流可能需要
employee_name
和leave_days
作为输入。 - 配置:你可以添加、删除和重命名输入变量。
- 功能:定义工作流的输入参数。例如,一个“请假流程”工作流可能需要
-
LLM (大语言模型) 节点:
- 功能:调用大模型进行一次文本生成或处理。这是工作流的“思考”核心。
- 配置:你可以为这个特定的调用编写独立的提示词,并选择使用哪个模型(如 Moonshot、GPT-4 等)。你可以引用上游节点的输出作为提示词的一部分。
-
Code (代码) 节点:
- 功能:执行一小段 Python 或 Node.js 代码。用于数据处理、计算、调用外部 API 等 LLM 不擅长的任务。
- 配置:编写你的代码,并定义代码的输入和输出变量。
-
If/Else (判断) 节点:
- 功能:根据一个条件,将流程导向不同的分支。
- 配置:设置一个或多个条件表达式(例如
input.leave_days > 3
),每个条件对应一个分支的出口。
-
End (结束) 节点:
- 功能:标志着工作流的结束,并定义整个工作流的输出结果。
- 配置:你可以设置工作流是成功还是失败,并指定哪些变量作为最终的输出返回给 Bot。
6.3 在 Bot 中触发工作流
内容讲解
创建好工作流后,你需要告诉 Bot 在什么情况下应该去“运行”这个工作流。触发工作流的方式非常简单,本质上是把它当作一个“超级插件”来使用。
操作步骤
-
创建工作流:
- 在 Coze 工作台左侧导航栏,点击“工作流”,然后“创建工作流”。
- 让我们创建一个简单的“头条新闻播报”工作流:
- Start 节点:不需要输入。
- LLM 节点:提示词写
“总结今天最重要的三条国内新闻头条。”
- End 节点:将 LLM 节点的输出作为工作流的输出。
- 保存工作流,命名为
daily_news_workflow
。
-
在 Bot 中添加工作流:
- 进入你的 Bot 编辑页面。
- 在左侧技能编排区,像添加插件一样,点击“工作流”旁边的“+”号,选择你刚刚创建的
daily_news_workflow
。
-
修改提示词以触发工作流:
- 在“人设与回复逻辑”中,明确指示 Bot 何时使用该工作流。
# 技能 - 当用户询问“今天有什么新闻”或类似问题时,你必须调用【daily_news_workflow】工作流来获取新闻内容,并播报给用户。
- 在“人设与回复逻辑”中,明确指示 Bot 何时使用该工作流。
-
调试测试:
- 在预览窗口输入
今天有什么新闻?
- 在“调试信息”中,你会看到 Bot 准确地调用了
daily_news_workflow
,并将工作流的执行结果作为最终回复的内容。
- 在预览窗口输入
6.4 综合实战:构建“智能招聘助手”工作流
项目目标:设计一个能够自动化处理初步招聘流程的复杂工作流。该工作流需要能够解析候选人信息,根据知识库中的岗位要求进行初步筛选,并调用插件来安排面试。
准备工作:
- 知识库:创建一个名为
JD_KB
的知识库,里面存放一个后端工程师JD.txt
文件,内容包括岗位职责和要求(如:要求:精通Python,熟悉Django框架,3年以上工作经验
)。 - 插件:在 Bot 中添加一个“日历”插件(用于安排面试)和一个“邮件”插件(用于发送通知)。
工作流设计
graph TD
A[Start<br>input: candidate_info] --> B{LLM: 解析简历<br>Prompt: "从'{{A.candidate_info}}'中提取姓名、联系方式、工作年限、核心技能。"<br>Output: name, contact, experience, skills};
B --> C{Knowledge Retrieval: 检索岗位要求<br>KB: JD_KB<br>Query: "后端工程师的任职要求是什么?"<br>Output: jd_requirements};
C --> D{If: 初步筛选<br>Condition: {{B.experience}} >= 3 AND 'Python' in {{B.skills}}};
D -- Pass --> E{Code: 格式化面试信息<br>Input: {{B.name}}<br>Code: 生成面试时间、会议链接<br>Output: interview_time, meeting_link};
E --> F[Plugin: 创建日历事件<br>Tool: Calendar.create_event<br>Params: title="面试-{{B.name}}", time={{E.interview_time}}];
F --> G[Plugin: 发送面试通知<br>Tool: Email.send<br>Params: to={{B.contact}}, subject="面试邀请", body="详情见日历"];
G --> H[End<br>output: "已成功为候选人 {{B.name}} 安排面试,并发送了通知邮件。" ];
D -- Fail --> I[End<br>output: "候选人 {{B.name}} 的条件不符合初步要求,已归档。" ];
节点配置详解:
-
Start 节点:
- 定义一个输入变量
candidate_info
,类型为字符串,用于接收用户粘贴的候选人简历文本。
- 定义一个输入变量
-
LLM 节点 (解析简历):
- Prompt:`# 角色
你是一个专业的HR助理。
- Prompt:`# 角色
任务
从以下候选人信息中,提取姓名、联系方式(邮箱或电话)、工作年限(数字)、核心技能(列表)。以JSON格式输出。
候选人信息:
{{A.candidate_info}} - **输出**:配置
name,
contact,
experience,
skills` 四个输出变量,对应 JSON 的键。
-
Knowledge Retrieval 节点 (检索岗位要求):
- 知识库:选择
JD_KB
。 - 检索查询:输入固定的查询“后端工程师的任职要求是什么?”来获取标准。
- 输出:将检索到的文本内容赋值给输出变量
jd_requirements
。
- 知识库:选择
-
If 节点 (初步筛选):
- 条件设置:添加一个条件分支。
- 表达式:
{{B.experience}} >= 3 && {{B.skills}}.includes('Python')
(注意:实际语法取决于 Coze 平台,这里是示意)。这个表达式会判断从简历中提取的工作年限和技能是否满足基本要求。
-
Code 节点 (格式化面试信息):
- 输入:
name
(来自B节点)。 - 代码 (Python):
from datetime import datetime, timedelta def handler(args: dict): # 假设安排面试在两天后 interview_dt = datetime.now() + timedelta(days=2) interview_time_str = interview_dt.strftime('%Y-%m-%d %H:%M') # 生成一个假的会议链接 meeting_link = f"https://meet.coze.com/{args['name']}-{datetime.now().timestamp()}" return {"interview_time": interview_time_str, "meeting_link": meeting_link}
- 输出:
interview_time
,meeting_link
。
- 输入:
-
后续插件节点:
- 依次拖入日历和邮件插件节点,并将前面节点生成的
name
,contact
,interview_time
等变量作为参数传入。
- 依次拖入日历和邮件插件节点,并将前面节点生成的
在 Bot 中使用:
- Prompt:`# 技能
- 当我发送一段简历文本时,你必须调用【intelligent_recruiter_workflow】工作流来处理它。`
- 使用:直接将一段简历文本粘贴给 Bot,工作流就会被触发,自动完成整个筛选和安排流程。
本章总结
本章我们掌握了 Coze 中最强大的逻辑编排工具——工作流。通过学习,我们不仅熟悉了其可视化的编排界面和 Start, LLM, Code, If/Else, End 等核心节点的配置,还通过一个复杂的“智能招聘助手”实战项目,体验了如何将大模型、代码、知识库、插件等多种能力在一个工作流中协同配合,实现真正端到端的业务自动化。
掌握了工作流,你就拥有了从简单的问答 Bot 开发者,向着能够构建企业级、高可靠性 AI 应用的架构师迈进的关键能力。
更多推荐
所有评论(0)