AI大模型学习第十二天:Coze工作流与智能体开发

写在前面:为什么你需要了解智能体

如果你用过ChatGPT、豆包或者deepseek这类大模型,你可能会发现一个现象:它们很聪明,但有时候也很"笨"。

比如你问它"今天北京适合出门吗",它可能会告诉你北京的天气特点,但给不出今天实时的天气预报。再比如你让它"帮我把这份合同里的甲方、乙方和金额提取出来",它说"请上传文件"------但你上传之后,它真的能准确提取吗?不一定。

这就是大模型的天然局限:它只有"大脑",没有"手和脚"。它知道怎么做,但没法自己去查实时数据、读本地文件、调用外部接口。

智能体(Agent)就是来解决这个问题的。

一句话理解智能体:大模型的思考能力 + 工具的执行能力。

本文基于Coze平台,带你完整走一遍智能体开发的流程。读完你会明白:

  • 智能体和普通聊天有什么区别

  • 工作流是什么、节点怎么用

  • 怎么让AI联网搜索、理解图片、读取文档

  • 搭建一个能用的智能体需要几步

  • 出了问题怎么调试


第一部分:先搞清楚几个核心概念

1.1 智能体 = 大脑 + 手脚

把智能体拆开看,就两部分:

组成部分 作用 类比
大模型 理解问题、分析目标、规划步骤、生成回答 大脑
工具 执行具体动作:搜索、查天气、读文件、调接口 手和脚

一个智能体典型的工作流程是这样的:

  1. 用户说:"帮我规划一个三天两夜的成都旅游方案"

  2. 大模型理解:这是一个旅游规划需求

  3. 智能体判断:需要查成都的景点、天气、美食信息

  4. 调用搜索工具:获取实时信息

  5. 大模型整理:把搜索结果组织成行程表

  6. 输出给用户:清晰的路线、住宿建议、注意事项

你看,整个过程不是简单的一问一答,而是有目标、有计划、有执行、有输出的完整闭环。

1.2 Coze是什么?为什么学它?

Coze(扣子)是字节跳动推出的AI智能体开发平台,低代码、可视化、上手快。

学Coze的三个理由:

第一,快速出成果。 不用写代码,拖拽节点、配置参数,半小时就能跑通一个能联网搜索、能读文档的智能体。

第二,理解通用思路。 即使以后公司不用Coze,换Dify、LangChain或者自己写代码,底层的逻辑是一样的:输入→理解→调用工具→整理→输出。

第三,培养产品思维。 做一个AI功能,不是"写一句提示词"就完了。你要考虑输入格式、异常情况、分支判断、输出质量、用户体验------这些都是实际项目绕不开的。

1.3 平台核心概念速览

概念 一句话解释 小白的理解方式
空间 业务隔离区,不同业务分开管理 像公司里的不同部门
项目 围绕一个目标组织的资源集合 像一个"求职助手"项目
资源库 存放插件、知识库、工作流的公共仓库 像工具箱,拿过来就能用
工作流 任务流水线,节点按顺序执行 像工厂的装配线
插件 封装好的外部能力,如搜索、天气 像手机里的App
知识库 存放文档资料,帮模型补充专业知识 像参考资料书架

一个容易混淆的点:工作流 ≠ 智能体

  • 工作流是一个工具,就像一把螺丝刀

  • 智能体是一个能干活的人,它可以拿螺丝刀干活

一个智能体可以挂载多个工作流,比如旅游规划工作流、简历解析工作流、天气查询工作流。用户说不同的话,智能体决定调用哪个工具。


第二部分:工作流详解------从零搭一条任务流水线

2.1 工作流长什么样

工作流就是一张有方向的流程图。数据从开始节点流入,经过各种处理节点,最后从结束节点流出。

三个基本节点:

  • 开始节点:接收用户输入

  • 中间节点:处理任务(大模型节点、插件节点、判断节点等)

  • 结束节点:输出最终结果

一个重要的规则:工作流必须是有向无环图(DAG)

  • 有向:数据只能往前走,不能倒流

  • 无环:不能绕回自己,否则会死循环

2.2 开始节点------入口

开始节点是工作流的唯一入口。它定义用户需要传入什么信息。

常见场景:

