简介
- AutoGen 代理统一了不同的代理定义。
- 当讨论多个代理和单个代理时,有必要澄清我们是指界面还是架构。
我经常被问到两个常见的问题:
- 什么是代理?
- 多个代理和单个代理的优缺点是什么?
这篇博客收集了我在几次面试和最近的学习中的思考。
什么是代理?
有许多不同类型的代理定义。在构建 AutoGen 时,我正在寻找能够包含所有这些不同类型定义的最通用概念。为了做到这一点,我们真的需要思考所需的最小概念集。
在 AutoGen 中,我们将代理视为能够代表人类意图行动的实体。它们可以发送消息、接收消息,在采取行动后响应其他代理并与其他代理进行交互。我们认为这是代理需要具备的最小能力集。它们可以具有不同类型的后端来支持它们执行操作和生成回复。一些代理可以使用 AI 模型生成回复。其他一些代理可以使用函数来生成基于工具的回复,还有一些代理可以使用人类输入作为回复其他代理的方式。您还可以拥有混合这些不同类型后端的代理,或者拥有在多个代理之间进行内部对话的更复杂的代理。但在表面上,其他代理仍然将其视为单个实体进行通信。
根据这个定义,我们可以包含既可以解决简单任务的非常简单的代理,也可以由多个更简单的代理组成的代理。可以递归地构建更强大的代理。AutoGen 中的代理概念可以涵盖所有这些不同的复杂性。
多个代理和单个代理的优缺点是什么?
这个问题可以以各种方式提出。
为什么我应该使用多个代理而不是单个代理?
当我们没有一个强大的单个代理时,为什么要考虑多个代理?
多个代理是否增加了复杂性、延迟和成本?
什么时候应该使用多个代理而不是单个代理?
当我们使用“多个代理”和“单个代理”这两个词时,我认为至少有两个不同的维度需要考虑。
- 界面。这意味着从用户的角度来看,他们是在单个交互点与系统交互,还是明确地看到多个代理在工作并且需要与多个代理进行交互?
- 架构。在后端是否有多个代理在运行?
一个特定的系统可以具有单个代理界面和多个代理架构,但用户不需要知道这一点。