🦸🏻#13:行动!AI 智能体如何使用 UI 和 API 工具执行任务
我们探索了 UI 驱动与 API 驱动的交互方式,揭示了 LLM 中的函数调用,并比较了驱动自主 AI 行动的主要开源框架
至此,我们已经探索了自主智能体的所有关键组成部分:配置文件(身份、目标、约束)、知识(基本事实)、记忆(过去上下文)、推理和规划(任务分解、推理、行动计划)以及反思(评估结果以通过反馈循环改进未来性能)。除了一个例外——**行动**,它是自主智能体执行计划活动、与环境或外部工具交互并产生切实成果的实际步骤。行动将理论与现实联系起来,使其对智能体的自主性至关重要。它们使 AI 智能体能够“做一些事情”,而不仅仅是“说一些事情”。
在智能体 AI 中,“行动”是指智能体与外部系统交互的任何操作——它超越了被动文本响应,能够主动获取数据、执行代码、调用 API 或控制界面。工具集成至关重要,因为它扩展了智能体的能力,使其超越模型权重,实现真正的自主性。智能体 AI 动态应用工具和来自传感器、数据库或 Web API 的实时信息,以适应并解决复杂的现实任务。
在本文中,我们将探讨 UI 驱动与 API 驱动的方法,阐明 LLM 中的函数调用,并比较诸如 LangGraph、Microsoft AutoGen、CrewAI、Composio、OctoTools、BabyAGI 和 MemGPT (Letta) 等主要开源框架。这不是一篇轻松的阅读,但如果您对智能体感兴趣,它包含了有用的见解。
🔳 Turing Post 在 🤗 Hugging Face 上驻扎 -> 点击关注!
本期内容包括什么?
行动的重要组成部分
工具学习:基于 UI 与基于 API 的交互
在实现智能体行动方面,一个基本的选择是智能体如何与外部工具或应用程序交互。广义上,这些交互分为两类:**基于 UI 的交互和基于 API 的交互。**
- **基于 UI 的工具使用:** 在这种方法中,AI 智能体像人类一样操作软件的用户界面 (UI)——点击按钮、在表单中输入、阅读屏幕信息。这种计算机使用 AI 智能体本质上模拟了人类用户在前端的行为。这种方法类似于 AI 驱动的机器人流程自动化 (RPA)。基于 UI 的行动的优点是,即使无法或禁止直接编程访问,它也能工作。例如,如果企业应用程序没有公共 API,或者网站的服务条款禁止抓取,智能体仍然可以通过像员工一样导航 UI 来执行任务。基于 UI 的智能体天生符合前端使用策略,并且可以跨多个不同的应用程序集成工作流。然而,这种方法可能更慢,也更脆弱——界面的变化或布局的改变可能会破坏智能体的“脚本”,而且为智能体操作设置虚拟浏览器或桌面环境会增加复杂性。
- **基于 API 的工具使用:** 在这种方法中,智能体直接使用后端 API 或函数调用与软件系统交互。例如,智能体不会通过点击网页来获取股票价格,而是可能调用一个 REST API,该 API 以 JSON 格式返回数据。基于 API 的操作更结构化、更高效:它们为智能体提供精确数据,或让智能体触发已定义的操作(例如,通过 API 创建日历事件),而无需解析可视化界面。
在实践中,**现代 AI 智能体框架优先选择基于 API 的工具,因为它们具有可靠性和速度**。即使 Anthropic 的 Computer Use 工具(允许智能体与虚拟环境交互)也依赖于 API。在这种语境下的工具学习意味着促使 AI 理解何时以及如何使用工具,通常通过一系列提示、约束和示例。根据可用工具的描述和使用示例,基于 LLM 的智能体可以为查询选择正确的工具,并生成正确的 API 调用格式,从而有效地从指令中学习工具的接口。AI 从业者表示,使其工作很容易,但要保持其持续稳定工作却很难。Toolformer 等研究表明,LLM 可以通过微调来自动插入 API 调用,但实际系统通常使用提示工程或函数调用接口,而不是重新训练。对于企业来说,UI 工具和 API 工具之间的选择很重要:专注于 API 的智能体在具有强大 API 的情况下在效率和可扩展性方面表现出色,而基于 UI 的智能体对于传统系统或仅限 UI 的平台是必需的。
函数调用:LLM 如何调用外部函数
函数调用是一项最近引入的功能,已成为智能体 AI 工作流的基石。它允许开发人员在不重新训练 LLM 的情况下扩展其功能,可以通过提示或微调实现。每个函数都是模块化的、自包含的,并且可以独立维护。
因此,LLM 可以在其响应中显式调用外部函数或 API。LLM 不会直接给出最终答案,而是可以返回一个结构化的“函数调用”(例如:call_weather_api(location="London")),表示需要外部工具。然后,智能体框架或调用代码将执行此函数(例如,实际调用带有给定参数的天气 API),获取结果(例如,当前温度和预报),并将结果反馈给 LLM。然后,LLM 可以将实时数据整合到其对用户的最终答案中。这种机制有效地扩展了 LLM 的能力,使其超越了训练知识,从而能够执行现实世界的动作或查找最新信息。
在底层,函数调用通常通过向 LLM 提供其可以使用的函数的模式或定义来工作。在提示期间,如果模型“决定”用户的请求需要其中一个函数,它会输出一个 JSON 或结构化块,指示函数名称和参数(而不是或在正常答案之前)。智能体编排器会检测到这一点并执行该函数,然后将函数的输出反馈给模型(通常在系统消息或对话的继续中),以便模型可以继续使用新信息进行处理。例如,如果用户询问“我们今天有多少个开放的支持工单?”,LLM 可能会认为它应该调用 get_open_tickets() 函数。它会生成一个函数调用输出,系统会运行该 API 调用到公司数据库,获取数字,并将其返回给 LLM,然后 LLM 会回复“您目前有 42 个开放的支持工单。”
函数调用是 LLM 工作流中整合**外部动作**的强大方式。它确保了与工具的交互是**可靠且结构化的**——模型使用函数的意图是显式的,而不是隐藏在自由文本中。这减少了分析模型输出以触发动作的错误。最初,在原生函数调用可用之前(例如,在早期 GPT-4 中),框架使用精心设计的提示模式使模型输出伪命令(如 Action: Search["query"]),框架会解析并执行这些命令。如今,许多 LLM 平台(OpenAI、Azure 等)都原生支持函数调用,并且开源 LLM 项目也在整合类似的思想。这为动态工具使用打开了大门,AI 可以无缝地利用从网络搜索、数学计算器、数据库甚至物联网设备驱动等各种功能库——所有这些都在一次对话中完成。总之,函数调用让 AI 智能体可以(通过代码)在现实世界中做事情,而不仅仅是说事情,这大大增强了它们在实际工作流中的实用性。
支持行动的开源框架
在过去一年中,各种框架不断涌现,旨在帮助开发人员构建智能体 AI 系统。这些框架为行动选择、工具集成、内存管理和多步骤推理提供了核心基础设施。
在我们的“反思”一集中,我们探讨了 **ReAct 范式**,这是一种用于推理-行动循环的基础开源方法。ReAct 使 LLM 能够迭代地将推理与工具使用交织在一起,使其成为 LangChain 和 AutoGPT 等框架中广泛采用的策略。虽然 ReAct 具有高度灵活性,但需要结构化的监督以防止冗余循环。许多现代框架以 ReAct 为基础,以提高准确性和可扩展性。
下面,我们比较了几个值得注意的框架,重点关注它们如何执行操作。每个框架都提供了独特的编排**感知 → 推理 → 行动循环**的方法。
LangGraph
一个用于基于图的工作流表示的开源框架,能够对复杂的代理行为进行细粒度控制。与线性脚本不同,LangGraph 定义了一个由节点(LLM 调用、工具 API)组成的图,边缘控制信息流。它擅长可视化依赖关系和管理多步骤任务。它建立在 LangChain 之上,可以与数据库、网页搜索和其他工具无缝集成。支持并行执行和异步子代理以提高性能。LangGraph Studio 提供了一个可视化 IDE,用于调试代理工作流。缺点是由于需要手动构建图,其学习曲线很陡峭。
AutoGen (微软)
一个用于多智能体协作的开源事件驱动框架。专为代码生成等场景而设计,其中智能体异步协作(例如,“Writer”起草,“Reviewer”调试)。特点是异步消息传递以实现实时响应,模块化工具集成(通过 LangChain 和函数调用),以及分布式部署支持。包括用于无代码编排的 AutoGen Studio。高度可扩展,但强制执行结构化模式(例如,消息循环模型),这需要一些学习。
CrewAI
一个高级的开源框架,通过基于角色的结构(例如,“研究员”,“解决者”)强调多智能体协作。它建立在 LangChain 之上,便于工具集成和内存管理,并优先考虑易用性,提供现成的模板。非常适合快速原型设计和头脑风暴,但提供的细粒度控制不如 LangGraph。最适合小规模智能体编排,而非高度并行或实时密集型任务。
Composio
一个用于分层任务规划和执行的开源框架。支持具有实时反馈和依赖管理的自适应工作流。适用于复杂的多步骤任务(例如,多阶段事务、项目管理)。提供深度定制,包括模块化工具选择和状态管理,但需要更多配置工作。更侧重于工作流深度而非高并发性。
OctoTools (斯坦福大学)
一个研究驱动的开源框架,用于结构化工具使用。它使用“工具卡片”来定义 API 交互,将规划与执行分离。通过为每个查询选择最小工具集来优化多工具推理任务。依赖于提示而非微调,使其与模型无关。提供透明度和可靠性,但由于多个处理步骤,实时性能可能较慢。
BabyAGI
作为“AI 智能体”框架(原始形式更像是一个脚本)的最早例子之一,它迅速走红。它本质上是一个极简主义的智能体,能够生成任务、对其进行优先级排序并按顺序执行,使用 LLM (GPT-4) 进行认知工作,并使用向量数据库进行内存管理。许多后续框架都从中汲取了灵感,但它们引入了更强大的行动处理能力。BabyAGI 本身最适合简单的任务自动化场景,或者作为理解智能体循环的起始模板。
MemGPT (Letta)
一个用于持久、有状态 AI 智能体和长期记忆的开源框架。它管理智能体不断演变的知识和用户上下文,超越了 LLM 的令牌限制。它像智能体的“外部大脑”一样工作,将记忆存储在数据库中,并动态检索相关上下文。它需要设置(例如,服务器部署),但高度灵活且与模型无关。非常适合需要持续学习或个性化 AI 助手的应用程序。
其他新兴框架和方法
除了上述内容,智能体 AI 生态系统中还有其他值得一提的框架和研究工作。**OpenAI 的 Swarm** 是 OpenAI 最近开源的一个轻量级编排库,它允许以最小化方式通过函数调用链式连接多个智能体实例。它将每个智能体视为一个独立的实体,拥有自己的函数集,并使用简单的交接机制:一个智能体可以调用一个函数,有效地将控制权转移给另一个智能体。Swarm 不提供 LangGraph 或 AutoGen 丰富的结构,但对于希望手动管理多智能体对话并保证 OpenAI 函数调用格式的开发人员来说,它非常灵活。
另一个值得注意的概念是 **HuggingGPT**,这是微软研究人员提出的一个方案,旨在利用 LLM(ChatGPT)作为控制器,将任务路由到专业模型(如 Hugging Face 上的视觉或语音模型)。虽然它不是一个持久的框架,但它展示了 LLM 作为通用规划器动态选择专家工具(模型)来解决问题部分的想法。这个想法已在 Hugging Face Transformers 库中以“Transformers Agents”的形式实际实现,其中语言模型可以从工具库中进行选择(这些工具可以是其他机器学习模型或 API)。它在精神上与 Composio 提供的内容相似(一套工具),尽管通常规模较小,并且通常侧重于 AI 模型工具(例如,通过文本指令依次使用翻译模型和图像生成模型)。
微软的 **Semantic Kernel** 是另一个开源框架,它为 LLM 提供插件系统(技能)和顺序规划能力。它更像是一个通用的 AI 编排 SDK,结合了提示模板、内存和连接器,可用于使用 C# 或 Python 构建类似智能体的应用程序。虽然没有明确定位为多智能体或智能体团队框架,但它涵盖了在集成函数和规划调用方面的类似领域,尤其是在企业 .NET 环境中。
最后,我们还应该提到早期的项目,如 **Auto-GPT 和 AgentGPT**(曾引起轰动)。这些应用程序建立在 LLM 之上,以创建用户友好的自主智能体——例如,Auto-GPT 可以接收一个目标,并通过生成子目标和使用网络搜索等工具来尝试实现它。它们更多的是演示而不是框架,通常是硬编码且可扩展性较差。然而,它们提高了人们的意识,并提供了反馈,这些反馈已被纳入我们讨论的更正式的框架中。
智能体 AI 的前景正在迅速发展。**上述评论中的框架是 2024-2025 年的突出选择**,展示了不同的理念:从基于图的规划 (LangGraph) 到多智能体对话 (AutoGen, CrewAI),再到以工具为中心的设计 (Composio, OctoTools),以及自主循环 (BabyAGI) 和长期记忆系统 (MemGPT)。但还有其他旨在改进智能体如何选择和执行行动的趋势。
AI 行动执行的新兴趋势
- **强化学习与工具使用的微调** 超越提示工程,微调智能体(例如 AGILE)学习最优工具使用策略,超越未经训练的大型模型。多步骤决策和模仿学习(来自专家演示)的数据集提高了效率,使智能体更具环境感知能力。
- **模型专业化** 框架不再依赖单一 LLM,而是使用轻量级模型进行解析和动作选择,同时保留大型模型用于复杂推理。这种分工提高了实时性能,如 HuggingGPT 等项目中所示,其中协调器将任务委派给专业模型。
- **结构化记忆与知识图谱** 智能体越来越多地集成数据库或知识图谱以持久化结构化上下文。智能体不再将每次工具使用视为孤立的,而是构建和更新动态世界状态,从而减少冗余并提高多步骤工作流的一致性。
- **人机交互与自我修正** 尽管自主性是目标,但混合方法可提高可靠性。一些框架支持智能体自我批评、结构化同行评审或用户批准,然后才执行关键操作。来自人类反馈的强化学习(RLHF)进一步完善了行动策略。
- **多模态与现实世界行动** 智能体正在超越基于文本的工具,整合视觉、音频和机器人技术。LLM 已经能够指导浏览器自动化(例如 WebGPT)并通过高级规划和基于 RL 的执行来控制机器人。未来的智能体可能无缝集成感知和物理执行。
总的来说,AI 智能体正在从基本的工具链转向**优化、学习驱动的行动循环**,利用结构化框架、微调和现实世界适应性来提高效率和可靠性。
总结思考
以结构化方式整合行动,使 AI 智能体能够从被动变为主动。它为自主性提供了必要的支柱,使智能体不仅能够思考(得益于 LLM),还能够为实现目标而行动。随着生态系统的成熟,我们很可能会看到更标准化和更强大的行动整合技术,这将使构建能够可靠协调复杂工具和 API 以解决现实世界问题的 AI 智能体变得越来越容易。凭借强大的行动整合,AI 智能体将继续在自主性和实用性方面达到新的高度,开创能够以最少人为干预端到端处理任务的工作流程。
虽然最小,但绝非过时。在下一集中,我们将探讨**人机通信**和**人机协同 (HITL) 集成**。然后,我们将转向**多智能体协作。**
深入学习资源:
代理工作流框架
- LangGraph (LangChain) – GitHub
- AutoGen (微软) – GitHub
- CrewAI – GitHub, 官网
- Composio – GitHub, 官网
- OctoTools – GitHub
- BabyAGI – GitHub
- MemGPT (Letta) – GitHub, 官网
- OpenAI Swarm – GitHub
- HuggingGPT – HF
其他概念和框架
来自 Turing Post 的资料
- 🦸🏻#1:开放性和 AI 智能体——从生成式 AI 到创造性 AI 的路径?
- 🦸🏻#5:智能体系统的构建模块
- 🦸🏻#9:AI 会记忆吗?记忆在代理工作流中的作用
- 🦸🏻#10:当今的生成式 AI 真的能推理吗?
- 🦸🏻#11:智能体如何规划和推理?
- 🦸🏻#12:代理如何从自己的错误中学习?反思在AI中的作用
- 从思维链到思维骨架,以及介于两者之间的一切
- AI 冬天的故事及其对我们的启示(LLM 的历史。彩蛋)
感谢您的阅读!
📨 如果您想直接在收件箱中收到我们的文章,请在此订阅