python 复制代码
# 纯文本输入
输入变量: user_input
类型: string
说明: 用户的问题或需求

# 需要处理图片
输入变量: uploaded_image
类型: image
说明: 用户上传的图片

# 需要处理文档
输入变量: document
类型: file
说明: 用户上传的PDF或Word文件

小白最容易犯的错:处理图片任务时,开始节点仍然只设置了字符串类型的输入。结果图片传不进去,插件收不到图片,整个流程卡住。

正确做法:根据任务需要,选择正确的输入类型------文本用string,图片用image,文档用file。

2.3 大模型节点------大脑

大模型节点是工作流的核心,负责理解、判断、生成。

需要配置的内容:

python 复制代码
系统提示词(System Prompt):
你是一个专业的旅游规划助手。用户会告诉你想去的地方和时间,你需要给出详细的行程安排。

用户提示词(User Prompt):
用户需求:{{user_input}}
目的地城市:{{city}}(如果已提供)

请按以下格式输出:
1. 每日行程安排
2. 当地美食推荐
3. 实用注意事项

变量引用是关键 :你在左侧添加了变量,必须在提示词里用{``{变量名}}的方式引用,否则模型感知不到。

输出字段选择 :大模型节点通常会产生多个输出字段,比如output(正式回答)、reasoning_content(推理过程)、usage(token消耗)。结束节点应该选output,不要选reasoning_content,否则用户会看到一堆模型自己的思考过程。

2.4 选择器节点------明确条件的判断

选择器节点就是if/else,适合处理明确的、规则性的条件判断。

适合用选择器的场景:

判断条件 走A分支 走B分支
用户输入是否为空 提示"请告诉我具体需求" 继续处理
城市参数是否已提供 追问"请告诉我城市" 直接查询
文件是否上传成功 提示"请重新上传" 提取文件内容

不适合用选择器的场景:判断用户意图是"旅游规划""闲聊"还是"查资料"。这种语义理解的任务,要用专门的"意图识别节点"。

2.5 意图识别节点------语义分类

意图识别节点本质是让大模型做分类。它不是判断字符串是否相等,而是理解这句话属于哪一类需求

举个例子:

用户说:

  • "帮我安排一个三天两晚的杭州旅游"

  • "我想去西安玩,有没有路线推荐"

  • "端午节去长沙怎么安排"

这三句话文字完全不同,但意图都可以归为travel_plan

意图识别节点的典型输出:

python 复制代码
{
  "classification_id": 1,
  "classification_name": "旅游规划",
  "confidence": 0.95
}

一个致命错误 :有人会把classification_id(比如数字1)直接传给后面的大模型节点,让模型围绕数字"1"生成内容。结果是模型完全不知道用户到底想干什么。

正确做法

  • classification_id只用来决定走哪条分支

  • 真正给大模型生成答案时,还是传用户的原始输入

2.6 输入节点------中途补充信息

输入节点用于在工作流中间向用户追问信息

典型场景:用户说"帮我规划旅游",但没说去哪里。

流程应该是:

  1. 大模型判断:缺少目的地信息

  2. 输入节点:向用户提问"请问你想去哪个城市?"

  3. 用户回复"成都"

  4. 工作流继续,用"成都"作为城市参数

配置要点:

python 复制代码
# 输入节点设置
提问内容: 请问您想去哪个城市?
输出变量名称: city
输出变量类型: string

常见错误

  • 新变量还叫input,和开始节点的输入冲突 → 改个清晰的名字如city

  • 输入节点收集了city,后面的大模型节点没有添加city变量 → 必须添加并在提示词中引用

2.7 结束节点------输出

结束节点决定用户最终看到什么。

好输出的标准:

  • 结构清晰(用列表、分段而不是一大坨文字)

  • 语言自然,像人在说话

  • 和用户问题直接相关

  • 必要时说明信息来源

错误示范:直接把插件的原始JSON输出给用户

python 复制代码
{"items":[{"title":"成都旅游攻略","url":"..."}]}

用户看到这个会懵。

正确示范:先让大模型整理成易读的文本

python 复制代码
根据搜索结果,我为您整理了成都三日游的建议:

第一天:上午参观武侯祠,下午逛锦里古街...
第二天:...
第三天:...

