解析 AI Agent 全景技术地图

文摘   2024-11-24 20:31   新加坡  

随着AI技术的快速发展,AI Agent作为一种新型智能系统正在改变我们与AI交互的方式。本文基于Letta公司发布的技术分析文章,为您详细解析当前AI Agent技术栈的全景地图。(这里是英文原文链接-https://www.letta.com/blog/ai-agents-stack

Letta公司指出,尽管市面上有很多agent技术栈和市场图谱,但这些分类很少能真实反映开发者实际使用情况。

在过去几个月里,agent相关技术在记忆、工具使用、安全执行和部署方面取得了显著进展。基于该公司超过一年的开源AI开发经验和7年以上的AI研究积累,Letta提出了一个更贴近实践的Agent技术栈分析框架。

一、 从LLM到LLM Agents的发展

20222023年,我们见证了LLM开发框架的崛起,如LangChain(2022年10月发布)和LlamaIndex(2022年11月发布)。同时,我们也看到了几个通过API使用LLM的标准平台的建立,以及自部署LLM推理服务(如vLLMOllama)的发展。

到了2024年,我们看到对AI Agents 以及更普遍的复合系统的兴趣出现了显著转变。尽管 Agents 这个术语在AI领域已存在数十年(特别是在强化学习中),但在ChatGPT时代后,这个词有了新的含义,通常指那些被赋予输出动作(工具调用)能力并在自主环境中运行的LLM。从LLM转变为 agent 所需的工具使用、自主执行和记忆的组合,催生了一个新的 agent 技术栈的发展。

二、 AI Agent技术栈的独特之处

相比基础的LLM聊天机器人,Agent在工程上是一个更具挑战性的任务,因为它们需要:

  • 状态管理(保留消息/事件历史、存储长期记忆、在agent循环中执行多个LLM调用)
  • 工具执行(安全地执行LLM输出的动作并返回结果)

因此,AI agents技术栈与标准LLM技术栈有很大的不同。让我们从底层的模型服务层开始,逐层解析当今的AI agents技术栈:

三、 模型服务层(Model serving)

AI agents的核心是LLM。要使用LLM,模型需要通过推理引擎提供服务,最常见的是通过付费API服务。

OpenAIAnthropic在封闭式API模型推理提供商中处于领先地位,拥有私有的前沿模型。

Together.AIFireworksGroq是通过付费API提供开源权重模型(如Llama 3)的流行选择。

在本地模型推理提供商中,我们最常见到vLLM在生产级GPU服务负载中领先。

SGLang是一个面向类似开发者群体的新兴项目。

在业余爱好者("AI爱好者")中,OllamaLM Studio是两个在个人电脑上运行模型的流行选择(如M系列Apple Macbook)。

四、 存储(Storage)

存储是具有状态的agents的基础构建块 - agents的定义特征包括其持久化的状态,如对话历史、记忆和用于RAG的外部数据源。

Chroma、Weaviate、Pinecone、QdrantMilvus等向量数据库常用于存储agents的外部记忆,使agents能够利用远超上下文窗口大小的数据源和对话历史。

自80年代就存在的传统数据库Postgres,现在通过pgvector扩展也支持向量搜索。像Neon(无服务器Postgres)和Supabase这样的基于Postgres的公司也为agents提供基于embedding的搜索和存储服务。

五、 工具和库(Tools & libraries)

标准AI聊天机器人和AI agents的主要区别之一是 agent 调用"工具"(或"函数")的能力。在大多数情况下,这个动作的机制是LLM生成结构化输出(例如JSON对象),指定要调用的函数和提供的参数。关于 agent 工具执行的一个常见误解是,工具执行不是由LLM提供商本身完成的 - LLM只是选择要调用什么工具,以及提供什么参数。支持任意工具或任意参数输入的agent服务必须使用沙盒(如Modal、E2B)来确保安全执行。

所有agents都通过OpenAI定义的JSON模式调用工具,这意味着agents和工具实际上可以跨不同框架兼容。Letta agents可以调用LangChain、CrewAIComposio的工具,因为它们都由相同的模式定义。正因如此,常用工具的提供商生态系统正在增长。Composio是一个流行的通用工具库,同时也管理授权。Browserbase是专门用于网页浏览的工具示例,Exa提供专门的网络搜索工具。随着更多agents的构建,我们预计工具生态系统将增长,并为agents提供现有的新功能,如认证和访问控制。

六、 Agent框架(Agent Frameworks)

Agent框架负责编排LLM调用和管理agent状态。不同框架在以下方面有不同的设计:

  • 管理agent的状态

大多数框架都引入了某种序列化状态的概念,通过将序列化状态(如JSON、字节)保存到文件中,允许agents在稍后时间重新加载到相同的脚本中 — 这包括对话历史、agent记忆和执行阶段等状态。在Letta中,所有状态都由数据库支持(如消息表、agent状态表、记忆块表),因此没有序列化的概念,因为agent状态始终是持久化的。这允许轻松查询agent状态(例如,按日期查找过去的消息)。状态的表示和管理方式决定了agents应用程序如何随着更长的对话历史或更多数量的agents而扩展,以及状态如何灵活地被访问或修改。

  • Agent的上下文窗口结构

每次调用LLM时,框架都会将agent的状态编译到上下文窗口中。不同的框架会以不同方式将数据放入上下文窗口(如指令、消息缓冲区等),这可能会改变性能。我们建议选择使上下文窗口透明的框架,因为这最终是如何控制agents行为的方式。

  • 跨agent通信(即多agent)

LlamaIndex通过消息队列进行agents通信,而CrewAIAutoGen则有明确的多agent抽象器。LettaLangGraph都支持agents直接相互调用,这允许通过监督agent进行集中式和分布式通信。现在大多数框架都支持多agent和单agent,因为设计良好的单agent系统应该使跨agent协作易于实现。

  • 记忆方法:

LLM的一个基本限制是它们的有限上下文窗口,这需要随时间管理记忆的技术。记忆管理内置于某些框架中,而其他框架则期望开发者自己管理记忆。CrewAIAutoGen仅依赖基于RAG的记忆,而phidataLetta使用额外的技术,如自编辑记忆(来自MemGPT)和递归总结。Letta agents自动配备了一套记忆管理工具,允许agents通过文本或数据搜索以前的消息、写入记忆和编辑agent自己的上下文窗口。

  • 开放模型支持

模型提供商实际上在后台做了很多技巧来让LLM以正确的格式生成文本(例如工具调用)— 比如当它们没有生成正确的工具参数时重新采样LLM输出,或在提示中添加提示(例如"请输出JSON")。支持开放模型需要框架处理这些挑战,所以一些框架限制了对主要模型提供商的支持。

在今天构建agents时,正确的框架选择取决于你的应用,比如你是在构建会话agent还是工作流,你是想在笔记本中运行agents还是作为服务运行,以及你对开放权重模型支持的要求。

我们预计框架之间的主要差异将出现在它们的部署工作流中,在这里状态/记忆管理和工具执行的设计选择变得更加重要。

七、 Agent托管和服务(Agent hosting and agent serving)

今天大多数agent框架都是为不存在于它们编写的Python脚本或JupyterNotebook之外的agents设计的。我们相信agents的未来是将其作为部署到本地或云基础设施的服务,通过REST API访问。就像OpenAIChatCompletion API成为与LLM服务交互的行业标准一样,我们预计最终会出现Agents API的赢家。不过目前还没有...

由于状态管理和安全工具执行的问题,将agents部署为服务比将LLM部署为服务要复杂得多。

  • 工具及其所需的依赖项和环境需要明确存储在数据库中,因为环境需要由服务重新创建(当你的工具和agents在同一脚本中运行时这不是问题)。
  • 应用程序可能需要运行数百万个agents,每个agent都在积累增长的对话历史。
  • 从原型到生产时,inevitably agent状态必须经过数据规范化过程,而agent交互必须由REST API定义。

今天,这个过程通常由开发人员编写自己的FastAPI和数据库代码完成,但我们预计随着agents的成熟,这个功能将更多地嵌入到框架中。

总结

AI Agent技术栈仍处于早期阶段,未来发展重点可能包括:

  • 标准化的Agent API
  • 更完善的部署方案
  • 丰富的工具生态
  • 更强大的记忆管理机制

*关于Letta:该公司源自MemGPT开源项目,专注于构建高级AI Agent系统。其技术实力得到业界认可,吴恩达教授曾与其创始人合作开设短期课程,向开发者介绍Letta Agent的应用。


如果你觉得今天的分享有帮助,记得点赞、收藏并转发,下次找起来更方便哦!

蔡荔谈AI
AI科普 AI培训 超级个体 创业
 最新文章