Skip to content

AI 智能体(Agent)的构建要素

Building blocks of AI Agents

AI 智能体(Agent)的设计初衷,就是让它能够自主推理、规划并采取行动。不过,

要真正发挥作用,智能体的构建还必须遵循一些关键原则。有六个基础构建要素,能让 AI 智能体在实际应用中变得更可靠、更智能、更有用:1. 角色扮演 2. 专注度 3. 工具 4. 协作 5. 护栏机制 6. 记忆

让我们逐一探讨这些概念,理解它们为什么是构建优秀 AI 智能体的根本所在。

1)角色扮演

提升智能体表现最简单的方法之一,就是给它一个清晰、具体的角色设定。

ai agents p182 1

一个通用的 AI 助手可能只会给出含糊的回答。但如果把它设定为「资深合同律师」,它的回答就会带上法律层面的精准性和语境把握。为什么会这样?因为角色设定会塑造智能体的推理和检索过程。角色设定得越具体,输出就越精准、越贴题。

2)专注与任务范围

专注度是减少幻觉、提升准确性的关键。

给智能体分配过多任务或过量数据,非但没有帮助,反而会适得其反。

ai agents p183 1

任务过载会导致混乱、前后不一致、结果不理想。举例来说,一个营销智能体应该专注于信息传达、语气和受众,而不是定价或市场分析。与其让一个智能体包揽一切,更好的做法是使用多个智能体,每个智能体只负责一个具体而狭窄的领域。专业化的智能体表现始终更出色——无一例外。

3)工具

当智能体能够使用恰当的工具时,它们就会变得更聪明。

但工具越多 ≠ 结果越好。

ai agents p184 1

举例来说,一个 AI 科研智能体可以从以下工具中受益:

  • 网络搜索工具,用于检索最新发表的论文。
  • 摘要模型,用于压缩长篇研究论文。
  • 文献管理工具,用于规范格式化参考文献。

但如果加入不必要的工具——比如语音转文字模块或代码执行环境——反而可能让智能体感到困惑,降低效率。

3.1)自定义工具

虽然由 LLM 驱动的智能体擅长推理和生成回答,但它们无法直接访问实时信息、外部系统和专门的计算能力。工具能让智能体做到:

  • 联网搜索获取实时数据。
  • 从 API 和数据库中检索结构化信息。
  • 执行代码以完成计算或数据转换。
  • 分析图像、PDF 和文档等超越纯文本的输入内容。

CrewAI 支持多种可以与智能体集成的工具,如下图所示:

ai agents p185 1

不过,有时你可能需要自己搭建自定义工具。在这个示例中,我们将在 CrewAI 中构建一个实时货币转换工具。与其让 LLM 去猜测汇率,我们不如接入一个自定义工具,让它从外部 API 获取实时汇率,并给出一些洞见。接下来,让我们看看如何在 CrewAI 框架中根据自己的需求搭建这样一个工具。首先,确保已经安装了 tools 包:

ai agents p186 1

你还需要从这里获取一个 API 密钥:https://www.exchangerate-api.com/(免费)。然后按照下图所示,把它写入 .env 文件:

ai agents p186 2

完成之后,我们先写一些标准的 import 语句:

ai agents p186 3

接下来,我们用 Pydantic 定义该工具所需的输入字段。

ai agents p186 4

现在,我们通过继承 BaseTool 来定义 CurrencyConverterTool:

ai agents p187 1

每个工具类都应该包含一个 _run 方法,每当智能体需要调用这个工具时,就会执行这个方法。对于我们的场景,实现如下:

ai agents p187 2

在上面这段代码中,我们通过一次 API 请求来获取实时汇率,同时也处理了请求失败或货币代码无效的情况。接下来,我们定义一个用于实时汇率分析的智能体,并为它接入我们的 CurrencyConverterTool,让它在需要时可以直接调用:

ai agents p187 3

我们给 currency_analyst 这个智能体分配一个任务。

ai agents p188 1

最后,我们创建一个 Crew,把智能体分配给这个任务,然后执行它。

ai agents p188 2

打印出响应结果,我们会得到如下输出:

ai agents p188 3

运行结果符合预期!

3.2)通过模型上下文协议(MCP)实现自定义工具

