设想一款大型语言模型(LLM)应用,它的设计目的是帮助金融分析师解答关于公司业绩的各类问题。如果配备了精心设计的检索增强生成(RAG)流程,分析师就能够轻松回答像“2022财年,X公司的总收入是多少?”这样的问题。对于经验丰富的分析师来说,这些信息可以轻松地从财务报表中提取出来。

现在请思考这样一个问题:“在2023财年第二季度的财报电话会议中,有哪三个重要的信息值得我们关注?请特别聚焦公司正在构建的技术壁垒。”

这种问题是金融分析师在编写报告时希望解答的,但是他们需要投入时间来寻找答案。

我们如何才能找到解决类似上述问题的方法呢?显然,这类信息的获取不仅仅是从财报会议中简单查找得来的。解答这类问题需要精心规划,有针对性的关注,记忆力,运用不同的工具,以及将复杂的问题分解成更简单的子问题。将这些要素融合在一起,我们就得到了所谓的 LLM Agent。

What is an AI agent?

我们可以将其理解为这样一个系统:它能够利用LLM进行问题的推理,构建解决问题的方案,并借助一系列工具来实施这个方案。

简单来说,这些智能体就是具有复杂推理能力,记忆功能以及执行任务手段的系统。

这种能力最初在 AutoGPTBabyAGI 等项目中被发现,这些项目能够在几乎不需要人为干预的情况下解决复杂问题。为了更深入地理解AI智能体,我们来看一下由LLM驱动的AI智能体应用的一般架构。

一个智能体主要由以下几个关键部分组成:

  • Agent core
  • Memory module
  • Tools
  • Planning module

Agent core

智能体的核心部分是一个集中协调模块,负责管理智能体的基本逻辑和行为特征。你可以把它看作是智能体的“主要决策中心”。

它可能包含以下定义:

  • 任务或者目标
  • 可以执行的tools
  • 对如何利用各种规划模块的详细解读
  • 记忆
  • 所持有的个性特征(可选)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template = '''
GENERAL INSTRUCTIONS
Your task is to answer questions. If you cannot answer this question, request a helper or use a tool. Fill with Nil where no tool or helper is requireds.

AVALIABLE Tools
- Search Tool
- Math Tool

AVALIABLE HELPERS
- Decomposition: Breaks Complex Questions down into simpler subparts

CONTEXTUAL INFORMATION
<No Previous questions asked>

QUESTIONS
How much did the revenue grow between Q1 of 2024 and Q2 of 2024?

ANSWER FORMAT
{"Tool_Request": "<FILL>", "Helper_Request": "<FILL>")
'''

Memory module

记忆块在 AI 智能体中发挥着至关重要的作用。我们可以将内存模块理解为一种存储设备,它存放着智能体的内部记录以及与用户的互动信息。

有两种类型的记忆模块:

  • Short-term memory: 这是一个记录智能体尝试回答用户单个问题过程中的行为和思维的日志:也就是智能体的“思维轨迹”。
  • Long-term memory: 这是一份记录用户与 AI 智能体之间互动和思考的清单,就像一本日志,记录了跨越数周或数月的对话历史。

记忆的过程并不只依赖于基于语义相似性的检索方式。一般来说,我们会综合考虑语义相似性、信息的重要性、新近程度以及其他特定应用的度量标准,形成一个综合评分。这个评分被用于帮助我们检索到特定的信息。

Tools

工具可以理解为一系列明确定义的步骤,AI 智能体可以利用它们来完成各种任务。这些工具在很大程度上,就像是为特定目的定制的第三方 API。

举例来说,AI 智能体可以利用 RAG(Retrieval-Augmented Generation)工具,根据上下文生成恰当的回答;或者使用代码解释器来解决需要编程的复杂问题;它们甚至能通过 API 在互联网上搜寻信息,或者使用一些简单的 API 服务,比如查询天气的 API,或者即时通讯应用的 API。

Plaining module

解决复杂问题,如分析一组财务报告以解答一个多层次的商业问题,通常需要巧妙的策略。利用 LLM 驱动的 AI 智能体,我们可以通过结合两种技术来应对这种复杂性:

  • Task and question decomposition
  • Reflection or critic

任务拆解

解答复杂问题或推理信息往往需要我们将其拆解。比如,这样一个问题,“在NVIDIA最近一次的财报电话会议中,有哪三大重要观点?”

要回答这个问题,我们无法直接从一个小时长的会议记录中直接提取出答案。但是,我们可以将这个问题拆分成多个子问题:

  • “会议中讨论了哪些主要的技术变革?”
  • “企业面临哪些商业挑战?”
  • “财务状况如何?”

这些问题都可以进一步细分。也就是说,我们需要一个专门的 AI 智能体来引导这个拆解过程。

反省或批评

像 ReAct、Reflexion、Chain of Thought 和 Graph of Thought 这样的技术,都是基于批评或证据的引导框架。它们广泛应用于提升大型语言模型(LLMs)的推理能力和响应效果。同时,这些技术也可以用来优化 AI 智能体(agent)生成的任务执行策略。

商业应用智能体

“Talk to your data” agent

