如何构建高效 AI 智能体

2025年6月17日

在过去一年里,我们与数十个来自不同行业的团队合作,共同构建大型语言模型(LLM)智能体。我们发现一个普遍现象:最成功的项目,往往不是依赖于复杂的框架或专门的库,而是采用简单、可组合的设计模式。

这篇文章将分享我们从服务客户和自研智能体过程中总结的经验,为开发者提供构建高效智能体的实用建议。

1.什么是智能体?

“智能体”可以有多种定义。有些客户将其定义为能够长时间独立运行、使用各种工具完成复杂任务的完全自主系统。另一些客户则用这个词来描述遵循预定义工作流程、更具规范性的实现。我们将这些变体都归类为智能体系统,但在架构上对工作流和智能体做重要区分:

下文中,我们将详细探讨这两种智能体系统。在附录 1(“实践中的智能体”)中,我们描述了客户在使用这类系统中发现特别有价值的两个领域。

2.何时(以及何时不该)使用智能体

在用 LLM 构建应用时,我们建议先寻找最简单的解决方案,仅在必要时再增加复杂性。这甚至可能意味着根本不构建智能体系统。智能体系统通常以延迟和成本为代价,换取更好的任务性能,你需要仔细权衡这种交换是否值得。

当确实需要更高的复杂性时:对于定义明确的任务,工作流能提供更好的可预测性和一致性。

当需要大规模的灵活性和模型驱动决策时,智能体是更好的选择。

然而,对许多应用来说,通过检索和上下文示例来优化单次 LLM 调用通常就足够了。

3.如何以及何时使用框架

市面上有很多框架可以简化智能体系统的实现,例如:

这些框架通过简化调用 LLM、定义和解析工具、将调用链接在一起等标准的底层任务,让你能轻松上手。但是,它们也常常制造出额外的抽象层,可能会掩盖底层的提示和响应,使调试变得更加困难。它们还可能诱使你在一个更简单的设置就足够的情况下,不必要地增加复杂性。

我们建议开发者从直接使用 LLM API 开始:许多模式只需几行代码即可实现。如果你确实要使用框架,请确保你理解其底层代码。对底层机制的错误假设是导致出错的常见原因。

4.构建块、工作流与智能体

在本节中,我们将探讨在生产环境中观察到的常见智能体系统模式。我们将从最基础的构建块——增强型 LLM——开始,逐步增加复杂性,从简单的组合式工作流到自主智能体。

4.1 构建块:增强型 LLM

智能体系统的基础构建块是一个通过检索、工具和记忆等能力得到强化的 LLM。我们目前的模型能够主动运用这些能力——生成自己的搜索查询、选择合适的工具,以及决定保留哪些信息。

我们建议在实现中关注两个关键方面:根据你的具体用例定制这些能力,并确保它们为你的 LLM 提供一个简单、文档完善的接口。

4.2 工作流:提示链

提示链将一个任务分解为一系列步骤,其中每个 LLM 调用处理前一个调用的输出。你可以在任何中间步骤添加程序化检查(如下图中的”关卡”),以确保流程仍在正轨上。

何时使用:当任务可以被轻松、清晰地分解为固定的子任务时,这个工作流非常理想。其主要目标是通过让每次 LLM 调用都成为一个更简单的任务,来换取更高的准确性。

4.3 工作流:路由

路由对输入进行分类,并将其引导至一个专门的后续任务。这个工作流允许关注点分离,并构建更专业的提示。否则,为一种输入进行的优化可能会损害在其他输入上的性能。

何时使用:当一个复杂任务有明显不同的类别,且这些类别分开处理效果更好,并且分类可以被 LLM 或传统分类模型准确处理时,路由模式非常有效。

4.4 工作流:并行化

LLM 有时可以同时处理一个任务的不同部分,然后通过程序将它们的输出聚合起来。这种并行化工作流主要有两种形式:

分片:将任务分解为并行运行的独立子任务。

投票:多次运行同一个任务以获得多样化的输出。

