如何构建人工智能代理

如何构建人工智能代理

简而言之:要构建一个在实践中有效的AI智能体,应将其视为一个受控循环:接收输入,决定下一步行动,调用一个作用范围明确的工具,观察结果,然后重复此过程,直到通过明确的“完成”检查。当任务是多步骤且由工具驱动时,智能体才能发挥作用;如果只需一个提示即可解决问题,则无需使用智能体。添加严格的工具模式、步骤限制、日志记录以及验证器/评论器,以便在工具失效或输入不明确时,智能体能够升级处理,而不是陷入循环。

要点总结:

控制器循环:实现输入→执行→观察的重复,并具有明确的停止条件和最大步数。

工具设计:保持工具功能精简、类型明确、权限控制和验证,以防止出现“无所不能”的混乱局面。

内存卫生:使用紧凑的短期状态和长期检索;避免转储完整的转录本。

防止滥用:为风险操作添加允许列表、速率限制、幂等性和“预演”功能。

可测试性:维护一套场景(故障、歧义、注入),并在每次更改后重新运行。

如何构建人工智能代理?信息图
您可能还想阅读以下文章:

🔗 如何衡量人工智能性能
学习衡量速度、准确性和可靠性的实用指标。.

🔗 如何与人工智能对话
利用提示、背景信息和后续跟进来获得更好的答案。.

🔗 如何评估人工智能模型
使用测试、评分标准和实际任务结果来比较模型。.

🔗 如何优化人工智能模型
通过调优、修剪和监控来提高质量并降低成本。.


1)用通俗易懂的方式解释一下什么是人工智能代理🧠

AI代理是一个循环。参见LangChain“代理”文档。

就是这样。一个中间有大脑的循环。.

输入 → 思考 → 行动 → 观察 → 重复。ReAct论文(推理 + 行动)

在哪里:

  • 输入是指用户请求或事件(新电子邮件、支持工单、传感器 ping)。

  • Think是一种语言模型,用于推理下一步操作。

  • Act正在调用一个工具(搜索内部文档、运行代码、创建工单、撰写回复)。OpenAI函数调用指南

  • 观察者正在读取工具的输出。

  • 重复是使其感觉“主动”而非“闲聊”的关键所在。LangChain “Agents” 文档

有些代理本质上是智能宏。另一些则更像是初级操作员,能够同时处理多项任务并从错误中恢复。两者都算数。.

另外,你不需要完全自主权。事实上……你可能根本不想要🙃


2) 何时应该构建代理(以及何时不应该构建代理)🚦

在以下情况下构建代理:

  • 这项工作是多步骤的,并且会根据过程中发生的情况而改变。

  • 这项工作需要使用各种工具(数据库、CRM、代码执行、文件生成、浏览器、内部API)。请参阅LangChain“工具”文档。

  • 你想要的是可重复的结果和保障措施,而不是一次性的答案。

  • 你可以用计算机可以检查的方式来定义“完成”,即使是比较宽松的定义。.

以下情况不要构建代理:

  • 简单的提示 + 响应即可解决问题(不要过度设计,否则你会后悔的)。.

  • 你需要完美的决定论(智能体可以具有一定的一致性,但不能像机器人一样)。.

  • 如果你没有任何工具或数据来进行连接——那么主要就只能靠感觉了。.

坦白说,一半的“AI代理项目”可能只是几个带有分支规则的工作流程。不过,有时候感觉也很重要🤷♂️


3) 优秀的AI代理需要具备哪些条件?✅

以下是您要求的“优秀版本应具备的要素”部分,不过我会直言不讳:

优秀的AI智能体并非思考能力最强的,而是能够做到以下几点的:

如果你的经纪人无法接受测试,那他基本上就是一台胜算极大的老虎机。派对上玩玩挺有意思,但实际拍摄就吓人了😬


4) 智能体的核心组成部分(“解剖结构”🧩)

大多数固体粘合剂都包含以下部分:

A) 控制器循环🔁

这是幕后策划者:

B) 工具(又称能力)🧰

工具是使代理有效运作的关键: LangChain“工具”文档

  • 数据库查询

  • 发送电子邮件

  • 拉取文件

  • 运行代码

  • 调用内部 API

  • 写入电子表格或CRM系统

C) 记忆力🗃️