美食推荐:火锅、串串、担担面...
注意事项:...

第三部分:插件------给AI装上手和脚

插件就是别人封装好的功能模块,拖进工作流就能用。它解决了大模型的几个天然短板:

大模型做不到的事 对应的插件
查不到今天的天气 天气查询插件
不知道昨晚的球赛比分 联网搜索插件
看不懂图片里的文字 图片理解插件
读不了PDF和Word 文档提取插件

3.1 联网搜索插件------获取实时信息

使用场景:新闻、天气、政策、活动、产品信息等实时或模型不确定的内容。

基础配置(以搜索插件为例):

python 复制代码
节点名称: bing_search
参数:
  query: "{{user_input}}"  # 用用户输入作为搜索词
  count: 5                  # 返回5条结果
输出字段: 
  - text        # 搜索结果的文本内容
  - title       # 每条结果的标题
  - url         # 来源链接

一个完整的搜索工作流

  1. 开始节点接收用户输入

  2. 搜索插件用用户输入作为关键词查询

  3. 大模型节点对搜索结果进行整理(不是直接输出原始结果)

  4. 结束节点输出整理后的内容

为什么不能直接输出搜索结果? 因为搜索结果可能是原始网页片段、广告、无关内容。必须让大模型做一次"筛选+归纳+组织",才能给用户高质量的回答。

3.2 图片理解插件------识别图片内容

使用场景:商品识别、截图信息提取、海报分析、手写文字识别。

配置要点

  1. 开始节点必须增加图片类型的输入变量

  2. 插件接收图片变量

  3. 可以配合提示词告诉模型"重点分析什么"

示例:分析餐厅菜单

python 复制代码
提示词:请从这张菜单图片中,提取出所有菜品名称和价格,按价格从低到高排序输出。

一个备选方案:如果插件效果不好,可以直接用支持多模态的大模型节点(如GPT-4V、Claude 3)处理图片,跳过插件节点。

3.3 文档提取插件------把文件变成文字

使用场景:简历解析、合同摘要、论文阅读、课程资料整理。

核心逻辑:文档(PDF/Word/PPT)→ 提取成纯文本 → 大模型处理文本

安全提醒:真实工作中,不要把包含个人隐私(真实简历、身份证)或公司机密(合同、财务数据)的文件上传到公开的云平台。课堂练习或演示时,请使用脱敏的样例数据。


第四部分:从零搭建一个旅游规划智能体

我们用旅游规划作为第一个完整案例。它包含完整链路:接收输入 → 联网搜索 → 大模型整理 → 输出结果。

4.1 基础版本(5步完成)

第1步:创建工作流

名称:travel_planner_basic

描述:根据用户的需求生成旅游规划方案

第2步:开始节点

python 复制代码
输入变量: user_input
类型: string
说明: 用户想去的城市和天数,如"成都三天两晚"

第3步:联网搜索节点

选择搜索插件(如必应搜索、百度搜索),配置:

python 复制代码
query: {{user_input}}
结果数量: 5

第4步:大模型节点

python 复制代码
系统提示词:
你是专业旅游规划师。根据搜索结果,为用户生成旅游方案。

用户提示词:
用户需求:{{user_input}}
搜索结果:{{search_results}}

输出格式:
## 行程安排
- 第1天:xxx
- 第2天:xxx

## 美食推荐
- xxx

## 注意事项
- xxx

第5步:结束节点

输出选择大模型节点的output字段。

测试一下:输入"西安三天两晚旅游" → 应该看到完整的行程规划。

4.2 升级版本(增加健壮性)

基础版本跑通后,可以逐步增加节点处理边界情况:

增加1:判断输入是否为空

在选择器节点中判断:如果user_input为空,直接输出"请告诉我你想去哪里、玩几天"。

增加2:追问缺失信息

如果用户只说了"旅游规划"没说城市,用输入节点追问"你想去哪个城市"。

增加3:意图识别

把用户需求分成三类:旅游规划、闲聊、其他。不同意图走不同分支。

增加的重要原则:每加一个节点就测试一次。不要等全部搭完再测试,否则十几个节点同时出问题,调试会非常痛苦。


第五部分:从工作流到智能体------让AI会用工具