何时使用:当分割的子任务可以并行化以提高速度,或者当需要多个视角或尝试以获得更高置信度的结果时,并行化是有效的。对于具有多个考量的复杂任务,如果每个考量都由一个单独的 LLM 调用来处理,LLM 通常表现得更好。

4.5 工作流:编排器 - 工作者

在编排器 - 工作者工作流中,一个中心的”编排器” LLM 动态地分解任务,将其委托给”工作者” LLM,并综合它们的结果。

何时使用:此工作流非常适合那些你无法预测所需子任务的复杂任务(例如,在编码中,需要更改的文件数量以及每个文件中更改的性质很可能取决于具体任务)。与并行化的关键区别在于其灵活性——子任务不是预定义的,而是由编排器根据具体输入决定的。

4.6 工作流:评估器 - 优化器

在评估器 - 优化器工作流中,一个 LLM 调用生成响应,而另一个在循环中提供评估和反馈。

何时使用:当存在清晰的评估标准,并且迭代改进能提供可衡量价值时,此工作流特别有效。一个好的应用场景通常有两个迹象:首先,当人类阐明他们的反馈时,LLM 的响应可以得到明显改善;其次,LLM 本身也能够提供此类反馈。

4.7 智能体

随着 LLM 在理解复杂输入、进行推理和规划、可靠地使用工具以及从错误中恢复等关键能力上的成熟,智能体正在生产环境中崭露头角。

智能体的工作始于人类用户的命令或互动式讨论。任务明确后,智能体便独立进行规划和操作,并可能返回向人类寻求更多信息或判断。在执行过程中,至关重要的是,智能体在每一步都要从环境中获得”地面实况”(如工具调用结果或代码执行结果)来评估其进展。

智能体的实现通常很简单:它们通常只是一个在循环中根据环境反馈使用工具的 LLM。因此,清晰而周到地设计工具集及其文档至关重要。

何时使用智能体:智能体可用于开放式问题,这些问题的步骤数量难以或不可能预测,也无法硬编码固定路径。LLM 可能会运行多轮,你必须对其决策有一定程度的信任。智能体的自主性使其成为在受信任环境中扩展任务的理想选择。

智能体的自主性意味着更高的成本和潜在的复合错误。我们建议在沙盒环境中进行广泛测试,并配备适当的防护机制。

5.组合与定制这些模式

这些构建块并非一成不变的处方。它们是开发者可以根据不同用例进行塑造和组合的常见模式。成功的关键在于衡量性能并迭代实现。再次强调:只有在能明确改善结果时,才应考虑增加复杂性。

6.总结

在 LLM 领域取得成功,关键不在于构建最复杂的系统,而在于为你的需求构建正确的系统。从简单的提示开始,通过全面的评估来优化它们,只有在更简单的解决方案力不从心时,才添加多步智能体系统。

在实施智能体时,我们努力遵循三个核心原则:

  1. 保持智能体设计的简洁性。

  2. 通过明确展示智能体的规划步骤来优先考虑透明度。

  3. 通过详尽的工具文档和测试,精心打造你的智能体 - 计算机接口(ACI)。

框架可以帮你快速入门,但在转向生产环境时,不要犹豫,减少抽象层,用基本组件进行构建。遵循这些原则,你就能创造出不仅强大,而且可靠、可维护并受用户信任的智能体。


附录 1:实践中的智能体

我们与客户的合作揭示了 AI 智能体在两个特别有前景的应用场景。

A. 客户支持

客户支持将熟悉的聊天机器人界面与通过工具集成增强的功能相结合。这是一个天然适合更开放式智能体的领域,因为:

B. 编码智能体

软件开发领域已显示出 LLM 功能的巨大潜力,其能力从代码补全发展到自主解决问题。智能体在这里特别有效,因为:

附录 2:为你的工具进行提示工程

无论你构建哪种智能体系统,工具都可能是其重要组成部分。精心设计的工具定义和规范,应该得到与你的整体提示同等程度的关注。

我们的工具格式建议如下:

一个经验法则是:思考一下我们在人机交互界面上投入了多少精力,然后计划在创建好的智能体 - 计算机接口时投入同样多的精力。以下是一些如何做到这一点的想法: