什么是智能体?[译]

什么是智能体?[译]

“In the Loop”是一个关于 AI 智能体的思考系列。

“什么是智能体?”

我几乎每天都会被问到这个问题。在LangChain,我们构建工具帮助开发者创建大语言模型(LLM)应用程序,特别是那些作为推理引擎并与外部数据和计算资源交互的系统。这些系统通常被称为“智能体”。

每个人似乎对智能体的定义都有些不同。我的定义可能比大多数人更加技术化:

💡智能体是一个使用大语言模型(LLM)来决定应用程序控制流的系统。

即便如此,我承认我的定义并不完美。人们通常认为智能体是高级的、自主的、类似人类的——但如果是一个简单的系统,LLM只是在两条不同路径之间进行路由选择呢?这符合我的技术定义,但与人们普遍对智能体应具备的能力认知不一致。要精确定义什么是智能体,确实非常困难!

因此,我非常喜欢Andrew Ng上周的推文。在推文中,他建议“与其争论什么应被归类为真正的智能体,不如承认系统具有不同程度的智能体特性(agentic)。”就像自动驾驶汽车有不同的自动化等级一样,我们也可以将智能体的能力视作一个光谱。我非常赞同这一观点,并且认为Andrew表达得非常到位。未来,当再有人问我什么是智能体时,我将转而讨论什么是“智能体特性”。

什么是智能体特性?

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

系统越依赖LLM来决定其行为方式,它就越具有“智能体特性”。

使用LLM将输入路由到特定的下游工作流中,表现出少许“智能体”行为。这会归类为上图中的Router(路由器)类别。

如果你使用多个LLM执行多个路由步骤呢?这会介于RouterState Machine(状态机)之间。

如果其中一个步骤是在决定是否继续或结束——实际上允许系统循环运行直到完成?那么这就会归类为State Machine

如果系统能够构建工具,记住它们,并在后续步骤中再次使用它们?这与Voyager论文所实现的功能类似,并且是非常具有智能体特性的,属于更高的Autonomous Agent(自主智能体)类别。

这些关于“智能体特性”的定义仍然相当技术化。我更倾向于这种技术性的定义,因为在设计和描述LLM系统时,这种定义非常实用。

为什么“智能体特性”是一个有用的概念?

正如所有概念一样,我们有必要思考,为什么我们需要“智能体特性”这个概念?它有什么帮助?

了解系统的智能体特性能够指导你在开发过程中做出决策——包括构建、运行、与之交互、评估,甚至是监控。

系统的智能体特性越强,编排框架的作用就越大。如果你正在设计一个复杂的智能体系统,拥有一个具备这些概念的抽象框架能够加速开发。这个框架应该支持一流的分支逻辑和循环控制。

系统的智能体特性越强,运行难度就越大。它会变得更加复杂,有些任务可能需要很长时间才能完成。这意味着你可能需要将任务设为后台运行。同时,也需要具备持久执行能力,以应对任务过程中出现的错误。

系统的智能体特性越强,你就越希望在系统运行时进行交互。你会希望能够观察系统内部正在发生的事情,因为具体步骤可能无法提前预知。你还需要在某个时间点调整智能体的状态或指令,以便当它偏离既定轨道时纠正回来。

系统的智能体特性越强,你就越需要为此类应用构建一个评估框架。由于随机性会逐步累积,因此你可能需要多次进行评估。你不仅需要测试最终输出,还需要评估中间步骤,检查智能体的行为效率。

系统的智能体特性越强,你就越需要一种全新的监控框架。你希望能够深入分析智能体执行的每一个步骤,还希望可以根据智能体执行的步骤来查询运行情况。

理解并运用系统的智能体能力光谱,能提升开发过程的效率与稳健性。