随着大型语言模型技术的迅猛发展,单一的AI代理已经不能满足客户快速增长的业务需求,特别是在工程化落地场景中。为了应对这一挑战,AutoGen应运而生,它引领着一种全新的方式,使多个AI代理能够协同工作,共同完成复杂的任务。今天,我们将深入探讨AutoGen的工作原理及其应用方式。
一、Autogen的概念和应用
Autogen是由Microsoft推出的框架,允许用户创建和管理多个自主代理,协同完成复杂任务。该框架非常灵活,用户可以根据需求定义不同代理及其角色,并使它们协同工作。这种多代理协作方式不仅提高了任务效率,还提升了结果质量,尤其在编程、规划和创意写作等领域。
Autogen可以最小化工作量,构建基于多代理对话的下一代LLM(大型语言模型)应用程序。它简化了复杂LLM工作流程的协调、自动化和优化,并显著提升模型性能,克服其弱点。Autogen支持多种复杂工作流程中的对话模式,通过可定制和可对话的代理,开发人员能够构建与对话自主性、代理数量和代理对话拓扑相关的各种对话模式。它提供了一系列工作系统,涵盖不同领域和复杂度,展示了Autogen如何轻松支持各种对话模式。
Autogen还提供增强型LLM推理,支持API统一和缓存等实用工具,以及高级使用模式如错误处理、多配置推理和上下文编程。
Autogen的代理是可定制和可对话的,能够整合LLM、工具和人类。通过自动化多个能力代理之间的交流,人们可以轻松让它们共同执行任务,包括需要通过编程工具进行的任务。
多代理对话使Autogen代理能够相互交流,共同完成任务,实现比单个LLM更复杂、更精密的应用。
Autogen允许对代理进行定制,以满足应用程序的特定需求,包括选择LLM、允许的人工输入类型以及使用的工具。
人类可以无缝参与Autogen,根据需要向代理提供输入和反馈,使其更加灵活和智能化。
二、Autogen内置代理
图1-AutoGen内置代理
AssistantAgent被设计成充当人工智能助手,默认使用LLMs(大型语言模型),无需人工输入或代码执行。当接收到任务描述消息时,它能够生成Python代码(在Python代码块中),例如通过GPT-4生成。此外,它还能够接收执行结果并提供修正或错误修复建议。通过传递新的系统消息,可以改变AssistantAgent的行为。LLM推理配置可以通过llm_config进行定制。
UserProxyAgent从概念上是人类的代理,通常情况下需要征求人类输入来作为回复。它具备执行代码和调用函数的能力。当UserProxyAgent检测到接收到的消息包含可执行代码块并且没有提供人类用户输入时,它会自动触发代码执行。通过设置code_execution_config参数为False,可以禁用代码执行功能。默认情况下,禁用基于LLM的响应,但可以通过设置llm_config字典来启用。当设置了llm_config字典时,UserProxyAgent可以在不执行代码的情况下使用LLM生成回复。
ConversableAgent允许多个代理之间更自主地进行通信,同时仍保留人工干预的可能性。通过注册回复函数的方式,可以轻松扩展其功能,例如通过register_reply()方法。
图3-AutoGen应用场景示例
三、Autogen应用场景
– 通过自动生成代码、执行和调试来自动解决任务;
– 自动进行代码生成、执行、调试,并获得人工反馈;
– 使用检索增强代理自动生成代码和回答问题。
2. 多智能体协作(超过3个智能体)
– 使用 GPT-4 和多个人类用户自动解决任务;
– 通过群聊实现任务自动化(包括3个群组成员代理和1个经理代理);
– 通过群聊实现数据可视化(包含3个群组成员代理和1个经理代理);
– 通过群聊自动处理复杂任务(包括6个组成员代理和1个经理代理);
– 使用编码和规划代理自动解决任务。
3. 应用
– GPT-4 代理自动进行国际象棋游戏和闲聊;
– 自动持续学习来自新数据;
– OptiGuide:用于供应链优化的大型语言模型。
4. 工具使用
– Web 搜索:解决需要获取Web信息的任务;
– 使用提供的工具作为函数;
– 使用 Langchain 提供的工具作为函数来解决任务;
– RAG:带有检索增强生成的群组聊天(包含5个群组成员代理和1个经理代理);
– OpenAI 实用函数深入指南。
5. 代理教学
– 通过自动对话教授代理新技能并进行重复使用;
– 向代理传授编码以外的新事实、用户偏好和技能。
6. 其他
– 代码解释器、问答系统、创意写作、翻译工具、研究工具。
四、AutoGen局限性
1. 有限的适用范围
AutoGen 针对特定任务设计,可能不如其他通用人工智能模型那样普适。
2. 复杂性
根据任务的不同,AutoGen 可能需要大量的设置和配置。
3. 依赖用户输入
AutoGen 需要用户输入来执行任务,若用户输入不清晰或不正确,其效果可能会受影响。
4. 稳定性一般
AutoGen 目前仍在开发中,可能不如其他成熟的LLM开发框架稳定和功能丰富。
5. 使用门槛较高
AutoGen 的配置和使用可能相对复杂,对于不熟悉LLM和基于代理系统的用户来说可能有一定挑战。
五、AutoGen与LangChain对比
AutoGen 和 LangChain 都是基于大型语言模型开发应用程序的框架,但它们之间存在关键差异。
AutoGen 是一个多代理框架,而 LangChain 是单代理框架。这意味着 AutoGen 允许开发者创建由多个代理组成、可以相互交互的应用程序,适用于需要多个代理进行复杂协作的场景。
AutoGen 更注重代码生成,而 LangChain 更专注于通用自然语言处理(NLP)任务。因此,AutoGen 更适合需要生成代码的应用,如代码完成和重构工具;而 LangChain 更适合需要执行通用NLP任务的应用,如问答和文本摘要。
AutoGen 是开源的,而 LangChain 则使用专有许可。这意味着 AutoGen 可以免费使用和修改,而 LangChain 则有商业使用的限制。
选择使用哪个框架应根据具体需求来决定。如果需要开发一个涉及多个代理复杂协作或需要生成代码的应用程序,那么 AutoGen 是一个不错的选择;如果需要开发一个执行通用NLP任务的应用程序,那么 LangChain 是更合适的选择。