你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Cosmos DB 中的 AI 代理

AI 代理旨在执行特定任务、回答问题并为用户自动执行流程。 这些代理的复杂性差异很大。 它们的范围从简单的聊天机器人到助手,再到可以自主运行复杂工作流的数字或机器人系统形式的高级 AI 助手。

本文提供了 AI 代理的概念性概述和详细的实施示例。

什么是 AI 代理?

与独立的大型语言模型 (LLM) 或基于规则的软件/硬件系统不同,AI 代理具有这些共同特征:

  • 规划:AI 代理可以规划和排序操作以实现特定目标。 集成 LLM 彻底改变了它们的规划能力。
  • 工具使用:高级 AI 代理可以使用各种工具(例如代码执行、搜索和计算功能)来有效地执行任务。 AI 代理通常通过函数调用来使用工具。
  • 感知:AI 代理可以从其环境中感知和处理信息,使其更具交互性和上下文感知性。 此信息包括视觉、听觉和其他感官数据。
  • 记忆:AI 代理具有记住过去交互(工具使用和感知)和行为(工具使用和规划)的能力。 它们可以存储这些体验,甚至进行自我反思,以指导未来的行动。 这种记忆组件可确保代理性能保持连续性并随着时间的推移不断改进。

注意

AI 代理上下文中术语“memory”的使用不同于计算机内存的概念(如易失性、非易失性和持久性内存)。

助手

助手是一种 AI 代理。 它们与用户一起工作,而不是独立运行。 与完全自动化的代理不同,助手提供建议和推荐,以帮助用户完成任务。

例如,当用户正在写电子邮件时,助手可能会建议短语、句子或段落。 用户还可以要求助手在其他电子邮件或文件中查找相关信息来支持该建议(请参阅检索增强生成)。 用户可以接受、拒绝或编辑建议的段落。

自主代理

自主代理可以更独立地运行。 设置自主代理来协助撰写电子邮件时,可以让它们执行以下任务:

  • 查阅与主题相关的现有电子邮件、聊天、文件和其他内部和公共信息。
  • 对收集到的信息进行定性或定量分析,并得出与电子邮件相关的结论。
  • 根据结论编写完整的电子邮件,并纳入支持证据。
  • 将相关文件附加到电子邮件。
  • 检查电子邮件以确保所有纳入的信息均与事实相符,且断言有效。
  • 为“收件人”、“抄送”和“密送”字段选择适当的收件人并查找他们的电子邮件地址。
  • 安排适当的时间发送电子邮件。
  • 如果未按预期收到回复,则进行跟进。

可以将代理配置为在经过或未经过人工批准的情况下执行上述每个任务。

多代理系统

一个实现高性能自主代理的热门策略是使用多代理系统。 在多代理系统中,多个自主代理(无论是数字形式还是机器人形式)相互作用或协同工作,以实现个人或集体目标。 系统中的代理可以独立运行,并拥有自己的知识或信息。 每个代理还可能具有感知其环境、做出决策以及根据其目标执行操作的能力。

多代理系统具有以下关键特征:

  • 自主:每个代理独立运行。 它会做出自己的决定,而不直接受人工干预或由其他代理控制。
  • 交互性:代理会相互通信和协作,以共享信息、协商和协调其行动。 这种交互可以通过各种协议和通信渠道进行。
  • 以目标为导向:多代理系统中的代理旨在实现特定目标,这些目标可以与单个目标或代理之间共享的目标保持一致。
  • 分布式:多代理系统以分布式方式运行,没有单一控制点。 这种分布增强了系统的稳健性、可扩展性和资源效率。

与副驾驶或单个 LLM 推理实例相比,多代理系统具有以下优势:

  • 动态推理:与思路链或思路树提示相比,多代理系统允许通过各种推理路径进行动态导航。
  • 周全的功能:多代理系统可以通过进行彻底的决策过程并在多个代理之间分配任务来处理复杂或大规模的问题。
  • 增强的记忆:具有内存的多代理系统可以克服 LLM 的上下文窗口,以便更好地进行了解和信息保留。

AI 代理的实现

推理和规划

复杂的推理和规划是高级自主代理的标志。 热门的自主代理框架结合了以下一种或多种推理和规划方法(包含 arXiv 存档页的链接):

  • 自我提问

    通过让模型在回答初始问题之前明确地问自己(并回答)后续问题来改进思路链。

  • 推理与行动 (ReAct)

    使用 LLM 以交错方式生成推理轨迹和特定于任务的操作。 推理跟踪有助于模型引导、跟踪和更新行动计划,以及处理异常。 行动使模型与外部源(如知识库或环境)连接,以收集其他信息。

  • 规划和解决

    制定计划,将整个任务划分为较小的子任务,然后根据计划执行子任务。 此方法可以减少零样本思维链提示中经常出现的计算错误、缺失步骤错误和语义误解错误。

  • 反思/自我批评

    使用口头反思任务反馈信号的反射代理。 这些代理会在情节记忆缓冲区中维护自己的反思文本,以在后续试验中引入更好的决策。

框架

各种框架和工具可以促进 AI 代理的开发和部署。

对于不需要复杂规划和记忆的工具使用和感知,一些常用的 LLM 编排器框架包括 LangChain、LlamaIndex、Prompt Flow 和 Semantic Kernel。

对于高级和自主的规划和执行工作流,AutoGen 推动了始于 2022 年底的多代理浪潮。 OpenAI 的 响应 API 允许用户在 GPT 生态系统中本机创建代理。 LangChain AgentsLlamaIndex Agents 也在同一时间面世。

AI 代理记忆系统

从 2022 年到 2025 年,对 AI 增强型应用程序进行试验的普遍做法是针对各种数据工作流或类型使用独立的数据库管理系统。 例如,可以使用内存数据库进行缓存、使用关系数据库处理操作数据(包括跟踪/活动日志和 LLM 对话历史记录)、使用纯矢量数据库进行嵌入管理。

但是,这种使用复杂独立数据库网络的做法可能会损害 AI 代理的性能。 将所有这些不同的数据库集成到一个具有凝聚力、可互操作且具有弹性的 AI 代理记忆系统中本身就是一项挑战。

此外,许多常用数据库服务并不是 AI 代理系统所需的速度和可伸缩性的最佳选择。 这些数据库各自的弱点在多代理系统中更加严重。

内存中数据库

内存数据库在速度方面非常出色,但可能难以满足 AI 代理所需的大规模数据持久性。

关系数据库

关系数据库不适合代理处理的数据的不同形式和动态架构。 关系数据库需要手动操作,甚至停机来管理配置、分区和分片。

纯矢量数据库

纯矢量数据库对事务操作、实时更新和分布式工作负载往往不太有效。 目前常用的纯矢量数据库通常具有以下特点:

  • 不保证读取和写入。
  • 有限的引入吞吐量。
  • 低可用性(低于 99.9%,或年化停机时间 9 小时或更长)。
  • 一个一致性级别(最终)。
  • 资源密集型内存矢量索引。
  • 有限的多租户选项。
  • 有限的安全性。

可靠的 AI 代理记忆系统的特征

正如高效的数据库管理系统对软件应用程序的性能至关重要一样,为 LLM 驱动的代理提供相关且有用的信息以指导其推理也至关重要。 强大的记忆系统能够组织和存储代理在推理时可以检索的各种类型的信息。

目前,基于 LLM 的应用程序通常使用检索增强生成,即使用基本语义搜索或矢量搜索来检索段落或文档。 矢量搜索可用于查找常规信息。 但矢量搜索可能不会捕获与特定任务或领域相关的具体上下文、结构或关系。

例如,如果任务是编写代码,矢量搜索可能无法检索语法树、文件系统布局、代码摘要或 API 签名,而这些对于生成连贯且正确的代码很重要。 同样,如果任务是处理表格数据,矢量搜索可能无法检索模式、外键、存储过程或用于查询或分析数据的报告。

将独立内存中数据库、关系数据库和矢量数据库(如 所述)编织在一起并不是各种数据类型的最佳解决方案。 此方法可能适用于原型代理系统。 但是,它增加了复杂性和性能瓶颈,从而阻碍了高级自主代理的性能。

一个强大的记忆系统应该具有以下特点。

多模态

AI 代理记忆系统应该提供用于存储元数据、关系、实体、摘要或其他类型的信息的集合,用于各种任务和领域。 这些集合可以基于数据的结构和格式,例如文档、表或代码。 或者,它们可以基于数据的内容和含义,例如概念、关联或过程步骤。

记忆系统不仅对 AI 代理至关重要。 它们对于开发、维护和使用这些代理的人也很重要。

例如,人类可能需要近乎实时地监督代理的规划和执行工作流程。 在监督的同时,人类可能会插入指导或对代理的对话或独白进行在线编辑。 人类可能还需要审核代理的推理和行为,以验证最终输出的有效性。

