第9天下午_综合项目实训
大约 14 分钟教学文档Python基础
第三天下午培训详解:工作流深入与变量应用
🎯 培训主题:让校园百事通"会计算、懂逻辑、能统筹"——生活小管家进阶
📅 14:00-16:00|复杂工作流设计
🔹 学习目标
- 掌握复杂逻辑工作流的设计方法论(分支/循环/计算)
- 独立完成"开销预算计算器"工作流的编排与调试
- 学会处理用户输入的多样性与异常情况
- 理解工作流中的错误处理与用户体验优化
🔹 复杂工作流设计核心原理
🧩 从"线性"到"逻辑"的跨越
简单工作流(上午):
开始 → 插件调用 → 结束
(适合:查询类任务,如查天气)
复杂工作流(下午):
开始 → 输入校验 → 逻辑计算 → 条件分支 → 多路径处理 → 结果聚合 → 结束
(适合:决策类任务,如预算评估、审批流程)
核心挑战:
✅ 状态管理:如何在不同节点间传递中间结果?
✅ 逻辑分支:如何根据计算结果动态调整流程?
✅ 异常处理:当用户输入错误或计算失败时如何兜底?
📊 工作流节点高级用法
| 节点类型 | 高级功能 | 校园场景应用示例 |
|---|---|---|
| 代码节点 | 执行 Python/JS 复杂计算 | 预算累加、汇率转换、日期差计算 |
| 条件节点 | 多分支路由(If/Else If/Else) | 预算超支预警、成绩等级判定 |
| 循环节点 | 遍历列表数据(ForEach) | 批量处理多条消费记录、群发通知 |
| 子工作流 | 调用已保存的工作流(模块化) | 复用"身份验证"流程、调用"发送通知"流程 |
| 等待节点 | 暂停流程等待外部事件 | 等待审批结果、等待用户确认 |
🔹 实操步骤:设计"开销预算计算器"工作流
步骤1️⃣:需求分析与流程规划(20分钟)
🎯 场景描述:
学生希望记录每日开销,并判断是否超出月度预算,获得理财建议。
📋 输入参数设计:
┌─────────────────────────────────────┐
│ 参数名 │ 类型 │ 说明 │
├────────────────┼────────┼───────────┤
│ user_id │ 字符串 │ 用户标识 │
│ amount │ 数字 │ 消费金额 │
│ category │ 字符串 │ 消费类别 │
│ budget_limit │ 数字 │ 月度预算 │
│ spent_before │ 数字 │ 已消费金额 │
└─────────────────────────────────────┘
🔄 流程逻辑图:
开始节点
↓
[代码节点] 计算剩余预算 = budget_limit - (spent_before + amount)
↓
[条件节点] 判断剩余预算
├─ 分支 A (剩余 ≥ 0): 正常记录 → 生成鼓励语
├─ 分支 B (剩余 < 0 且 ≥ -100): 轻微超支 → 生成预警
└─ 分支 C (剩余 < -100): 严重超支 → 生成建议 + 限制消费提醒
↓
[结束节点] 统一输出格式(包含状态、金额、建议)
步骤2️⃣:工作流编排实战(40分钟)
🎯 操作路径:
Coze 平台 → 工作流 → 创建新工作流 → 命名为"expense_calculator"
📋 节点配置详解:
1️⃣ 开始节点(Start):
• 添加输入变量:
- amount (Number, Required)
- category (String, Required)
- budget_limit (Number, Default: 2000)
- spent_before (Number, Default: 0)
2️⃣ 代码节点(Calculator):
• 语言:Python 3
• 输入引用:{{start.amount}}, {{start.spent_before}}, {{start.budget_limit}}
• 代码逻辑:
```python
def main(amount, spent_before, budget_limit):
total_spent = spent_before + amount
remaining = budget_limit - total_spent
status = "normal"
advice = "消费合理,继续保持~"
if remaining < 0:
status = "over_budget"
if remaining < -100:
advice = "⚠️ 严重超支!建议暂停非必要消费,查看账单明细。"
else:
advice = "⚠️ 轻微超支,注意控制后续开销哦~"
return {
"total_spent": total_spent,
"remaining": remaining,
"status": status,
"advice": advice
}
```
• 输出定义:total_spent, remaining, status, advice
3️⃣ 条件节点(Condition):
• 分支 1(正常):表达式 `{{calculator.output.remaining}} >= 0`
• 分支 2(预警):表达式 `{{calculator.output.remaining}} < 0 AND {{calculator.output.remaining}} >= -100`
• 分支 3(严重):表达式 `{{calculator.output.remaining}} < -100`
• 作用:可根据不同分支添加不同的后续处理(如发送不同级别的通知)
4️⃣ 结束节点(End):
• 输出模板(JSON):
```json
{
"message": "✅ 已记录{{start.category}}消费{{start.amount}}元",
"total_spent": "{{calculator.output.total_spent}}",
"remaining": "{{calculator.output.remaining}}",
"status": "{{calculator.output.status}}",
"advice": "{{calculator.output.advice}}"
}
```
✅ 编排检查:
□ 所有变量引用语法正确({{node_id.output.field}})
□ 条件分支覆盖所有可能情况(无逻辑漏洞)
□ 数据类型匹配(数字不做字符串拼接)
步骤3️⃣ 测试不同输入场景(20分钟)
🧪 测试用例设计:
【场景 1:正常消费】
输入:amount=50, category="餐饮", budget=2000, spent=1000
预期:remaining=950, status="normal", 建议积极
【场景 2:轻微超支】
输入:amount=1050, category="购物", budget=2000, spent=1000
预期:remaining=-50, status="over_budget", 建议预警
【场景 3:严重超支】
输入:amount=2000, category="电子", budget=2000, spent=1000
预期:remaining=-1000, status="over_budget", 建议严厉
【场景 4:异常输入】
输入:amount=-100 (负数)
预期:在代码节点添加校验,返回"金额必须大于 0"错误提示
🔧 调试技巧:
• 使用"单步调试"功能,观察每个节点的输入输出
• 检查条件分支是否按预期命中
• 验证结束节点的最终输出格式是否便于前端展示
💡 讲师提示:复杂工作流的核心是"逻辑闭环"。务必考虑边界情况(如预算为 0、金额为负、网络超时),避免流程中断导致用户困惑[[28]]。
📅 16:00-17:00|变量概念与应用
🔹 学习目标
- 理解变量在工作流中的状态存储作用
- 掌握 Coze 工作流中变量的定义、赋值与引用方法
- 学会使用变量暂存中间结果,简化节点间数据传递
- 理解变量作用域与生命周期
🔹 变量核心概念解析
📦 为什么需要变量?
without 变量:
节点 A 输出 → 节点 B 输入 → 节点 C 输入
(问题:长链路中引用复杂,如{{A.output.B.output.C.field}})
with 变量:
节点 A 输出 → 存入变量 `total_cost`
节点 B/C 直接引用 `{{total_cost}}`
(优势:可读性强,易于维护,支持跨分支共享)
🗂️ Coze 工作流中的变量类型
| 类型 | 说明 | 示例 | 应用场景 |
|---|---|---|---|
| 字符串 (String) | 文本数据 | "食堂", "成功" | 用户输入、状态消息 |
| 数字 (Number) | 整数/浮点数 | 100, 3.14 | 金额、计数、评分 |
| 布尔 (Boolean) | 真/假 | true, false | 条件判断标志 |
| 对象 (Object) | 键值对集合 | 复杂数据结构 | |
| 数组 (Array) | 列表数据 | [1, 2, 3] | 多条记录、选项列表 |
| 临时变量 | 仅当前工作流有效 | var_temp_01 | 中间计算结果 |
| 全局变量 | 跨工作流/智能体共享 | user_preference | 用户偏好设置(需数据库支持) |
🔹 实操步骤:在工作流中应用变量
步骤1️⃣:定义与初始化变量(15分钟)
🎯 操作路径:
工作流编辑页 → 左侧"变量"面板 → 点击"添加变量"
📋 变量配置示例(预算计算器增强版):
┌─────────────────────────────────────┐
│ 变量名:daily_limit │
│ 类型:Number │
│ 初始值:100 │
│ 说明:每日餐饮限额 │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ 变量名:warning_flag │
│ 类型:Boolean │
│ 初始值:false │
│ 说明:是否触发预警 │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ 变量名:history_log │
│ 类型:Array │
│ 初始值:[] │
│ 说明:存储最近 5 条消费记录 │
└─────────────────────────────────────┘
💡 最佳实践:
• 命名规范:使用蛇形命名法(snake_case),如 `total_amount`
• 类型明确:不要混用类型(如不要把数字存为字符串)
• 默认值:为可选变量设置合理默认值,避免 Null 错误
步骤2️⃣:变量的赋值与更新(20分钟)
🔧 赋值方式:
方式 A:在节点输出中赋值
• 代码节点 return 字典 → 自动映射到输出变量
• 示例:`return {"updated_limit": new_limit}`
方式 B:使用"变量设置"节点(Variable Setter)
• 拖拽"变量"节点到画布
• 操作:设置/追加/清空
• 示例:
• 变量:`history_log`
• 操作:Append(追加)
• 值:`{{start.category}}: {{start.amount}}`
方式 C:在条件分支中更新
• 分支 A(正常):`warning_flag = false`
• 分支 B(超支):`warning_flag = true`
📋 实战修改预算工作流:
1. 添加变量 `spending_status` (String)
2. 在条件节点各分支中,使用"变量设置"节点更新该变量
• 正常 → "✅ 健康"
• 超支 → "⚠️ 预警"
3. 结束节点直接引用 `{{spending_status}}`,无需长链路引用
步骤3️⃣:变量引用与调试(25分钟)
🔍 引用语法:
• 全局变量:{{variables.var_name}}
• 节点输出:{{node_id.output.field}}
• 输入参数:{{start.param_name}}
🧪 调试技巧:
1. 添加"日志"节点(Log):
• 在关键步骤后添加日志节点,打印变量当前值
• 示例:`print(f"当前剩余预算:{{remaining}}")`
2. 观察变量面板:
• 运行测试时,左侧变量面板会实时显示值的变化
• 红色高亮表示类型不匹配或引用错误
3. 变量作用域测试:
• 尝试在子工作流外引用子工作流内部变量(应失败)
• 理解局部变量与全局输出的区别
⚠️ 常见错误:
• 变量未初始化直接使用 → 报错 Null Reference
• 类型不匹配(数字变量存字符串)→ 计算失败
• 循环中变量未重置 → 数据累积错误
💡 性能优化:避免在工作流中存储过大对象(如完整 HTML 页面),仅存储必要字段(如 title, link),减少内存占用与传输延迟[[29]]。
📅 17:00-18:00|模块整合与实战
🔹 学习目标
- 掌握插件、工作流、知识库、数据库的协同架构
- 实现"查询天气 + 提醒带伞 + 计算今日开销"复合场景
- 学会设计统一的用户交互界面与错误处理机制
- 完成第三天培训总结与整体项目验收
🔹 模块整合架构设计
🔄 "生活小管家"综合场景架构
用户指令:"今天生活情况怎么样?要花多少钱?"
│
┌───────────┴───────────┐
▼ ▼
[并行执行分支] [并行执行分支]
│ │
┌────┴────┐ ┌────┴────┐
▼ ▼ ▼ ▼
[天气插件] [数据库] [开销工作流] [知识库]
查天气 查昨日开销 算今日预算 查理财建议
│ │ │ │
└────┬────┘ └────┬────┘
│ │
▼ ▼
[变量聚合节点] ←──────────────┘
(整合所有数据)
│
▼
[条件判断节点]
(是否下雨?是否超支?)
│
▼
[结束节点]
(生成统一日报)
🔹 实战演练:构建复合场景工作流
步骤1️⃣:主工作流编排(30分钟)
🎯 工作流名称:daily_life_report
📋 节点编排细节:
1️⃣ 开始节点:
• 输入:user_id, date
2️⃣ 并行分支 A(环境与天气):
• 插件节点:天气查询 → 输出:temp, condition, precipitation
• 变量设置:`umbrella_needed = (precipitation > 50)`
3️⃣ 并行分支 B(财务与任务):
• 数据库节点:查询昨日开销 → 输出:yesterday_cost
• 工作流节点:调用"expense_calculator" → 输出:remaining, advice
• 变量设置:`budget_status = (remaining < 0)`
4️⃣ 聚合节点(Code):
• 输入:所有分支输出
• 逻辑:生成结构化报告数据
• 输出:report_json
5️⃣ 结束节点(Template):
• 使用 Jinja2 模板生成最终回复:
```jinja2
📅 {{date}} 生活管家日报
🌤️ 天气:{{weather.condition}} {{weather.temp}}°C
{% if umbrella_needed %}🌂 记得带伞哦!{% endif %}
💰 财务:
• 昨日开销:{{yesterday_cost}}元
• 本月剩余:{{remaining}}元
• 建议:{{advice}}
✅ 状态:{% if budget_status %}⚠️ 超支预警{% else %}✅ 正常{% endif %}
```
步骤2️⃣:异常处理与用户体验优化(15分钟)
🛡️ 容错设计:
• 插件超时:若天气插件 5 秒未响应,使用知识库默认值("天气数据暂缺,请出门前查看窗外")
• 数据缺失:若数据库无昨日记录,显示"暂无历史数据,从今天开始记录吧~"
• 工作流失败:若预算计算出错,捕获异常并返回"计算服务繁忙,请稍后重试"
🎨 交互优化:
• 加载提示:复杂工作流执行期间,显示"正在为您生成日报..."(避免用户以为卡死)
• 分步反馈:先返回天气(快),再追加财务信息(慢),或一次性返回
• 行动按钮:在回复末尾添加快捷按钮 [✍️ 记一笔] [📅 明日预算]
步骤3️⃣:端到端测试与验收(15分钟)
🧪 综合测试用例:
1. 正常场景:天气晴 + 预算充足 → 返回积极日报
2. 异常场景:天气雨 + 预算超支 → 返回预警日报 + 带伞提醒
3. 故障场景:天气插件失效 → 返回降级版日报(不含天气)
📊 验收标准:
□ 响应时间:< 10 秒(并行执行优化)
□ 数据准确性:天气/金额/建议无误
□ 格式美观:分段清晰,Emoji 适当,无乱码
□ 鲁棒性:单模块失败不影响整体返回
🔹 第三天培训总结与整体回顾
📚 三天知识体系地图
┌─────────────────────────────────────────────┐
│ 智慧校园助手开发全景图 │
├─────────────────────────────────────────────┤
│ Day 1: 基础与知识库 │
│ • 智能体创建 / 提示词工程 │
│ • 文本知识库 / 图片知识库 │
│ • 校园百事通模块(问答) │
├─────────────────────────────────────────────┤
│ Day 2: 数据与个性化 │
│ • 表格知识库(奖学金查询) │
│ • 数据库(个人任务/进度) │
│ • 奖学金与课程管家模块(个性化) │
├─────────────────────────────────────────────┤
│ Day 3: 插件与工作流 │
│ • 插件集成(天气/快递) │
│ • 工作流编排(预算/日报) │
│ • 变量应用 / 模块整合 │
│ • 生活小管家模块(办事/统筹) │
└─────────────────────────────────────────────┘
🎓 最终项目交付物清单
✅ 必交作业:
□ 1 个完整智能体(智慧校园助手)
□ 3 大模块功能验证:
• 校园百事通(文本/图片问答)
• 奖学金管家(表格查询 + 进度跟踪)
• 生活小管家(天气插件 + 预算工作流)
□ 1 份项目文档(含架构图、提示词、工作流 JSON)
□ 1 段演示视频(3 分钟内展示核心功能)
🏆 评优标准:
• 创新性:是否有独特的校园场景设计?
• 完整性:功能闭环,无明显 Bug
• 体验感:交互流畅,提示词友好
• 技术深度:是否合理运用工作流/变量/插件?
🚀 后续部署与运营建议
📢 发布渠道:
• Coze 商店:公开分享,获取社区反馈
• 微信公众号:通过 API 嵌入菜单栏
• 学校官网:嵌入悬浮窗或服务站
• 飞书/钉钉:作为企业内部机器人
📈 运营迭代:
• 数据监控:关注高频问题、插件调用失败率
• 用户反馈:设置"点赞/点踩"按钮,收集优化建议
• 定期更新:每学期初更新校历、知识库、插件配置
🔐 安全合规:
• 隐私政策:明确告知用户数据收集范围
• 数据脱敏:日志中隐藏用户 ID/手机号敏感信息
• 权限管理:定期审查插件与数据库访问权限
📋 下午培训成果检查清单
✅ 能力达成:
□ 能设计包含条件分支/代码计算的复杂工作流
□ 掌握变量的定义、赋值、引用与作用域管理
□ 能整合插件、工作流、数据库构建复合场景
□ 理解异常处理与降级策略的重要性
□ 完成"生活小管家"模块的端到端开发与测试
📊 交付物要求:
• 1 个"开销预算计算器"工作流(含分支逻辑)
• 1 个"每日生活日报"主工作流(整合多模块)
• 1 份变量使用说明文档(定义表 + 引用图)
• 1 页个人心得:工作流编排的 1 个关键洞察
🎉 结业预告:
• 证书颁发:完成所有作业并通过验收的学员
• 项目孵化:优秀作品推荐至学校信息化中心落地
• 社区交流:加入"Coze 校园开发者"社群,持续互助
💡 讲师寄语:
三天培训,我们从"创建第一个 Bot"到"构建复杂应用系统"。
技术是工具,服务师生才是初心。
愿你们打造的智慧校园助手,成为师生生活中温暖的存在!
保持热爱,持续迭代,未来可期!✨
📚 附:培训资源与延伸学习
📂 三日汇总材料包:
1. 《Coze 校园助手开发全集.pdf》(含三天课件)
2. 《提示词工程最佳实践.md》
3. 《工作流模板合集.json》(日报/预算/审批)
4. 《插件配置清单.xlsx》
5. 《项目验收标准与评分表.docx》
🔗 技术参考:
• Coze 官方文档:https://www.coze.cn/docs
• 工作流进阶指南:https://www.coze.cn/docs/workflow/advanced
• 社区案例库:https://www.coze.cn/store/bot(搜索"校园")
💬 持续支持:
• 技术支持群:工作日 9:00-18:00 在线答疑
• 月度分享会:邀请优秀开发者分享落地经验
• 黑客松活动:定期举办校园 AI 应用创新大赛
🎓 结业认证:
• 完成所有实操任务 → 获得"Coze 校园开发者"电子证书
• 项目落地应用 → 获得"优秀实践案例"推荐信
• 持续贡献社区 → 获得"社区导师"荣誉标识
🔐 最后提醒:发布前务必进行隐私安全审查,确保不包含学生敏感信息(如身份证号、完整手机号),遵守学校数据安全管理规定[[30]]。
