写在前面:配置智能体最好有一个GPT-4的账号,大语言模型需要作为大脑,对大模型的能力要求很高,GPT-4的能力几乎是大模型中最强的。如果使用通义千问等大模型,建议使用参数量最多的版本。GPT-4 API可以使用国内中转,国内中转是即充即用,可以只充值10元。例如
GPT4.0 API KEY By OPENAI HK 中转ChatGPT
相关代码见文末
论文地址:https://arxiv.org/pdf/2308.08155https://arxiv.org/pdf/2308.08155
1.概述
AutoGen是一个开源框架,可以通过多智能体对话来构建大型语言模型(LLM)应用。这些智能体可以进行对话,以完成各种任务。这个框架的核心思想是使用自然语言和计算机代码来编程,实现灵活的对话模式,以适应不同的应用需求。AutoGen提供了一个通用框架,支持构建各种复杂性和能力的LLM应用,涵盖了从数学、编程、问答到运营研究、在线决策制定和娱乐等多个领域。 具体包括:
- 可定制和可对话的智能体: AutoGen采用通用的智能体设计,允许开发人员利用LLM、人类输入和工具的组合快速创建具有不同角色的智能体。每个智能体都可以进行对话,可以独立地或在需要时征求人类输入进行多轮对话。
- 对话编程: AutoGen引入了以对话为中心的编程范式,旨在简化和统一复杂的LLM应用工作流。这种方法允许开发者通过对话来编程智能体间的互动,无论是使用自然语言还是编程语言。
2.具体方法
在Auto中,每种智能体分别扮演不同的角色。
ConversableAgent 作为最高级别的智能体抽象,为所有具体智能体提供了基础的通信能力。这包括发送和接收信息的能力,以及基于这些信息进行内部状态更新的能力。所有从这个类派生的智能体都继承了这些基本功能(通用类)。
- 通用性和灵活性:作为一个通用类,ConversableAgent 提供了必要的模板和方法,使得开发者可以根据特定的应用需求快速开发出新的智能体。这降低了开发复杂多智能体系统的难度和工作量。
- 统一的对话接口:通过实现统一的对话接口,ConversableAgent 确保了所有派生的智能体能够以一致的方式处理和响应消息。这种设计提高了系统内各部分的协同工作效率,确保了信息在不同智能体间的有效传递。
UserProxyAgent 作为用户和系统之间的桥梁,直接处理用户的输入。它接收用户命令,如股票价格查询,并将这些请求转发给AssistantAgent进行处理。
AssistantAgent 在这个配置中充当的是一个执行者的角色,处理特定的任务,如执行代码或生成数据。如下图所示,这个智能体负责处理从UserProxyAgent传来的请求,执行相关的代码,并生成回应。
GroupChatManager 管理多智能体之间的通讯和对话流程。它确保信息能够在不同的智能体之间有效流通,同时协调哪个智能体应当在何时进行回复,以优化整个系统的对话管理。
(1)可对话智能体(Conversable Agents)
-
定义与通信: 在AutoGen中,可对话智能体能够发送和接收信息,这些信息能够启动或继续对话。智能体根据其配置(LLM、人类输入或工具)维护内部状态,能够基于收到的信息和预设行为模式来响应。
-
能力增强与智能体协同:
- 能力来源: 智能体的能力可以来源于LLMs、人类或工具,这使得它们可以展示复杂的行为,例如反馈适应、进度跟踪等。
- 协同作用: 智能体之间可以通过定制的行为和通信协议进行协作,例如,
AssistantAgent
可以生成解决方案,而UserProxyAgent
则负责收集用户输入并提供反馈。
-
智能体定制与合作: 每个智能体可以根据特定应用需求进行定制,如改变其后端类型或行为模式,以适应不同的工作流和任务需求。这种定制使得智能体可以高效地在多智能体系统中协同工作。
(2)对话编程(Conversation Programming)
-
计算与控制流:
- 计算: 智能体如何处理接收到的消息并计算回应,涉及到利用LLM增强的功能进行数据处理和决策制定。
- 控制流: 控制消息如何在智能体间流转,依赖于对话的状态和智能体的预设规则,确保信息在正确的时间被正确的智能体处理,以保持对话的连贯性和效率。
-
对话驱动的控制流实现: 控制流是对话驱动的,智能体的决策和行动依赖于对话的进展。这包括基于先前对话的内容和智能体的内部逻辑来决定发送哪些信息,以及何时发送。
-
自动回复与高级编程交互: 智能体使用自动回复机制来处理常见对话,同时可以在需要时激活复杂的编程逻辑,如调用API或执行算法,从而减少对人工干预的需要。
-
自然语言与编程语言的控制转换:
- 功能实现: AutoGen允许智能体在接收自然语言指令和执行编程语言指令之间平滑转换,这增强了系统的可访问性和灵活性。
- 应用场景: 例如,智能体可以解析自然语言生成的查询,转换为数据库查询语句,或者将复杂的编程任务描述转化为用户易于理解的自然语言反馈。
- 转换机制: 这种转换不仅使得非技术用户能够轻松与系统交互,还允许技术用户利用自然语言指令来快速原型化和测试复杂的编程操作。
3.Auto Gen的5个应用领域
AutoGen在不同领域中实现高性能多智能体应用的潜力,突出了其在提升LLM应用领域中的创新性和实用性。
A1: 数学问题解决
- 核心内容:AutoGen被用来构建一个能够自主解决数学问题的系统,该系统直接利用LLMs以及其他工具和方法,如Multi-Agent Debate和LangChain Reactor。
- 重要结论:评估结果表明,AutoGen在120个随机选取的高难度数学问题上的表现超过了其他方法,包括商业产品。此外,该系统还展示了在需要人类输入时如何有效地结合人类反馈,解决更具挑战性的问题。
A2: 检索增强的代码生成和问题回答
- 核心内容:AutoGen用于构建一个检索增强的代码生成和问题回答系统,该系统通过整合外部文档来强化回答和代码生成的能力。
- 重要结论:实验显示,通过引入交互式检索功能,即使在检索结果无法直接提供所需信息的情况下,LLM基础的助理也能提示用户更新上下文,从而提高问题解决的准确率和有效性。
A3: 文本世界中的决策制定
- 核心内容:在ALFWorld环境中,AutoGen被用来开发一个包含两个智能体的系统,这些智能体协同工作,解决交互式的在线决策任务。
- 重要结论:通过引入地面实况智能体来辅助决策过程,系统能够显著提高其在未见任务上的表现,减少因重复错误导致的问题,并优化整体的决策制定效率。
A4: 多智能体编程
- 核心内容:AutoGen用于构建一个多智能体编程系统,该系统能够解读优化问题并回答有关供应链决策的查询。
- 重要结论:通过使用AutoGen,核心工作流程的代码量大幅减少,用户体验显著提升。系统通过减少必要的用户交互次数,显著提高了编码任务的效率和安全性。
A5: 动态群聊
- 核心内容:AutoGen支持动态群聊通讯模式,参与者可以在没有固定通讯顺序的情况下共享上下文并进行对话。
- 重要结论:通过动态选择发言者并广播其消息,该模式在需要协作的场景中特别有效,提高了问题解决的成功率并减少了LLM调用。
A6: 对话式国际象棋
- 核心内容:利用AutoGen开发了一种对话式国际象棋游戏,其中包含了为玩家和棋盘信息验证提供支持的智能体。
- 重要结论:该系统提供了自然、灵活且具有吸引力的游戏动态,支持人工智能与人类玩家之间的无缝切换,增强了游戏的可玩性和完整性。通过移除棋盘智能体的消融研究,进一步证实了系统设计的灵活性和模块化。
代码地址:
链接:https://pan.baidu.com/s/1BQL5y2OBf2wQc18Jg75JKg?pwd=tbfx
提取码:tbfx