有两种类型很重要:

  • 短期记忆:当前运行上下文、最近步骤、当前计划

  • 长期记忆:用户偏好、项目背景、检索到的知识(通常通过嵌入和向量存储) RAG论文

D) 规划和决策政策🧭

即使你不称之为“计划”,你也需要一种方法:

E) 护栏和评估🧯

是的,这更多的是一种工程设计,而不是简单的提示。而这……某种程度上正是关键所在。.


5) 对比表:构建代理的常用方法🧾

以下是一个比较真实的“对比表”——当然也有一些小瑕疵,因为真实的球队总是有点小怪癖的😄

工具/框架 观众 价格 为什么有效 笔记(微弱的混乱)
朗链 喜欢乐高式组件的建造者 自由的 + 基础设施 庞大的工具、内存、链式生态系统 如果不明确命名,很容易变成意大利面条。
LlamaIndex 充斥着 RAG 的团队 自由的 + 基础设施 强大的检索模式、索引、连接器 如果你的经纪人基本上只负责“搜索+行动”,那就太好了……这种情况很常见。
OpenAI Assistants 式方法 希望更快完成设置的团队 基于使用情况 内置工具调用模式和运行状态 在某些方面灵活性稍逊,但对许多应用程序来说都很干净。 OpenAI Runs API OpenAI Assistants 函数调用
语义核 希望进行结构化编排的开发人员 相对自由 对技能/功能的简洁抽象 感觉“企业级整洁”——有时候这可是句赞美 😉
自动生成 多智能体实验者 相对自由 智能体间的协作模式 可能会滔滔不绝;制定严格的终止规则
CrewAI “特工团队”粉丝 相对自由 角色、任务和交接很容易表达 任务明确清晰时效果最佳,而不是模糊不清。
草垛 搜索 + 管道人员 相对自由 固体管道、回收、组件 少一些“经纪人作秀”,多一些“务实工厂”
自制(定制回路) 控制狂(亲切的) 你的时间 极简魔法,极致清晰度 通常来说,这是最好的长期方案……直到你彻底推翻一切为止😅

没有绝对的赢家。最佳选择取决于您的代理的主要任务是检索工具执行多代理协调还是工作流程自动化


6) 如何一步一步构建人工智能代理(实际操作指南)🍳🤖

这是大多数人都会跳过的部分,然后他们会纳闷为什么经纪人的行为就像浣熊闯进食品储藏室一样。.

第一步:用一句话定义工作内容🎯

例如:

  • “根据政策和工单内容起草客户回复,然后请求批准。”

  • “调查错误报告,重现该错误,并提出修复方案。”

  • “将不完善的会议记录转化为任务、负责人和截止日期。”

如果你自己都无法简单定义预算,你的经纪人也做不到。我的意思是,经纪人或许可以,但他们会即兴发挥,而即兴发挥往往会导致预算超支。.

第二步:确定自主程度(低、中、高)🌶️

  • 低自主性:建议步骤,需人工点击“批准”

  • Medium :运行工具、撰写输出草稿、处理不确定性问题

  • 高优先级:执行端到端流程,仅在出现异常时才通知人工处理

先从比你理想值低的水平开始。以后你可以随时调高。.

第三步:选择你的模型策略🧠

您通常会选择:

  • 一个适用于所有情况的强大模型(简单)

  • 一个强大的模型 + 一个用于低成本步骤(分类、路由)的较小模型

  • 如有需要,可使用专用模型(视觉、代码、语音)

同时决定:

  • 最大代币数

  • 温度

  • 是否允许内部执行较长的推理过程(可以,但不要向最终用户公开原始的推理链)

第四步:定义具有严格模式的工具🔩

工具应具备以下特点:

do_anything(input: string)的工具,不如使用 make:

  • search_kb(query: string) -> results[]

  • create_ticket(title: string, body: string, priority: enum) -> ticket_id

  • send_email(to: string, subject: string, body: string) -> status OpenAI 函数调用指南

如果你给经纪人一把电锯,当它修剪树篱时连栅栏也一起锯掉了,你也不要感到惊讶。.

第五步:构建控制器循环🔁

最小循环次数:

  1. 从目标和初始背景开始

  2. 询问模型:“下一步行动?”

  3. 如果调用工具 - 执行工具

  4. 附加观察

  5. 检查停止条件

  6. 重复(使用最大步骤) LangChain“Agents”文档

添加:

步骤 6:小心添加内存 🗃️

