AI Agent开发
Demo 智能体和生产智能体的差别不在模型,而在脚手架:你如何组织循环、智能体怎么决定调用哪个工具、怎么接地它的记忆,以及怎么在它自信地办坏事前拦住它。太多团队把一个 LLM 绑到一个脚本上就管它叫"智能体",然后花上一个季度跟可靠性搏斗。这篇指南按你应该解决的顺序,摆出让智能体在真实世界里真正干活的构建序列。
从一个窄任务开始,不要做自治的"万能"智能体
最可靠的智能体都无聊得具体。一个"处理客服工单"的智能体会四处乱撞;而一个"对进来的邮件分类、从批准过的模板里起草回复、凡超过 50 美元必须先找人确认再发送"的智能体,有一个你真正能测的边界。写代码之前,先把触发条件、目标、工具和停止条件用文字写清楚。如果一个小段文字描述不清边界,你的含糊会在无数边界情况里加倍还给你的。

把任务收窄到这种程度,你会惊人地发现大半工作在循环上:智能体读输入、选一步、调用一个工具或问模型、观察结果、循环,直到达成目标或撞上护栏。这个循环,而不是模型选择,才是绝大多数失败滋生的地方。对于多步骤任务,"先规划后执行"(plan-and-execute)的模式通常比自由推理更可控,因为你可以在放它行动之前先校验计划。
把工具使用设计成安全关键的契约
工具是智能体接触世界的地方,也是你赚取可靠性预算的地方。给每个工具一个紧凑的 schema、清晰的描述和严格的校验——因为模型是根据你的描述文字来决定调用哪个工具的。一个含糊的工具描述,会产生含糊的工具调用。把约束写进描述里("只对返回了 SUCCESS 状态的订单号调用此工具"),并且无论模型怎么说,都在服务端校验输入。

你还要决定每个工具赋予智能体多少自治权。写数据库、发邮件、发布到社媒账号都是不可逆的,所以不可逆操作必须配上人参与的门控,或一个 dry-run(演练)模式。只读工具可以自治;有副作用的工具一上来就该被门控。跳过这个区分的团队,就会造出那种凌晨三点把客户记录删掉的智能体,然后被炒鱿鱼。
记忆与接地:智能体知道什么、不知道什么
当智能体把它的"学习到的知识"和你系统的真实状态搞混时,它栽得最惨。长期记忆(客户历史或产品数据的向量存储)应该按需检索,而不是烤进上下文里,而且检索结果必须清楚地标记出来,好让智能体知道哪是事实、哪是它自己生成的。短期记忆就是这一轮的临时工作上下文,由你传进去什么、以及你如何组织对话状态来控制。

当智能体要回答关于你领域的问题或做决策时,对它自己的数据做接地是不可讨价还价的。否则模型会全凭信心编出价格、政策、人名。把你的参考文档做向量嵌入,检索相关的顶层块和元数据,并逼智能体引用它依赖的那个块。这种检索增强(RAG)模式是可靠智能体行为的地基之一,想搞对底层文本处理的机制,可以先系统学 LLM 应用开发。
提示智能体的推理,而不只是最终答案
智能体提示词和一次性提示词不一样。你不是在要一个答案,而是在规定一套决策程序。要包含目标、约束(能做什么不能做什么)、可用工具及其规则、停止条件,以及风险高时"先推理再行动"的指令。最强的提示词会推动模型反思中间结果,而不是沿着第一条看起来合理的路径猛冲。

ReAct 风格的提示(推理、行动、再观察)是工具型智能体的主力模式,因为它把推理和动作交错在一起。它比单次调用更费 token 和延迟,但对"正确性比速度更重要的任务"通常值得。想提升你编排这些分步指令的能力,进阶提示词工程 是调优智能体行为前打磨这项技能的好去处。
可观测性:看不见的东西就没法修
智能体是随机的,所以普通"记下每次调用"的日志不够。要插桩循环的每一步:输入、选中的工具、参数、工具结果、模型的推理轨迹、最终决策,以及每步的延迟和 token 成本。把这些存成可按需重放的结构化 trace。当智能体悄悄做错事时,一条可重放的 trace 就是"十分钟就能修"和"两周谜案"的区别。