人/代理交互可能使用自然语言或编程语言,而代理则通过嵌入来“思考”、“学习”和“记忆”。 这种差异对记忆系统在不同数据模态之间的一致性提出了另一个要求。

可运行

记忆系统应该提供用于存储与用户和环境交互相关的信息的记忆库。 此类信息可能包括聊天记录、用户偏好、感官数据、做出的决策、学到的事实或其他高频率和大量更新的操作数据。

这些记忆库可以帮助代理记住短期和长期信息,避免重复或自相矛盾,并保持任务连贯性。 即使代理连续执行大量不相关的任务,这些要求也必须成立。 在高级用例下,代理还可能对在不同点发散或汇聚的众多分支进行测试。

可共享但也可以分离

在宏观层面上,记忆系统应通过提供所有代理均可访问的共享内存,使多个 AI 代理能够协作解决一个问题或处理问题的不同方面。 共享记忆可以促进代理之间的信息交换和行动协调。

同时,记忆系统必须允许代理保留自己的角色和特征,例如其独特的提示和记忆集合。

构建强大的 AI 代理记忆系统

前述特征要求人工智能代理记忆系统具有高度可扩展性和快速性。 痛苦地将内存数据库、关系数据库和矢量数据库(如之前所述)编织在一起可能适合处于早期的由 AI 支持的应用程序。 但是,此方法增加了复杂性和性能瓶颈,从而阻碍了高级自主代理的性能。

Azure Cosmos DB 可以代替所有独立数据库,作为 AI 代理记忆系统的统一解决方案。 它的稳健性使 OpenAI 的 ChatGPT 服务能够以较高的可靠性和较低的维护成本动态扩展。 它由原子记录序列引擎提供支持,是世界上第一个提供无服务器模式的全球分布式 NoSQL关系矢量数据库服务。 基于 Azure Cosmos DB 构建的 AI 代理提供了速度、规模和简单性。

速度

Azure Cosmos DB 提供个位数毫秒级延迟。 此功能使它适合需要快速数据访问和管理的进程。 这些过程包括缓存(传统缓存和语义缓存)、事务和工作负荷。

低延迟对于需要执行复杂推理、做出实时决策和提供即时响应的 AI 代理至关重要。 此外,该服务对 DiskANN 算法的使用可提供准确且快速的矢量搜索,同时消耗最少的内存。

缩放

Azure Cosmos DB 专为全球分布和水平可伸缩性而设计,支持多区域输入输出和多租户。

该服务有助于确保内存系统可以无缝扩展,并跟上快速增长的代理和相关数据。 它的服务级别协议 (SLA) 中的可用性保证相当于每年不到 5 分钟的停机时间。 相比之下,纯矢量数据库服务具有 9 小时或更多的停机时间。 此可用性为任务关键型工作负载提供了坚实的基础。 同时,Azure Cosmos DB 中的各种服务模型(如预留容量或无服务器)有助于降低财务成本。

简易性

Azure Cosmos DB 通过将多种数据库功能集成到一个统一的平台中来简化数据管理和架构。

其集成的矢量数据库功能可以存储、索引和查询嵌入以及自然语言或编程语言中的相应数据。 此功能可实现更好的数据一致性、缩放性和性能。

其灵活性可以支持代理工作流中涉及的元数据、关系、实体、摘要、聊天记录、用户偏好、感官数据、决策、学到的事实或其他操作数据的各种形式和流畅架构。 数据库会自动为所有数据编制索引,而无需进行架构或索引管理,从而帮助 AI 代理快速高效地执行复杂查询。

Azure Cosmos DB 是完全托管的,这消除了数据库管理任务(例如缩放、修补和备份)的开销。 没有了这项开销后,开发人员可以专注于构建和优化 AI 代理,而不必担心底层数据基础设施。

高级功能

Azure Cosmos DB 集成了变更源等高级功能,允许实时跟踪和响应数据变化。 此功能对于需要及时响应新信息的 AI 代理非常有用。

此外,内置对多主数据库写入的支持可实现高可用性和弹性,帮助确保 AI 代理即使在区域故障后也能持续运行。

五种可用的一致性级别(从强到最终)还可以根据场景要求满足各种分布式工作负载。

提示

使用 Azure Cosmos DB for NoSQL 生成 AI 代理内存系统。 NoSQL API 提供 99.999% 可用性保证,并提供 三种矢量搜索算法

  • IVF
  • HNSW
  • DiskANN

有关此 API 的可用性保证的信息,请参阅 服务 SLA