Introducing ambient agents

介绍环境代理

阅读需时 6 分钟

如今,大多数 AI 应用都遵循熟悉的聊天模式(“聊天”用户体验)。虽然易于实现,但它们会造成不必要的交互开销,限制我们人类扩展自身能力,并且未能充分利用 LLM 的潜力。

在过去的六个月里,我们在 LangChain 探索了一种不同的方法:代理响应环境信号,并且仅在检测到重要机会或需要反馈时才需要用户输入。这些代理不会强迫用户进入新的聊天窗口,而是帮助您节省注意力,将其用于最重要的事情。

我们构建了 LangGraph,使这些模式易于实现。今天,我们分享我们的第一个参考实现:一个 电子邮件助手,它演示了关键的环境代理模式。在接下来的几天里,我们将发布更多示例和工具,以帮助您构建自己的环境工作流程。

什么是环境代理?

当使用 ChatGPT(或任何其他聊天机器人)时,它们依赖于您发起对话。代理由人类发送消息来启动。

这对于某些用例来说很棒,但对于其他用例来说也具有很大的局限性。它要求用户进入聊天界面,并在每次希望代理执行工作时发送消息。让代理开始工作有很多开销。

另一个限制是您一次只能进行一次对话。这使得我们人类很难扩展自身能力 - 一个代理一次只能为我们做一件事。

如果我们考虑一种允许我们克服这些限制的用户体验范例,它应该表现出两个关键特征

  • 它不应(仅)由人类消息触发
  • 它应该允许多个代理同时运行

这些特征定义了我们所说的环境代理

💡
环境代理监听事件流并据此采取行动,可能会同时处理多个事件

但值得注意的是,我们并不认为环境代理必然是完全自主的。事实上,我们认为将环境代理带给公众的关键部分将是周全地考虑何时以及如何这些代理与人类互动。

人机在环

我们使用人机在环来指代这些代理何时以及如何与人类互动。我们稍后会讨论如何,但现在让我们讨论何时

我们通常看到环境代理的三种常见人机在环模式:通知、提问和审查。

通知:让用户知道某些事件很重要,但不采取任何行动。这在标记用户应该看到的事件时很有用,但在这些事件中,代理没有被授权采取行动。在电子邮件助手的上下文中,这可能是代理标记我收件箱中的 Docusign - 它无法签署该 Docusign,但我应该知道它的存在。

提问:向用户提问以帮助解除代理的阻塞。代理可能正在尝试采取某些行动,但不清楚如何最好地执行,因为它缺少一些相关信息。与其产生幻觉或猜测,不如让代理询问人类该怎么做。在电子邮件助手的上下文中,这可能是代理询问我是否想参加会议。除非提示中有什么指示代理了解我的会议偏好,否则它不可能知道。人类 EA 会问我,智能代理也应该问我。

审查:审查代理想要采取的行动。有些行动足够“危险”,可能值得为代理想要采取的任何行动硬编码审查。人类可以批准该行动,直接编辑它,或向代理提供关于如何更改它的直接反馈。在电子邮件助手的上下文中,这可能是外发电子邮件。它可能会撰写草稿,但我必须批准它,直接编辑邮件内容,或告诉代理以某种方式修复它。

人机在环的重要性

我们认为,人机在环组件为环境代理带来了三个关键优势

  1. 它降低了风险,使代理更容易投入生产
  2. 它模仿了人类的沟通方式,建立用户信任和采用
  3. 它增强了长期记忆和学习能力

人机在环降低了风险。如果代理在后台完全自主运行,那么它真的不能犯错。您必须非常信任代理,才能让它执行某些操作(例如更新数据库、向重要客户发送电子邮件等)。通过人机在环,您可以轻松地控制这些操作,并要求明确的人工批准。这样,您就可以确保不会发送错误的电子邮件。

人机在环模仿了人类的沟通方式。与他人合作的一个重要部分是与他们沟通。当您不确定时,向他们提问,让他们过目您的想法。如果我们有“同事”是代理,让他们以类似的模式进行沟通可以建立用户信任,从而促进采用。考虑一下像 Devin 这样的东西。他们选择用户与 Devin 交互的主要界面之一是 Slack。那是我们与人类开发人员互动的地方,为什么我们不应该以同样的方式与 AI 开发人员互动呢?沟通很重要。

人机在环增强了长期记忆和学习能力。我们坚信,AI 代理的关键部分是它们随着时间的推移学习并更好地与人类用户保持一致的能力。为了实现这种对齐,他们需要某种形式的用户反馈。人机在环组件提供了这种反馈。

代理收件箱

因此,我们讨论了代理何时应该与人类沟通(通知提问审查),但我们没有讨论他们应该如何沟通。

在试验环境代理时,我们最初从 Slack 开始。这主要的好处是,我们都已经在 Slack 中进行日常工作,因此这是一种有效的方式来获得我们的注意力,并与我们的人类 <> 人类沟通集中在一起。

Slack 的缺点是很容易丢失所有通知。如果您不回复一些通知,Slack 通知的积压就会增加。Slack 频道(或 DM)不是最容易导航的。它还在您如何与代理沟通方面具有限制性 - 您可以轻松地向他们发送消息,但其他任何事情都比较棘手。

我们转向了我们称为“代理收件箱”的东西。这是与环境代理交互的新用户体验。它模仿了电子邮件收件箱和客户支持票务系统的某种组合。它显示您和代理之间所有开放的沟通线路 - 使其易于跟踪任何未完成的操作。它是一个独立的 UI,可以轻松添加任何面板、按钮或其他 UI 功能,使您可以更轻松地捕获用户反馈。目前,项目仅按时间排序,但在未来,您将能够根据优先级对其进行排序。目前,此收件箱是单人模式,但在未来,您将能够看到哪些项目分配给您,哪些项目分配给其他人。

注意:代理收件箱的开源实现将于周四发布。

为什么 LangGraph 非常适合环境代理

在我们构建环境代理的过程中,我们确保 LangGraph 配备了支持这些类型代理的能力。LangGraph(和 LangGraph 平台)具有一些您可能不想自己构建的关键特性

内置 持久层LangGraph 由持久层支持,该持久层在每个操作(或图的节点)之间保存代理的状态。这允许代理基本上“暂停”并等待用户反馈。这对于启用人机在环交互模式以及短期对话记忆非常重要。

内置 人机在环支持LangGraph 本地支持人机在环模式。内置持久层是重要组成部分,但我们最近还添加了 “中断”,这是一种与最终用户通信的新内置方法。

内置 长期记忆LangGraph 附带内置长期记忆(本质上是一个命名空间、支持语义搜索的键值存储)。这使得代理在人机在环交互后可以轻松更新其“记忆”。

Cron 作业许多环境代理按计划运行以检查新事件。LangGraph 平台附带内置 cron 作业以支持此功能。

构建 AI 电子邮件助手

通过构建我们每天使用的环境代理,我们使 LangGraph 非常适合构建环境代理。其中主要的一个是 电子邮件助手。如果您在过去六个月内与我通信过,那么很有可能是 AI 代理起草了该电子邮件(如果我忽略了您 - 那肯定是 AI 代理的错)。

今天,我们发布了该电子邮件助手,既作为免费使用的托管电子邮件代理,也作为 开源项目。我们希望托管电子邮件代理能够让您轻松试用和体验环境代理,而开源版本可以作为这种新设计范例的参考实现。

托管电子邮件助手

OSS 电子邮件助手