再给分布外的行为加上会触发的护栏:每次运行的预算上限、最大工具调用次数、没有门控就不许调高危工具、以及一切含糊时交回给人类的兜底,都会收住模型跑飞时的爆炸半径。成本控制也是可靠性的一部分:一个卡在循环里疯狂烧 token 的智能体,即使什么都没弄坏,也是一次可靠性事故。
像测试套件一样评估智能体,而不是靠感觉
因为智能体输出每次都变,你需要一个评估平台(evaluation harness)。建一组带预期结果的真实输入金标集,每次改动都对它跑一遍,追踪通过率、工具调用准确率、单任务成本和失败模式。这跟 LLM 应用开发(英文) 里的做法同源,把每次改动当回归信号来看。这是智能体开发里最接近单元测试的东西,也是唯一能让你知道某次提示词改动是真有帮助、还是只是把失败挪到别处的方法。
知道什么时候压根不该建智能体
在智能体开发上成功的捷径,是根本不需要智能体。如果你的任务是固定的 API 调用序列,一个工作流引擎或编排脚本比"让 LLM 决定每一步"更可靠、更便宜。把智能体留着,用于真正需要开放式推理或动态工具选择的任务。市面上大多数所谓的"智能体产品",其实是带一层小推理的编排工作流,这没问题。借助 无代码开发 和 LLM 应用入门,你常常能用可视化工具先把这些编排管线组装起来,再决定要不要投资改造成真正的推理智能体。
对比一下建智能体的几条主要路线,好按你的预算和技能来选:
| 平台 / 工具 | 核心特性 | 价格 |
|---|---|---|
| LangChain / LangGraph | 智能体循环、工具抽象、状态机、追踪 | 开源免费;LangSmith 观测另付费 |
| AutoGen(微软) | 多智能体对话、代码执行、工作流控制 | 开源免费 |
| OpenAI Assistants API | 托管工具、检索、代码解释器、文件搜索 | 按 token/用量付费;无固定底费 |
| CrewAI | 基于角色的多智能体编排、易委派 | 开源核心;企业版收费 |
| n8n | 带 AI 智能体节点的可视化工作流自动化 | 自托管免费;云版从约 170 元/月 |
无论选哪个框架,架构不变:有界任务、契约化工具、接地记忆、可观测循环、以及一个评估平台。这五块做扎实了,具体框架就只是细节。这套"以目标为导向"的架构,和 LLM 应用开发 从集成角度看强调的也是同一五件套。这五块做得烂,什么框架都救不了你。等智能体稳定了,同样的契约和错误处理纪律,也适用于它对接第三方系统——这正是 Java 入门 这类基础里反复强调的健壮性思维,好让智能体的工具调用优雅失败而不是静默出错。
常见问题
什么时候该用 LLM 智能体,而不是普通的工作流引擎?
只有当任务需要开放式推理或动态工具选择时才用智能体。如果步骤是固定的 API 调用序列或规则,工作流引擎(n8n、Zapier 或纯编排代码)更可预测、更便宜、几乎不出错。大多数生产环境的"智能体",其实是搭在精心编排的工作流之上的一层窄推理。
为什么我的智能体总调用错的工具、或传错的参数?
工具调用质量主要靠你的工具描述和 schema,而不是模型。写出显式描述,说明每个工具何时调用、传什么,无论模型怎么说都在服务端校验输入,并对照一组工具调用金标用例来测。含糊的描述必然导致"自信但错误"的调用。
怎么让智能体不死循环?
限制每次运行的最大工具调用次数,强制每次运行的 token 或成本预算,并设一个在目标达成或连续 N 次无进展时触发的停止条件。遇到超时或含糊就加一个升级给人类的兜底。即使什么都没坏,循环也是一次可靠性事故。
给智能体记忆,必须用向量数据库吗?
不一定。对于小而结构化的状态,一个简单的键值存储或对话上下文就够了。向量存储只有在需要从大型语料里按需检索相关事实时才必需。无论用哪种,都要把检索到的数据标记为"外部事实",和模型自己生成的东西区分开。
发布前评估智能体最简单的方式是什么?
建一组带预期结果的真实输入金标集,每次改动都跑一遍,追踪通过率、工具调用准确率、单任务成本和反复出现的失败模式。这样你就有了回归信号,那种"修复了一个 case 却坑了另一个"的提示词改动,会被抓住而不是直接发布。