“与你的数据进行交流”并不是一个容易解决的问题。有很多挑战是直接使用 RAG 管道无法解决的:

  • 来源文档之间的语义相似度
  • 如表格那样的复杂数据结构
  • 缺乏明显的上下文信息(并不是每一块数据都包含其来源的标识)
  • 用户提出的问题的复杂性
  • ……等等

你如何回答这个问题:“2023年第三季度与2024年第一季度之间,数据中心的收入增加了多少?”要解答这个问题,你实际上需要独立解答三个子问题(也就是说,我们需要一个能进行问题分解的模块):

  • 2023年第三季度的数据中心收入是多少?
  • 2024年第一季度的数据中心收入是多少?
  • 这两个数值之间的差距是多少?

在这种情况下,你需要一个能访问问题分解模块的 AI 智能体,这个模块能生成子问题并寻找答案,直到解决整个问题。此外,你还需要一个 RAG 工具,用于检索特定信息,以及一些能准确处理子问题的记忆模块。

智能体集群

我们可以将一群 AI 智能体看作是在同一环境中共存、并能够协同解决问题的智能体集合。这样的分布式智能体生态系统,就像是多个“智能”微服务协同工作,共同解决问题。

Generative AgentsChatDev 这样的多智能体环境在社区中备受欢迎。原因何在?因为像 ChatDev 这样的框架可以帮你构建一支包括工程师、设计师、产品管理人员、CEO 以及智能体在内的团队,以极低的成本创建基础软件。流行的游戏,如 “Brick Breaker” 或 “Flappy Bird”,甚至可以以低至50美分的价格制作出原型!

利用一群 AI 智能体,你可以为诸如经济研究的行为模拟、企业营销活动、物理基础设施的用户体验元素等应用,创建一个数字化的公司、社区,甚至是整个城镇。

推荐助手

推荐系统在互联网中扮演着重要角色。利用 AI 智能体驱动的对话推荐系统,我们可以提供更个性化的服务。

比如说,在一个电商网站上,有一个 AI 智能体可以帮你比较各种产品,并根据你的需求和选择为你提供推荐。我们甚至可以创建一种全方位的、类似于有礼宾服务的体验,让多个 AI 智能体帮助用户在在线商店中导航。就像选择看哪部电影或预定哪间酒店房间一样,这些体验可以被设计成对话——而不仅仅是类似决策树的对话!

自定义写作

另一种强大的工具是拥有一个可以协助你完成任务的个人 AI 写作助手,例如共同撰写电子邮件,或者帮你准备紧急会议和演讲。常规的写作工具的问题在于,对于不同的受众,我们必须根据他们的特性来定制不同类型的文本。比如说,向投资者的推介必须与团队的演讲用词不同。

AI 智能体可以利用你过去的工作。然后,你可以让这个智能体将一个它生成的推介塑造成符合你的个人风格,并根据你的特定场景和需求进行定制。这个过程通常对于一般的 LLM 微调来说,细节处理得过于微妙。

多模态

如果仅仅依赖文本输入,你其实无法真正深入地理解你的数据。所有前文提到的使用场景都可以通过构建能够处理多种输入的多模态智能体来进行增强,比如说,处理图像和音频文件。

开发社区正在积极探索的领域包括为数据整理、社交图谱以及领域专业知识开发的 AI 智能体,这些都是企业应用的活跃研究领域。

Challenges

  • 角色适应能力:LLM 智能体在特定领域内有效执行任务通常需要适配特定角色。针对 LLM 较弱的角色识别能力,可以通过针对性地微调 LLM,使用反映罕见角色或心理特征的数据来增强其性能。

  • 长期规划与有限上下文长度:基于长时间历史的规划是一大挑战,可能导致错误累积,智能体难以自我纠错。同时,LLM 支持的上下文长度有限,这可能制约智能体的功能,比如限制其利用短期记忆的能力。

  • 广泛的人类价值对齐:使智能体与多元化的人类价值观保持一致同样具有挑战性,这在传统 LLM 中也是一个普遍问题。一种可能的解决方法是通过设计先进的提示策略来调整 LLM,以便更好地对齐人类价值。

  • 提示的稳定性与可靠性:LLM 智能体可能涉及设计多个提示来支持不同功能模块,如记忆和规划,而对提示微小变化的高敏感度常导致可靠性问题。整个提示框架的设计使其更易受到稳定性问题的影响。可能的解决办法包括通过反复试验来设计提示元素、自动优化或调整提示,或利用 GPT 自动生成提示。另一个常见问题是“语言幻觉”,LLM 智能体依赖自然语言与外部组件交互,可能因为接收到的冲突信息而产生信息准确性问题。

  • 知识界限:控制 LLM 的知识范围具有挑战性,这直接影响模拟活动的有效性。LLM 内部的知识可能携带偏见或使用用户不熟悉的信息,这在特定环境下可能影响智能体的表现。

  • 效率:LLM 智能体的操作涉及大量请求处理,这可能影响其行动的效率,因其高度依赖于 LLM 的推理速度。同时,在部署多个智能体时,成本也成为了一个需要考虑的因素。

参考

LangChain | 快速释放LLMs的能力

What is an LLM Agent

Introduction to LLM Agents