短期目标:保持简洁的“状态摘要”,每一步都进行更新。LangChain “内存概览”。
长期目标:存储持久化的事实(用户偏好、组织规则、稳定文档)。

经验法则:

  • 如果变化频繁——那就保持短期策略。

  • 如果性质稳定——可长期储存

  • 如果是敏感物品——尽量少放(或者干脆不要放)。

步骤 7:添加验证和“批评”环节 🧪

一种廉价、实用的图案:

  • 代理生成结果

  • 验证器检查结构和约束

  • NIST AI RMF 1.0可选的批评家模型审查,用于检查缺失步骤或违反策略的情况

虽然并不完美,但它确实捕捉到了大量荒谬的内容。.

第 8 步:记录所有你以后会后悔没记录的事情📜

日志:

未来的你会感谢你,现在的你会忘记。这就是人生😵💫


7)一款不会让你心碎的工具🧰😵

工具调用是“如何构建人工智能代理”真正迈向软件工程的阶段。.

确保工具可靠(可靠是好事)

可靠的工具包括:

在工具层添加防护措施,而不仅仅是提示。

提示是礼貌性的建议。工具验证则是一扇紧锁的大门。OpenAI结构化输出

做:

  • 允许列表(哪些工具可以运行)

  • 输入验证

  • OpenAI速率

  • 每个用户/组织的权限检查

  • 风险行动的“预演模式”

针对部分失效进行设计

工具失效。网络不稳定。身份验证过期。代理必须:

一个悄无声息却行之有效的技巧:返回类似这样的结构化错误:

  • 类型:身份验证错误

  • 类型:未找到

  • 类型:速率限制
    这样模型就可以智能地做出反应,而不是惊慌失措。


8)帮助你而不是困扰你的记忆👻🗂️

内存功能强大,但也可能变成杂物抽屉。.

短期记忆:保持简洁

使用:

  • 最后 N 步

  • 运行摘要(每次循环更新)

  • 当前计划

  • 当前限制因素(预算、时间、政策)

如果把所有内容都放到上下文中来看,你会得到:

  • 成本更高

  • 延迟较低

  • 更加混乱(是的,即使在那时也是如此)

长期记忆:提取比“塞入”更重要

大多数“长期记忆”更像是:

  • 嵌入

  • 向量存储

  • 检索增强生成(RAG) RAG论文

该代理不会记忆任何信息。它会在运行时检索最相关的片段。LlamaIndex “RAG 简介”

实用记忆规则

  • 将“偏好”存储为明确的事实:“用户喜欢项目符号摘要,讨厌表情符号”(哈哈,不过这里可不是这样😄)

  • 将“决策”与时间戳或版本号一起存储(否则矛盾会不断累积)。

  • 除非万不得已,否则永远不要保守秘密。

我举个不太恰当的比喻:记忆就像冰箱。如果你从不清理它,最终你的三明治会尝起来像洋葱和后悔。.


9) 规划图案(从简单到复杂)🧭✨

计划不过是可控的分解过程,别把它说得神秘兮兮的。.

模式 A:清单式计划表 ✅

  • 模型输出步骤列表。

  • 逐步执行

  • 更新清单状态

非常适合新用户入职培训。简单易用,易于测试。.

模式 B:ReAct 循环(原因 + 行动)🧠→🧰

  • 模型决定下一次工具调用

  • 观察输出

  • 重复ReAct论文

这就是典型的经纪人感觉。.

模式C:主管-员工👥

当任务可以并行执行,或者您需要不同的“角色”时,例如:

  • 研究员

  • 程序员

  • 编辑

  • 质量保证检查员

模式D:先计划后执行,并根据情况进行重新计划🔄

  • 制定计划

  • 执行

  • 如果工具测试结果改变了实际情况,则需要重新计划。

这可以防止智能体固执地执行错误的计划。人类也会这样做,除非他们感到疲倦,在这种情况下,他们也会执行错误的计划。.


10)安全、可靠,以及不被炒鱿鱼🔐😅

如果你的智能体可以执行操作,那么你就需要进行安全设计。这不是“锦上添花”,而是必不可少。NIST AI RMF 1.0

硬性限制

  • 每次运行的最大步数

  • 每分钟最大工具调用次数

  • 每场会话最高消费额(代币预算)

  • 受限工具需经批准