工作流做好了,它只是一个"工具"。智能体才是那个"会选工具的人"。

5.1 搭建一个智能体

第1步:创建智能体

选择"单Agent模式",命名如"我的旅游助手"。

第2步:写人设和任务说明

python 复制代码
你是一个智能旅游助手。

你的能力:
1. 当用户需要旅游规划时,调用travel_planner工作流
2. 当用户闲聊时,直接友好回复
3. 当用户问天气时,调用天气查询工作流

规则:
- 必须判断用户意图后再决定用哪个工具
- 如果工作流返回结果,直接输出给用户
- 如果工作流失败,提示用户稍后重试

第3步:添加工具

把已经发布的工作流添加到智能体的工具列表。

⚠️ 关键提醒:工作流必须先发布,智能体才能正常调用。如果工作流显示"草稿"状态,在智能体里是找不到的。

第4步:配置开场白

python 复制代码
你好!我是旅游助手。你可以告诉我:
- "帮我规划一个成都三天两晚的行程"
- "北京两日游有什么推荐"
- "西安旅游要注意什么"

第5步:预览调试

分别测试几个场景:

  • 完整的旅游规划请求 → 应该调用工作流

  • 单纯的问候"你好" → 应该直接回复,不调用工具

  • 信息不完整的请求 → 应该追问

5.2 为什么智能体没有调用我的工作流?

这是最常见的问题。可能原因及解决方案:

现象 可能原因 解决办法
智能体完全不理会,直接自己回答 人设说明里没写清楚什么情况下用哪个工具 补充"当用户提到旅游规划时,必须调用xxx工作流"
智能体说"我没有这个能力" 工作流没有添加到工具列表,或者没有发布 确认工作流已发布并添加到智能体
调用时参数传错了 工作流的开始节点变量名和智能体传的不一致 检查变量名是否匹配
有时候调用有时候不调 工具描述不够清晰,模型不确定该不该用 优化工作流的名称和描述,见名知意

第六部分:调试指南------学会看日志

AI开发的调试和传统软件开发不一样。传统代码调试可以打断点、看变量,AI开发的核心调试方式是看运行日志

6.1 日志里看什么

运行一次后,在日志详情里逐个检查每个节点:

开始节点:用户输入有没有正确传入?

python 复制代码
✅ 正常:user_input = "成都三天两晚旅游"
❌ 异常:user_input = "" 或 user_input = undefined

插件节点:插件有没有被调用?参数对不对?返回了什么?

python 复制代码
✅ 正常:搜索插件返回了5条结果,有标题和内容
❌ 异常:报错"缺少必填参数query"

大模型节点:提示词里的变量有没有被替换?

python 复制代码
✅ 正常:提示词中的{{city}}被替换成了"成都"
❌ 异常:提示词里还显示{{city}},模型看到了原样文本

结束节点:选择了正确的输出字段吗?

python 复制代码
✅ 正常:选择了大模型节点的output字段
❌ 异常:选了reasoning_content,输出一堆推理过程

6.2 常见问题速查表

问题现象 可能原因 解决方案
页面提示"变量xxx未定义" 变量添加了但没连线,或连线断了 检查节点之间的连线
输出内容为空 结束节点选错了输出字段 确认选的是output而不是别的
大模型回答和用户问题没关系 提示词里没引用用户输入的变量 在提示词中用{{变量名}}引用
插件没返回结果 参数填错了,或API Key失效 检查插件配置,查看日志中的错误信息
工作流执行超时 节点太多、搜索返回太多、模型太慢 简化流程、减少搜索条数、换更快模型
输入节点问完问题就结束了 输入节点后面的连线断了 把输入节点的输出连到后续节点
智能体不调用工具,自己硬答 人设说明不够明确 在提示词里写"必须使用工具,不要自己猜测答案"

6.3 一个小习惯:逐步测试

不要等到所有节点都连好了再点"运行"。正确的做法是:

  1. 先搭开始节点→结束节点,测试能通

  2. 加第一个插件节点,测试插件能返回数据

  3. 加大模型节点,测试模型能正确整理

  4. 加分支节点,测试不同分支都能走到

  5. 最后加异常处理节点

每一步都测试通过,再继续下一步。这样问题出现时,你肯定知道是刚加的那个节点的问题。


