What is an AI agent?

什么是 AI Agent?

推出一系列关于 AI Agent 的新思考,名为“In the Loop”。

4 分钟阅读

“什么是代理?”

我几乎每天都会被问到这个问题。在 LangChain,我们构建工具来帮助开发人员构建 LLM 应用程序,特别是那些充当推理引擎并与外部数据源和计算交互的应用程序。这包括通常被称为“代理”的系统。

似乎每个人对 AI 代理是什么都有略微不同的定义。我的定义可能比大多数人更技术化

💡
AI 代理是一个使用 LLM 来决定应用程序控制流的系统。

即便如此,我也承认我的定义并不完美。人们通常认为代理是先进的、自主的、类似人类的——但一个简单的系统,其中 LLM 在两条不同的路径之间进行路由呢?这符合我的技术定义,但不符合人们对代理应具备的能力的普遍看法。很难确切地定义什么是代理!

这就是为什么我非常喜欢 Andrew Ng 上周的 推文。在推文中,他建议“与其争论哪些工作应包含或排除在真正的 AI 代理之外,不如承认系统在不同程度上可以具备代理性。”就像自动驾驶汽车有不同级别的自主性一样,我们也可以将 AI 代理能力视为一个谱系。我非常赞同这一观点,并且我认为 Andrew 表达得很好。将来,当被问及什么是代理时,我将转而讨论“代理性”的含义。

什么是“代理性”?

去年我做了一个关于 LLM 系统的 TED 演讲,并使用了下面的幻灯片来讨论 LLM 应用程序中存在的不同级别的自主性。

一个系统越“代理”,LLM 就越能决定系统的行为方式。

使用 LLM 将输入路由到特定的下游工作流具有少量“代理”行为。这将落入上图中Router类别。

如果你使用多个 LLM 进行多个路由步骤呢?这将在RouterState Machine之间。

如果其中一个步骤是确定是继续还是完成——实际上是允许系统循环运行直到完成?这将落入State Machine

如果系统正在构建工具,记住这些工具,然后在后续步骤中使用它们?这与 Voyager 论文 的实现类似,并且具有极强的代理性,属于更高级的Autonomous Agent类别。

这些“代理性”的定义仍然相当技术化。我更喜欢“代理性”的技术定义,因为我认为它在设计和描述 LLM 系统时很有用。

为什么“代理性”是一个有用的概念?

与所有概念一样,值得问问我们为什么需要“代理性”这个概念。它有什么帮助?

了解你的系统的代理性程度可以在开发过程的各个方面指导你的决策——包括构建它、运行它、与它交互、评估它,甚至监控它。

你的系统越代理,编排框架的帮助就越大。如果你正在设计一个复杂的代理系统,拥有一个具有正确抽象来思考这些概念的框架可以实现更快的开发。该框架应为分支逻辑和循环提供一流的支持。

你的系统越代理,运行起来就越困难。它将越来越复杂,有些任务需要很长时间才能完成。这意味着你将希望将作业作为后台运行。这也意味着你需要持久化执行来处理中途发生的任何错误。

你的系统越代理,在运行时你越想与之交互。你将希望能够观察内部发生的情况,因为确切的步骤可能无法提前知晓。你将希望能够在特定时间点修改代理的状态或指令,以在它偏离预期路径时将其拉回正轨。

你的系统越代理,你就越需要一个为此类应用程序设计的评估框架。你将希望多次运行评估,因为随机性的复合量会增加。你将希望能够测试的不仅是最终输出,还有中间步骤,以测试代理的行为效率。

你的系统越代理,你就越需要一种新型的监控框架。你将希望能够深入了解代理所采取的所有步骤。你还将希望能够根据代理所采取的步骤查询运行。

理解并利用你系统中的代理能力谱系可以提高你开发过程的效率和鲁棒性。

代理性是新的

我经常思考的一件事是,在所有这些热潮中,真正新的是什么?我们是否需要为人们正在构建的 LLM 应用程序提供新的工具和新基础设施?还是 LLM 之前的通用工具和基础设施就足够了?

对我来说,你的应用程序越代理,拥有新的工具和基础设施就越关键。这正是促使我们构建 LangGraph(用于帮助构建、运行和与代理交互的代理编排器)和 LangSmith(LLM 应用的测试和可观测性平台)的原因。随着我们在代理性谱系上走得更远,整个支持性工具生态系统都需要被重新构想。

© . This site is unofficial and not affiliated with LangChain, Inc.