环境型代理(Ambient Agents)的新探索
如今,很多 AI 应用程序都采用了常见的聊天模式("chat" UX)。尽管这种模式实现起来比较简单,但它会带来额外的交互成本,限制了人类通过 AI 扩展自身能力的潜力,也未能充分利用大型语言模型(LLMs)的优势。
在过去的六个月中,我们在 LangChain 一直在探索一种新方式:能够响应环境信号的代理(Ambient Agents)。这些代理只会在发现重要机会或需要用户反馈时才与用户互动,避免了频繁打断用户。此外,用户不再需要进入新的聊天界面与代理互动,这帮助用户专注于关键任务。
为支持这些新的交互模式,我们构建了 LangGraph,简化了环境型代理的实现。今天,我们发布了首个参考实现:一个展示关键环境型代理模式的 电子邮件助手。接下来几天,我们还会发布更多示例和工具,帮助开发者轻松构建属于自己的环境型工作流程。
什么是环境型代理?
在 ChatGPT 或其他聊天机器人中,用户需要主动发起对话,代理才能开始执行任务。这种代理依赖于人类的输入来启动工作。
对于一些使用场景来说,这种方式有效,但它也存在局限:每当需要代理帮忙时,用户都必须进入聊天界面并发送消息,这增加了操作的繁琐性。
此外,聊天代理通常一次只能处理一个对话,这限制了代理的多任务处理能力,也让用户难以真正扩展自己的能力。
为了解决这些问题,我们提出了一种新的用户体验(UX)模式,它应具备以下两个关键特征:
- 它不应仅仅依赖人类消息触发
- 它应该能够同时处理多个任务
具备这些特征的代理便是 环境型代理。
💡 环境型代理会监听一系列事件流,并根据这些事件采取行动,能够同时处理多个任务。
不过,我们并不认为环境型代理应该完全自主。事实上,我们认为它们的核心在于谨慎处理 何时 和 如何
人类在循环中:适时互动
“人类在循环中”意味着代理在关键时刻与人类互动。这里我们会先讨论 何时 与人类互动,随后再讨论 如何
我们发现,环境型代理与人类互动时通常会有三种模式:通知、询问和审查。
- 通知:代理通知用户某个事件的重要性,但不执行具体操作。这在一些代理无法自行处理但需要引起用户注意的场景中尤为有用。以电子邮件助手为例,代理可能会标记出收件箱中的一个 Docusign 文档,虽然它不能自行签署,但它能提醒我需要处理该文档。
- 询问:代理向用户提问,以获取信息,进而解锁下一步操作。当代理需要更多信息才能完成任务时,它会直接向用户询问,而不是盲目推测。还是以电子邮件助手为例,代理可能会问我是否要参加某个会议。除非我明确告知代理我的会议偏好,否则代理不应自行决定这些信息。
- 审查:对代理即将执行的操作进行审核。当某些操作具有较高风险时,代理应该允许用户对其操作进行审查。人类用户可以批准操作、进行修改,或向代理提供改进建议。电子邮件助手中的审查任务可能就是邮件的发送,代理会先为我撰写邮件草稿,但最终邮件必须经过我批准或修改后才能发送。
人类在循环中的重要性
让人类在循环中参与互动,为环境型代理带来了三个关键优势:
- 降低风险,便于代理投入生产使用
- 模仿人类沟通方式,增强用户信任与采纳
- 支持长期记忆与学习
人类参与互动降低了风险。 如果代理完全自主运作,那么任何错误都将无法避免。在没有高信任度的情况下,您可能不会允许代理直接修改数据库或向重要客户发送电子邮件。而通过让人类参与,代理的操作可以得到人类的审查,避免了重大失误。
人类参与互动模仿了人类间的沟通方式。 与他人协作时,提问与信息分享是不可或缺的。当不确定如何操作时,代理也应该向用户提问并寻求指导。像 Devin 这样的产品设计就是基于此理念的,它们选择在 Slack 这样的聊天平台与用户互动,因为这与人类同事间的互动方式相似,能增强用户的信任与采纳。
人类参与互动支持代理的长期学习与记忆。 我们相信 AI 代理的重要功能之一就是能够随着时间的推移学习并与用户更加契合。而通过让人类提供反馈,代理可以逐渐提高任务执行的准确性。
代理收件箱:便捷互动新方式
我们刚才讨论了代理应该 何时 与人类互动(通知、询问、审查),但它们 如何
最初我们尝试了通过 Slack 进行互动,因为它方便用户在工作时同时处理代理任务。但 Slack 的缺点是容易遗漏通知,如果没能及时回复,消息就会堆积。因此,我们提出了“代理收件箱”的概念。
代理收件箱类似于电子邮件收件箱或客服工单系统,专为环境型代理设计。它可以显示所有未处理的代理任务,方便用户跟踪进展。这个收件箱是一个独立的用户界面 (UI),可以轻松集成面板、按钮等功能来捕捉用户反馈。目前任务是按时间排序的,未来可能会增加按优先级排序的功能。此外,未来还计划支持多人协作,显示哪些任务分配给了用户,哪些分配给了其他人。
img
注意:代理收件箱的开源实现将于本周四发布。
为什么 LangGraph 适合环境型代理
在构建环境型代理的过程中,我们确保 LangGraph 可以很好地支持这类代理。LangGraph 以及 LangGraph 平台 具备以下几个关键功能,能够避免您从零开始构建:
- 内置的持久化层。LangGraph 通过持久化层在代理每次操作(或图中的节点)之间保存状态。这意味着代理可以“暂停”操作,等待用户反馈,非常适合人类在循环中的交互模式和短期记忆需求。
- 内置的人类在循环中的支持。LangGraph 具备内置的支持,帮助实现代理与人类的互动模式。除了持久化层外,最近还添加了 "interrupt" 功能,用于更方便地与终端用户沟通。
- 内置的长期记忆功能:LangGraph 自带长期记忆功能,实际上是一个支持语义搜索的命名空间键值存储。这让代理在每次与用户交互后,能够轻松更新“记忆”。
- 内置的定时任务:许多环境型代理是根据时间计划运行的,以便检查新事件。LangGraph 平台自带定时任务功能,支持此类操作。
构建 AI 电子邮件助手
我们通过每天使用环境型代理,使 LangGraph 成为了构建此类代理的理想平台。其中一个主要的应用就是 电子邮件助手。如果你在过去六个月内给我发过邮件,很有可能是 AI 代理帮我撰写了回复(如果我忽略了你的邮件——那肯定是 AI 代理的错)。
今天我们正式发布该电子邮件助手,不仅作为一个免费试用的托管代理,还作为一个 开源项目。我们希望托管版本能够让用户轻松体验环境型代理,而开源版本则作为这一新设计范式的参考实现。
本文转载自 AI小智,作者: AI小智