第七部分:学完Coze之后------通往真实项目

今天的Coze课程,表面上是在学一个具体平台的操作,实际上是在理解AI应用开发的通用骨架

7.1 这个骨架是什么

所有AI应用都逃不过这条链路:

python 复制代码
用户输入 
  → 智能体理解目标 
  → 判断意图/需求类型 
  → 调用需要的工具(搜索/知识库/数据库/API)
  → 整理多个工具的返回结果 
  → 输出用户能看懂的回答

学会Coze,就是先把这条链路可视化地跑通一遍。

7.2 迁移到其他平台

Coze的概念 Dify的概念 代码自研的对应
工作流 工作流 用LangChain的Chain
插件 工具 调用API的函数
知识库 知识库 向量数据库+RAG
意图识别 意图分类节点 分类模型或LLM分类
输入节点 用户输入 等待用户输入的代码逻辑

底层思路完全相同,只是实现工具变了。

7.3 真实项目中的常见需求

学完今天的内容,你已经可以做这些事情了:

求职助手:用户上传简历PDF → 文档提取插件读内容 → 大模型提取姓名、技能、项目 → 匹配岗位要求 → 生成面试题

商品推荐助手:用户说"推荐2000元以内的手机" → 联网搜索获取商品信息 → 大模型筛选、对比、排序 → 输出推荐列表

学习助教:用户上传课程PPT → 提取文字 → 大模型生成摘要、重点、自测题

客服机器人:用户问"怎么退货" → 意图识别 → 查询知识库 → 输出退货流程 → 解决不了转人工

这些项目你都能用今天学到的知识点搭建出原型。

7.4 几点提醒

  1. 注意隐私:不要在生产环境把真实用户数据、公司机密、个人敏感信息上传到公开云平台。课堂演示用脱敏数据。

  2. 插件要测试:官方插件也不一定100%稳定。不同插件对同一任务的返回格式可能不一样,提前测试、看日志、确认字段。

  3. 命名要认真test_workflowresume_extractor_workflow,一个月后再看,后者你还能想起来是干什么的。智能体也是靠名称和描述来判断什么时候调用哪个工具的,命名随意会影响调用准确率。

  4. 先跑通再优化:第一版能跑通就行,不要追求完美。跑通之后,你会更清楚哪些地方真正需要优化。


最后:今天的知识点速查表

知识点 一句话记住
智能体是什么 大模型(大脑)+ 工具(手脚)
工作流是什么 按顺序执行的任务流水线
开始节点 定义输入,注意类型要匹配
大模型节点 核心大脑,要配置提示词和变量引用
选择器节点 处理明确条件判断(if/else)
意图识别节点 处理语义分类,输出分类ID只用来分支
输入节点 中途追问,新变量要给清晰名称
结束节点 选对输出字段,不要选推理过程
插件 封装好的外部能力,拖进来就能用
工作流 vs 智能体 工作流是工具,智能体是会选工具的人
调试 看日志、逐步测试、从简到繁
相关推荐
冷小鱼1 小时前
高级研发编码习惯:从规范到艺术,再到AI+时代的人机协同
java·开发语言·python·编码习惯
摸鱼同学1 小时前
17-Codex 高级工作流:Subagent、Worktree、多模型路由
ai·agent·codex
m0_737302581 小时前
OpenClaw:从对话到执行,开启行动型 AI 智能体新时代
人工智能
X54先生(人文科技)1 小时前
《元创力》纪实录·卷宗2.2署名权、龙标悖论与社会人格的剥夺
人工智能·开源·ai写作·零知识证明
matrixmind81 小时前
HTTPX:Python 下一代 HTTP 客户端
python·其他·http·httpx
上海全爱科技1 小时前
80℃高温+多路4K解码实测报告-全爱科技后羿智盒QA500A2-B
人工智能
abcy0712131 小时前
python Statsmodels实例详解
人工智能
sunshine8851 小时前
ISO 27001与PCI-DSS认证:财务数据安全如何反哺业财一体化落地?
大数据·人工智能
怪兽学LLM1 小时前
LeetCode 21 合并两个有序链表:彻底理解虚拟头节点(Dummy)套路
python·leetcode·链表