数据处理

  • 在记录之前请先编辑敏感信息。

  • 独立环境(开发环境与生产环境)

  • 最小权限工具权限

行为约束

  • 强制代理人引用内部证据片段(不是外部链接,只是内部参考文献)

  • 当置信度较低时,需要设置不确定性标志。

  • 如果输入内容含糊不清,则需要“提出澄清问题”。

可靠的代理人并非最自信的代理人,而是那些知道自己在猜测……并且会坦诚相告的代理人。.


11) 测试与评估(人人避之不及的部分)🧪📏

你无法改进你无法衡量的东西。没错,这句话很老套,但却是令人恼火的真理。.

构建一套场景集

创建 30-100 个测试用例:

得分结果

使用以下指标:

  • 任务成功率

  • 完成时间

  • 工具错误恢复率

  • 幻觉发生率(未经证实的说法)

  • 人工审核率(如果采用监督模式)

提示和工具的回归测试

任何时候你做出改变:

  • 工具方案

  • 系统指令

  • 检索逻辑

  • 内存格式化。
    再次运行该套件。

经纪人都是些娇贵的家伙,就像盆栽植物一样,只不过更贵。.


12)不会超出预算的部署模式💸🔥

先从单一服务开始。

尽早实施成本控制措施

  • 缓存检索结果

  • 使用摘要压缩对话状态

  • 使用较小的模型进行路由和提取

  • 将“深度思考模式”限制在最难的步骤中

常见架构选择

  • 无状态控制器 + 外部状态存储(数据库/Redis)

  • 工具调用尽可能是幂等的Stripe“幂等请求”

  • 将长时间执行的任务放入队列(这样你就不会一直保持 Web 请求处于打开状态)

另外:装个“紧急停止开关”。不到万不得已,你用不着它😬


13)结语——如何构建人工智能代理的简短版本🎁🤖

如果你什么都记不住,那就记住这一点:

  • 如何构建人工智能代理主要在于围绕模型构建一个安全的循环。参见LangChain “代理”文档。

  • 以明确的目标、较低的自主性和严格的工具为起点。OpenAI结构化输出

  • 通过检索而非无休止的上下文填充来增加记忆。RAG论文

  • 计划可以很简单——清单和重新计划就能起到很大的作用。.

  • 日志记录和测试可以将代理的混乱状态转化为可以交付的产品。OpenTelemetry可观测性入门

  • 防护措施应该体现在代码中,而不仅仅是提示信息中。OWASP十大 LLM 应用安全问题

代理人并非魔法师。它是一个系统,能够做出足够多的正确决策,从而发挥价值……并且会在造成损失之前承认失败。某种程度上来说,这让人感到一丝安慰😌

没错,如果搭建得当,感觉就像雇佣了一个从不睡觉、偶尔会惊慌失措、热爱文书工作的迷你数字实习生。所以,基本上就是一个实习生。.


常问问题

简单来说,什么是人工智能代理?

人工智能代理本质上是一个循环:接收输入、决定下一步、使用工具、读取结果,然后重复此过程直至完成。“代理”一词源于其行动和观察能力,而不仅仅是对话。许多代理只是具备工具访问权限的智能自动化系统,而另一些代理则更像是能够从错误中恢复的初级操作员。.

什么时候应该构建AI代理而不是仅仅使用提示?

当工作涉及多个步骤、会根据中间结果进行更改,并且需要可靠地使用工具(API、数据库、工单系统、代码执行)时,应构建代理。此外,如果您需要具有安全保障和“完成”检查机制的可重复结果,代理也很有用。如果简单的提示-响应机制就能满足需求,那么代理通常只会增加不必要的开销和额外的故障模式。.

如何构建一个不会陷入循环的AI智能体?

使用硬性停止条件:最大步数、最大工具调用次数以及明确的完成检查。添加结构化的工具模式、超时机制和重试机制(避免无限重试)。记录决策和工具输出,以便查看程序出错的位置。一个常见的安全机制是升级:如果代理程序不确定或重复出错,它应该寻求帮助,而不是自行摸索。.

构建人工智能代理的最低架构是什么?

至少你需要一个控制器循环,它向模型提供目标和上下文,请求下一步操作,如果需要则执行工具,追加观察结果,然后重复此过程。你还需要具有严格输入/输出格式和“完成”检查的工具。即使是自己编写的循环,只要保持状态清晰并强制执行步数限制,也能很好地工作。.

我应该如何设计工具调用才能使其在生产环境中可靠运行?

工具应保持功能精简、类型明确、权限控制和验证到位——避免使用通用的“万能”工具。优先采用严格的模式(例如结构化输出/函数调用),以防止代理程序随意处理输入。在工具层添加允许列表、速率限制以及用户/组织权限检查。尽可能使用幂等性模式,确保工具可以安全地重复运行。.

如何在不降低代理性能的前提下增加内存?

将记忆分为两部分:短期运行状态(最近步骤、当前计划、约束条件)和长期检索(偏好、稳定规则、相关文档)。短期记忆应保持简洁,使用运行摘要而非完整记录。对于长期记忆,检索(嵌入向量 + 向量存储/RAG 模式)通常优于将所有内容“塞入”上下文中,以免混淆模型。.

我应该使用哪种计划模式:清单式、ReAct 式还是主管-员工式?

当任务可预测且易于测试时,清单式计划工具非常实用。当工具结果会改变下一步操作时,ReAct 式循环就显得尤为重要。当任务可以并行化或受益于不同角色(例如研究员、程序员、测试人员)时,主管-员工模式(例如 AutoGen 式的角色分离)就非常有用。先计划后执行,并辅以重新计划,是避免制定顽固错误计划的实用折中方案。.

如何确保一个能够采取实际行动的代理人的安全?

使用最小权限原则,并将高风险工具限制在审批或“试运行”模式下使用。设置预算和上限:例如最大步骤数、最大支出额和每分钟工具调用次数限制。在记录日志之前对敏感数据进行脱敏处理,并将开发环境与生产环境隔离。当输入信息不明确时,要求添加不确定性标记或提出澄清问题,而不是让信心取代证据。.

如何测试和评估人工智能代理,使其能够随着时间的推移而不断改进?

构建一个包含正常路径、边界情况、工具故障、模糊请求和提示注入尝试(OWASP 风格)的场景套件。对任务成功率、完成时间、工具错误恢复情况以及缺乏证据的声明等结果进行评分。每次更改工具架构、提示、检索方式或内存格式后,都必须重新运行该套件。如果无法进行测试,就无法可靠地发布产品。.

如何在不大幅增加延迟和成本的情况下部署代理?

常见的模式是使用无状态控制器,搭配外部状态存储(数据库/Redis)、后端工具服务以及强大的日志/监控机制(通常使用 OpenTelemetry)。通过检索缓存、精简的状态摘要、更小的路由/提取模型以及将“深度思考”限制在最困难的步骤来控制成本。使用队列来处理耗时较长的任务,避免 Web 请求长时间处于打开状态。始终包含终止开关。.

参考

  1. 美国国家标准与技术研究院 (NIST) - NIST AI RMF 1.0(可信度与透明度) - nvlpubs.nist.gov

  2. OpenAI -结构化输出- platform.openai.com

  3. OpenAI -函数调用指南- platform.openai.com

  4. OpenAI -速率限制指南- platform.openai.com

  5. OpenAI -运行 API - platform.openai.com

  6. OpenAI -助手函数调用- platform.openai.com

  7. LangChain - Agents 文档(JavaScript) - docs.langchain.com

  8. LangChain -工具文档(Python) - docs.langchain.com

  9. LangChain -内存概述- docs.langchain.com

  10. arXiv - ReAct 论文(reason + act) - arxiv.org

  11. arXiv - RAG论文- arxiv.org

  12. 亚马逊网络服务 (AWS) 构建器库-带抖动的超时、重试和退避- aws.amazon.com

  13. OpenTelemetry -可观测性入门- opentelemetry.io

  14. Stripe -幂等请求- docs.stripe.com

  15. Google Cloud -重试策略(退避 + 抖动) - docs.cloud.google.com

  16. OWASP -大型语言模型应用十大安全漏洞- owasp.org

  17. OWASP - LLM01 提示注入- genai.owasp.org

  18. LlamaIndex - RAG 简介- developers.llamaindex.ai

  19. 微软-语义内核- learn.microsoft.com

  20. Microsoft AutoGen -多代理框架(文档) - microsoft.github.io

  21. CrewAI -代理概念- docs.crewai.com

  22. Haystack(深集) -检索器文档- docs.haystack.deepset.ai

在官方人工智能助手商店查找最新人工智能产品

关于我们

返回博客