What is an AI agent?

什么是 AI 代理?

介绍一个关于 AI 代理的新系列思考,名为 “In the Loop”。

4 分钟阅读

“什么是代理?”

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

每个人似乎对 AI 代理的定义略有不同。我的定义可能比大多数人更技术性。

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

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

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

什么是自主性?

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

一个系统越“自主”,就越是 LLM 决定了系统如何运行。

使用 LLM 将输入路由到特定的下游工作流程具有少量的“自主”行为。这在上面的图表中将属于 Router 类别。

如果您使用多个 LLM 来执行多个路由步骤?这将介于 RouterState Machine 之间。

如果其中一个步骤是确定是否继续或完成 - 有效地允许系统循环运行直到完成?那将属于 State Machine

如果系统正在构建工具,记住这些工具,然后在未来的步骤中使用这些工具?这类似于 Voyager 论文 中实现的内容,并且非常自主,属于更高的 Autonomous Agent 类别。

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

为什么“自主性”是一个有用的概念?

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

了解您的系统有多自主可以指导您在开发过程中的决策——包括构建、运行、交互、评估甚至监控。

您的系统越自主,编排框架就越有帮助。如果您正在设计一个复杂的自主系统,那么拥有一个具有正确抽象概念的框架可以加快开发速度。这个框架应该对分支逻辑和循环有一流的支持。

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

您的系统越自主,您就越希望在它运行时与之交互。您会希望能够观察内部发生的事情,因为事先可能不知道采取的确切步骤。您会希望能够随时修改代理的状态或指令,以便在它偏离预定路径时将其拉回正轨。

您的系统越自主,您就越需要一个为这类应用程序构建的评估框架。您会希望多次运行评估,因为存在累积的随机性。您不仅需要测试最终输出,还需要测试中间步骤,以测试代理的运行效率。

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

理解和利用系统中自主能力的频谱可以提高开发过程的效率和稳健性。

自主性是新的

我经常思考的一件事是,在这股热潮中,真正新的东西是什么。对于人们正在构建的 LLM 应用程序,我们需要新的工具和新的基础设施吗?或者,来自 LLM 时代之前的通用工具和基础设施就足够了吗?

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