现在,让我们再往前推进一步。

与其把这个工具直接嵌入每一个 Crew,我们不如把它封装成一个可复用的 MCP 工具——通过一个简单的服务器,让它能被多个智能体和多条流程共同调用。

首先,安装所需的依赖包:

ai agents p189 1

我们会继续在 .env 文件中使用 ExchangeRate-API:

ai agents p189 2

接下来,我们编写一个轻量级的 server.py 脚本,用来对外暴露这个货币转换工具。先从标准的 import 语句开始:

ai agents p189 3

然后,我们加载环境变量并初始化服务器:

ai agents p190 1

接下来,我们用 @mcp.tool() 定义工具的具体逻辑:

ai agents p190 2

这个函数接收三个输入——金额、源货币和目标货币,并通过实时汇率 API 返回转换后的结果。

为了让这个工具可以被访问,我们需要运行 MCP 服务器。在脚本末尾加上这段代码:

ai agents p190 3

这会启动服务器,并把 convert_currency 工具暴露在:http://localhost:8081/sse

现在,任何 CrewAI 智能体都可以通过 MCPServerAdapter 连接到它。接下来,让我们在一个 CrewAI 智能体中调用这个工具。

首先,我们导入所需的 CrewAI 类:从 CrewAI 中导入 Agent、Task 和 Crew,再用 MCPServerAdapter 连接到我们的工具服务器。

ai agents p191 1

接下来,我们连接到 MCP 工具服务器:定义好服务器参数,以连接到正在运行的工具(也就是 server.py)。

ai agents p191 2

现在,我们在一个智能体中使用发现到的这个 MCP 工具:

这个智能体被分配了来自远程服务器的 convert_currency 工具,现在它调用这个工具的方式,就跟调用本地定义的工具一样。

ai agents p192 1

我们给智能体设定一段任务描述:

ai agents p192 2

最后,我们创建 Crew,传入输入参数并运行它:

ai agents p192 3

打印结果,我们会得到如下输出:

ai agents p192 4

4)协作

当各个智能体能够相互协作、交换反馈时,多智能体系统的表现才最出色。

与其让一个智能体包办一切,不如让一组专业化的智能体分工协作,彼此完善对方的输出。

ai agents p193 1

以一个 AI 驱动的金融分析系统为例:

  • 一个智能体负责收集数据,
  • 另一个负责评估风险,
  • 第三个负责制定策略,
  • 第四个负责撰写报告

协作能带来更智能、更准确的结果。

最佳实践是通过设计合理的工作流,让智能体之间可以交换见解、共同打磨彼此的输出,从而实现真正的协作。

5)护栏机制

智能体的能力很强,但如果没有约束,它们也可能偏离轨道,可能会

产生幻觉、陷入无限循环,或者做出糟糕的判断。

护栏机制能确保智能体始终不偏离轨道,并维持应有的质量标准。

ai agents p194 1

一些实用的护栏机制包括:

  • 限制工具使用:防止智能体过度调用 API 或生成不相关的查询。
  • 设置校验节点:确保输出在进入下一步之前,满足预先设定的标准。
  • 建立兜底机制:如果某个智能体未能完成任务,可以由另一个智能体或人工审核者介入处理。

举例来说,一个 AI 驱动的法律助手应该避免引用过时的法律条文或做出不实陈述——护栏机制正是为此而存在的。

6)记忆

最后是记忆,它是 AI 智能体最关键的组成部分之一。没有记忆,智能体每次都要从零开始,丢失此前所有交互留下的上下文。有了记忆,智能体就能随着时间不断改进,记住过去的行动,给出更连贯一致的回应。

ai agents p195 1

AI 智能体中的记忆可以分为以下几种类型:

  • 短期记忆——仅在执行过程中存在(例如,记住最近的对话历史)。
  • 长期记忆——在执行结束后依然保留(例如,跨多次交互记住用户偏好)。
  • 实体记忆——存储关于所讨论的关键对象的信息(例如,在 CRM 智能体中跟踪客户详情)。举例来说,在一个 AI 驱动的辅导系统中,记忆能让智能体回忆起过去教过的课程内容,据此给出针对性的反馈,并避免重复讲解。

本站内容仅供学习交流,版权归原作者所有。