先说结论:普通人要搭一个能用的 AI Agent 工作流,真的不用一开始就买 GPT-4、Claude 这类贵模型。用 DeepSeek、Qwen 这类便宜大碗的模型,配合 Coze、Dify、n8n 这类编排工具,几百块预算就能跑通一整套自动化流程,甚至本地部署用不上 GPU 也能搞定一部分。
这篇内容就是给你捋清楚“为什么要这么做、工具怎么选、具体怎么搭、会遇到什么坑”,我从零到一做了几个月的 AI Agent 工作流,把踩过的和验证过的经验都写下来。适合想用 AI 处理日常事务、正在犹豫要不要买贵的 API、或者只是想在家里搞点自动化小项目的普通人。
1. 别急着下单:先搞清楚 Agent、LLM、模型到底是不是一回事
很多人被 AI Agent 这个词唬住了,觉得它一定是什么高深不可攀的东西,再加上“大模型”天天上热搜,一上来就想买最贵的。但你连三者关系都没弄清楚,花多少钱都是打水漂。
1.1 三者的关系:模型是引擎,LLM 是大脑,Agent 是会干活的机器人
先给小白打个比方。模型就像一台发动机,它本身不装在任何车上,只是提供动力。LLM(大语言模型)是那种特别会“理解语言、组织语言”的发动机,DeepSeek、Qwen、Llama 都属于这个范畴,你要问 DeepSeek 属于哪一类,它就是 LLM,不是 Agent,也不是什么单独的神秘存在。
那 Agent 是什么呢?Agent 是“发动机+方向盘+传感器+控制逻辑”打包好的一辆车,甚至可以说是一个会自己开车的司机。它能感知输入,能推理判断,能调用工具,能执行动作,能根据结果调整下一步。比如你让它“帮我整理这封邮件,提取待办事项,然后写一封回复草稿”,它不只是生成文字,而是拆解这个任务、用模型理解邮件、调日历或邮件工具、最后产出结果。
明白了吗?很多人以为买了最强模型就等于有了最强 Agent,这就像说买了顶配发动机就等于有了无人驾驶汽车一样,缺了中间那一大套东西。而大多数普通人的需求,根本用不到顶配发动机——一台经济型发动机加一套好的车身控制逻辑,反而更实用。
1.2 为什么“先别急着买贵模型”是普通人的第一原则
我在搭建工作流之前,先做了一次成本测试。同样让模型做“提取会议纪要里的行动项并输出为结构化表格”这个任务,用几款模型各跑了一次:
| 模型 | 输入价格(约) | 输出价格(约) | 单次任务消耗(约) | 单次成本 |
|---|---|---|---|---|
| DeepSeek API | 1元/百万 tokens | 2元/百万 tokens | 1500 tokens | 0.002元左右 |
| 某国际旗舰模型 | 60元/百万 tokens | 240元/百万 tokens | 1500 tokens | 0.18元左右 |
| 某次旗舰模型 | 20元/百万 tokens | 80元/百万 tokens | 1500 tokens | 0.06元左右 |
同样是“提取行动项”这种轻量任务,贵模型的价格是便宜模型的几十倍,但结果质量差距微乎其微。因为这类任务拼的是指令遵循能力,不是世界知识储量。便宜的 DeepSeek 在结构化输出、工具调用上已经做得相当好,那何必多花钱呢。
但这还不是最重要的。最重要的原因在于——你先要用低成本试错。工作流的坑不在模型,而在流程设计。你的输入格式会不会变、中间要不要加判断分支、输出要不要接进通知工具、并发会不会触发限流……这些问题只有在跑起来以后才会暴露。你要是咬牙买了贵模型再开始搭,等于在练手阶段就给自己烧钱上压力,很多人就是这样被劝退的。
我个人的建议是:第一步全部用便宜模型搭通流程,确认业务真的跑顺了、有增量价值了,再考虑升级旗舰模型对比效果。有句话叫“先弄脏手,再买好工具”,放在 AI Agent 上尤其适合。
2. 低成本工作流的三条路线:Coze、Dify、n8n 怎么选
模型选完了,下面挑工作流编排工具。这个选择直接决定你是轻轻松松拖拽完成,还是被各类节点配置折磨到怀疑人生。
2.1 不同段位的人选不同工具
市面上的工作流工具其实就三类,我试过之后给它们的定位是:零代码玩具、半代码平台、全代码自动化。
| 工具 | 适合人群 | 门槛 | 典型能力 | 我的评价 |
|---|---|---|---|---|
| Coze(扣子) | 完全不会写代码的人 | 很低 | 拖拽搭 Bot、内置大量插件、一键发布到飞书/公众号/微信 | 最适合练手,但自定义能力有限,重度需求会撞墙 |
| Dify | 愿意碰一点点代码和 API 的人 | 中等 | 可视化编排、知识库、支持私有化部署、模型可自行配置 | 最均衡,我日常主力 |
| n8n | 有代码基础、想自动化复杂业务的人 | 较高 | 集成数百个应用、支持代码节点、完全自托管 | 真正的生产力工具,但学习曲线陡 |
给普通人的结论很直接:如果你是纯小白,先玩 Coze,半小时就能搭出第一个 Agent;如果你想做点正经工作流,想接入自己的 API Key,想控制成本细节,那就直接上 Dify。n8n 更适合已经有明确业务流程、想把 AI 嵌入 CRM、表单、邮件系统的人。
顺带一提,如果你用过 ComfyUI 搭 AI 绘画的图生图工作流,你在 Dify、Coze 里会有一种似曾相识的感觉——一样的节点式连线、一样的模型选择、一样的输入输出链路。底层思维都是相通的:把 AI 当成流水线里的一个工序,前一步的输出作为后一步的输入。
2.2 工作流的核心要素:节点、连线、上下文
不管用哪个工具,工作流的本质都一样——工厂流水线。原始材料从一端进来,经过若干个工位,每个工位完成一个动作,最后从另一端产出成品。
我把几个核心节点给你拆开看:
- 输入节点:工作流的“原料入口”。可以是用户对话框、一个表单、一个网页触发,也可以是从邮件、数据库、API 推送过来的数据。输入节点的核心是定义好字段,不然下一步模型根本不知道你在说什么。
- LLM 节点:真正的“大脑工位”。这里选择模型、写 Prompt、设置参数。整条工作流的智能程度都取决于这个节点的配置。
- 工具节点:模型的“手脚”。模型本身不能发邮件、不能查天气、不能查询数据库,但通过工具节点,你可以让模型调用外部 API。Dify 和 Coze 都内置了大量现成工具,也可以自定义 API 工具。
- 分支节点:流水线的“分拣员”。根据模型输出的判断结果,决定走哪条路。比如“如果这条评论是负面情绪,进入安抚流程;否则进入统计流程”。
- 输出节点:成品出口。可以返回一段文本、写入数据库、发送到飞书/企微/邮件,也可以触发下一个工作流。
最容易被忽略的是“上下文”。模型不是仓库管理员,它每次调用只看得见你递给它的内容,记住你设置的常量、变量和系统指令——就像流水线上的工人只看得到眼前这张工单一样。所以你要主动把上游节点的输出,以变量的形式传递到 LLM 节点的 Prompt 里。这一步新手十有八九会漏掉,结果就是模型“失忆”,答非所问。
有了这个基础理解,下面我就以 Dify 为例,带你完整搭一个简历筛选 Agent,从需求拆解到 Prompt 编写到成本测算一次走完。
3. 从 0 到 1 搭一个“简历筛选 Agent”的完整实操
为什么要选“简历筛选”这个例子?因为它太典型了。需求清晰、输入输出明确、有判断逻辑、有实际价值,而且任何人看完都能立刻类推到自己手头的场景上——筛选商品评论、筛选工单、筛选问卷答案,本质都一样。
3.1 场景选择和需求拆解
我先说我当时的需求:团队每周收到几十份简历,初级岗位尤其多,HR 忙不过来。我想让 Agent 先做第一轮初筛,把明显不合适的筛掉,同时给面试官提供候选人的亮点摘要和提问建议。
需求拆解成一句话就是:给一段简历文字,输出三个值——是否通过初筛、评分(0-100)、推荐理由和面试提问建议。
你可能觉得这就完了?不,真正的需求拆解要细得多。我当时列了一个问题清单:
- 简历是纯文本还是 PDF?初始阶段先让用户粘贴纯文本,PDF 解析属于扩张功能,不要第一步就做。
- “通过初筛”的标准是什么?我要把硬性条件写清楚。比如“必须具备 2 年以上后端经验”这种,否则模型会按自己的理解瞎判断。
- 输出格式是什么?我要求 JSON 结构化输出,因为后续要接人处理,JSON 方便程序解析。
- 处理不了怎么办?比如简历太短、乱码、信息严重缺失,要有一个“存疑”分类,而不是硬着头皮评分。
需求拆解得越细,后面写 Prompt 越容易。很多人搭工作流失败,不是因为技术,而是需求根本没想清楚。
3.2 具体配置步骤(含 Prompt 模板)
下面按 Dify 的实际操作顺序说,你在 Coze 里也能找到差不多的节点,只是名字略有不同。
步骤 1:新建空白工作流,定义输入字段
我建了一个名为“简历初筛 Agent”的工作流,添加了一个文本类型的输入字段,命名为“resume_text”,描述写清楚“请粘贴候选人简历的纯文本内容,包含教育背景、工作经历、技能列表”。这一步的意义是让模型知道你喂进来的内容是什么,不是垃圾数据。
步骤 2:添加 LLM 节点,配置便宜模型
在画布上拖入一个 LLM 节点,模型选择“DeepSeek”,你也可以填自己的 DeepSeek API Key。如果 Dify 自带的模型列表里没有,你可以在设置里添加模型供应商,填 API Key 就行。
关键参数我建议这样配:
- temperature 设为 0.2。这是控制随机性的参数:值越大回答越发散、越“有创意”;值越小越保守、越稳定。筛选简历是判断任务,不需要创作,0.2 很合适。如果你做文案生成、头脑风暴类任务,可以调到 0.8。
- max tokens 设为 500 左右。简历评估结果通常不会太长,限制 max tokens 可以避免模型啰嗦,也省成本。
- 把“resume_text”变量引用到 Prompt 里。这一步就是我前面说的“上下文传递”。
步骤 3:写一份带格式约束的 Prompt
先给你看一版我改过多轮后效果不错的 Prompt 模板(可以复制到你的 LLM 节点里):
你是一位资深技术面试官和 HR 专家。你将收到一份候选人简历文本。
任务要求:
- 评估候选人是否达到初级后端岗位的初筛标准。硬性标准包括:至少有 1 年相关开发经验或优秀应届生;熟悉至少一门编程语言(Java/Python/Go 任一即可);学历大专及以上。
- 输出一个严格的 JSON 对象,格式如下(不要输出任何其他内容,不要用 Markdown 代码块包裹): {"passed": true/false, "score": 0-100 整数, "summary": "两到三句话的候选人亮点概括", "risks": "一句话指出潜在风险或疑问", "interview_questions": ["问题1", "问题2"]}
- 如果简历信息明显不足,passed 输出 false,并在 summary 里注明“信息不足,需人工复核”。
候选人简历: {{resume_text}}
为什么要这样写?很多人写 Prompt 就一句话“帮我筛一下这份简历”,然后开始抱怨模型给的结果不像样。问题出在你没给它框架。上面这个 Prompt 干了三件事:给了角色定位、给了判断标准、给了输出格式。模型不是不知道该怎么筛,是你根本没告诉它“筛”的尺子在哪里。
步骤 4:添加条件分支和输出节点
LLM 节点输出的 JSON 里有一个 passed 字段,理论上可以接一个“条件分支节点”,解析 passed 的值为 true 或 false,分别走“进入面试轮”和“暂存待定 ”两条路径。
实际搭的时候我发现了一个坑:Dify 对 JSON 里的字段提取有时会因为输出格式不稳定而失败。所以我加了一个“代码节点”做后处理,用正则把 LLM 输出的 JSON 部分提取出来再解析,解析失败就自动归入“存疑”分支。这个兜底逻辑非常重要,后面我细讲。
步骤 5(可选):接通知
如果你用企业微信或飞书,可以在分支末尾接一个“消息发送节点”,把评估结果推给 HR 群。这一步不是必须的,但跑通以后你会觉得特别爽——来了简历,群里自动弹评估报告。
3.3 成本测算:这样跑一次到底花多少钱
这是大家最关心的部分。我实测了一版真实费用,不做理论估算,给你看实际数字。
一份比较详细的简历,贴成纯文本之后大约 800~1200 字。按中文计算,大概是 800~1500 个 token。加上我上面那套 Prompt 模板,系统指令大约占 300 个 token。所以每次调用总输入大约 1800 个 token,输出大约 300~500 个 token。
用 DeepSeek 的价格来算:
- 输入:1800 tokens × 1元/百万 tokens ≈ 0.0018 元
- 输出:400 tokens × 2元/百万 tokens ≈ 0.0008 元
- 单份简历总成本:约 0.003 元
也就是说,筛选 1000 份简历,成本大约是 3 块钱。你要想升级成某个旗舰模型来干这活,同样的业务量费用分分钟是几百上千倍的差距,但这个活的门槛根本不到需要旗舰模型出手的程度。
你说值不值?这还没算时间成本。以前 HR 一份简历看过加记录至少 3 分钟,100 份就是 5 个小时。现在 Agent 跑完加上人工抽检,半小时内结束战斗。这就是低成本工作流的意义——用最小的钱,把机械劳动替换掉。
4. 本地部署:低配电脑也能跑模型
说到这里你可能要问:既然 API 这么便宜,为什么还要折腾本地部署?我的回答是:本地部署不是省钱用的,是保隐私和保命用的。有些数据不能出内网,有些业务流程就发生在没有网络的车间里,这时候你就需要本地模型。而且本地模型配上低显存的量化方案,真的没有你想象中那么遥不可及。
4.1 低显存跑模型的量化原理
很多人的第一反应是“跑模型不是得几万块的显卡吗”?那是“满血旗舰模型”的世界。你的日常任务只需要 7B(70 亿参数)左右的小模型,对显存的需求远没有那么高,前提是你得用对量化格式。
量化怎么理解?你把大模型想象成一本像素极高的摄影画册,一张照片几百 MB,这对应“全精度模型”。而 4-bit 量化相当于把画册压缩成了清晰度低一些但完全可读的版本——肉眼远看没差别,文件体积却小了一个数量级。
常见的量化等级对应关系如下:
| 量化格式 | 相对体积(约) | 效果表现 | 适合场景 |
|---|---|---|---|
| fp16 / bf16 | 100% | 最好 | 显存充裕、追求巅峰效果 |
| q8_0 | 55% | 几乎无损 | 显存稍紧、质量优先 |
| q5_k_m | 45% | 损失小 | 大多数人的最佳平衡点 |
| q4_k_m | 35% | 轻微损失 | 低显存主流选择 |
| q2_k | 25% | 明显变笨 | 极度紧急,不推荐 |
拿一个 7B 模型举例,全精度大约需要 14GB 显存。用 q4_k_m 量化之后,模型文件大约 4.4GB,再加上运行时上下文占用的显存,8GB 显存、甚至 6GB 显存都能勉强跑起来。你要是没有独立显卡,用 32GB 内存的 CPU“硬跑”也能跑,只是慢一些,一份短文档的推理可能要几秒到十几秒,但对于非实时的任务场景完全够用。
4.2 Ollama:一条命令搞定本地模型
本地部署最省心的方案,目前就是 Ollama。它是一个极简的模型运行器,把下载模型、加载模型、提供 API 这几件事封装成了几个命令。我当时的做法是:
安装完 Ollama 之后,打开终端执行:
ollama pull qwen2.5:7b这会把阿里的 Qwen2.5 7B 模型拉到本地。想用量化版的模型,也可以拉:
ollama pull qwen2.5:7b-q4_K_M模型拉取完成后,只需要一条命令启动本地 API 服务:
ollama serve默认端口是 11434。这个服务提供了和 OpenAI 兼容的接口格式,所以你可以在 Dify 或是任何支持 OpenAI API 格式的工具里,直接把 Base URL 填成http://localhost:11434/v1,模型名填qwen2.5:7b,工作流里的 LLM 节点就能指向本地模型了。
我当时真就这么做过:把简历初筛 Agent 的 LLM 节点从 DeepSeek 切换到了本地的 Qwen2.5 7B,跑了一批真实简历对比。结果让我有点意外,硬性条件判断做得有模有样,复杂一点的“风险识别”就差些意思。这也正常,7B 的推理能力天花板摆在那里。
4.3 本地模型的局限与取舍
那是不是所有人都应该本地部署?不是。我踩过坑后给你一个非常实用的决策原则:
- 什么时候用本地模型:数据敏感(绝对不能出内网)、离线环境可用、任务简单重复(关键词提取、文本分类、格式转换)、高频低复杂度。
- 什么时候不要用本地模型:任务涉及复杂推理、长文本理解、创意生成、需要精确遵循很长的指令时,7B 模型很容易露怯。这时候即使贵一点,也该调用线上 API。
还有一个很实用的混合架构思路:工作流先让本地小模型做预处理,比如判断这条数据是否敏感、是否属于简单分类;如果是简单任务,本地模型直接处理到底;如果识别出是高难度任务,再把它转发给云端强模型。等于把 80% 的廉价劳动留在本地,把 20% 的疑难杂症交给专业外援,整体成本和效果达到一个很舒服的平衡。
5. 常见问题与排查技巧实录
搭工作流这事,90% 的时间不是在建流程,而是在调 bug。我把这几个月遇到频率最高、最有代表性的问题整理成速查表,你碰到类似情况可以直接照着查。
5.1 模型“输出格式不稳定”怎么办
现象:你让模型输出严格 JSON,它非要给你夹带解释文字、前言和后记,甚至用 Markdown 代码块包起来。Dify 解析节点直接报错,整个工作流中断。
排查思路和解决办法:
- 先硬约束后软约束:在系统 Prompt 里写明“不要输出任何其他内容,不要使用 Markdown 代码块”,同时给出一条 JSON 示例。这能解决 80% 的情况。
- 加解析兜底:用代码节点处理模型输出,用正则把 JSON 提取出来。JSON 可能被包裹在杂讯里,正则可以直接找到第一个 “{” 到最后一个 “}” 之间的部分再解析。
- 开结构化输出:Dify 和较新的模型 API 都有结构化输出(JSON Mode)功能,在节点里打开,模型就会被限制只能输出合法 JSON,格式稳定度大幅提升。
经验之谈:不要指望模型永远不犯错。工作流设计上必须假设“输出可能不干净”,代码节点兜底是标配。我见过很多新人的工作流脆弱到只要模型换了个标点就断裂,加一层兜底全好了。
5.2 API Key 泄露和费用失控如何防
现象:明明没怎么用,账户余额却在掉;或者某天突然提醒你欠费了。
原因基本是这几类:API Key 泄露出去被人盗刷;Prompt 设计得太啰嗦导致每次都消耗巨量 token;工作流里有死循环或者并发过高,比如某个定时任务每小时跑一次,每次批量处理大量数据。
我的防翻车四件套:
- API Key 只配置在后端环境变量里,绝不写进前端或公开仓库。
- 在模型供应商后台设置“月度消费限额”,比如先设 50 元,跑稳了再往上涨。
- 工作流里对批量任务做“分批+延时”,避免一次并发几十上百个请求。
- 有专门的日志节点记录每次调用的输入、输出 token 数,定期查一次账本。
5.3 上下文窗口溢出和前文丢失
现象:处理很长的一篇文档时,模型越到后面越“失忆”,或者直接在中间报错“context length exceeded”。
原因很好理解:模型每一次调用的上下文长度有上限,比如 8K、32K、128K。你一股脑把整篇文章塞进去,token 数量超过上限就会报错;即使不超过,模型的长文本注意力也会随长度衰减。
处理长文档我推荐分块方案:先按一定字符数把文档切成多个片段,每个片段分别送入模型处理(提取摘要/关键信息),最后再让模型基于所有摘要做一次汇总。这相当于让模型先通读各章,再开总结会。Dify 和 Coze 里都有“知识库”组件,底层就是帮你做切分、向量化、再检索相关片段,比手动拼 Prompt 省力得多。
5.4 模型幻觉导致业务结果离谱
现象:筛选简历时把不存在的公司名编成了“知名互联网公司”;分析文档时言之凿凿地说出原文里根本没有的结论。
模型幻觉无法根除,只能从流程上进行约束。
我给这个“简历筛选 Agent”加了一套校验逻辑:在代码节点里解析出候选人原始简历中的关键实体(公司、时间、技能),让 LLM 生成的 summary 必须引用这些实体,如果引用了未出现的实体则打回重新生成一轮。你可以理解为“让模型自己给自己做证据链核验”。
更重要的人机协同原则是:AI 做初筛,人做终审。尤其涉及招聘、财务、医疗这类不能开玩笑的领域,永远留一个“人工复核节点”。这不是保守,这是基本职业素养。
写在最后的话
回看这几个月搭工作流的经历,我最深的体会是:真正难的不是模型,而是“把模糊的需求翻译成固定的流程”。模型从贵的换到便宜的,效果反而没什么差别,差别全在 Prompt 怎么写、分支怎么设、兜底怎么加、上下文怎么传。
所以别急着买贵模型,也别急着下单大显卡。先用你手头免费或几块钱就能跑起来的工具,把一个真实的小场景打通,让 AI 真正顶上一个岗位的活,再决定要不要升级装备。
最后再分享一个小技巧:任何工作流里都建议加一个“人在回路”的确认节点。AI 跑一百次可能一百次都顺利,但只要有一次出了离谱结果,可能就够你受的。加一个确认步骤,不是不信任 AI,而是对自己的业务负责。工作流的意义不是取代人,是把人从重复劳动里解放出来,去做更有判断力的事。等你把第一个工作流跑通,你会发现,原来 AI 离普通人的生活就这么近。