AutoGen横空出世,硬刚LangChain

AutoGen 是一个框架,支持使用多个代理来开发 LLM 应用程序,这些代理可以相互对话来解决任务。AutoGen 代理是可定制的、可对话的,并且无缝地允许人类参与。他们可以采用LLM(Large Language Model)、人力输入和工具组合的各种模式运作。

在这里插入图片描述

主要特点

  • AutoGen 可以轻松构建基于多代理对话的下一代 LLM 应用程序。它简化了复杂的大数据模型的工作流程的编排、自动化和优化。它最大限度地提高了 LLM 模型的性能并克服了它们的弱点。
  • 它支持复杂工作流程的多种对话模式。借助可定制和可对话的代理,开发人员可以使用 AutoGen 构建各种涉及对话自主性、代理数量和代理对话拓扑的对话模式。
  • 它提供了一系列具有不同复杂性的工作系统。这些系统涵盖各种领域和复杂性的广泛应用。他们演示了 AutoGen 如何轻松支持不同的对话模式。
  • AutoGen 提供增强的 LLM 推理。它提供了简单的性能调整,以及 API 统一和缓存等实用程序,以及错误处理、多配置推理、上下文编程等高级使用模式。
    AutoGen由微软、宾夕法尼亚州立大学和华盛顿大学的合作研究提供支持。

快速入门

从 pip 安装 pip install pyautogen:在安装中找到更多选项。对于代码执行,我们强烈建议安装 python docker 包,并使用 docker。

多代理对话框架

Autogen 通过通用的多代理对话框架支持下一代 LLM 应用程序。它提供可定制和可对话的代理,集成了法学硕士、工具和人员。通过在多个有能力的代理之间自动进行聊天,人们可以轻松地让他们自主地或根据人工反馈集体执行任务,包括需要通过代码使用工具的任务。例如,_

from autogen import AssistantAgent, UserProxyAgent, config_list_from_json

# Load LLM inference endpoints from an env variable or a file
# See https://microsoft.github.io/autogen/docs/FAQ#set-your-api-endpoints
# and OAI_CONFIG_LIST_sample.json
config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST")
assistant = AssistantAgent("assistant", llm_config={"config_list": config_list})
user_proxy = UserProxyAgent("user_proxy", code_execution_config={"work_dir": "coding"})
user_proxy.initiate_chat(assistant, message="Plot a chart of NVDA and TESLA stock price change YTD.")
# This initiates an automated chat between the two agents to solve the task

下图显示了 AutoGen 的示例对话流程。
在这里插入图片描述

增强的大模型推理

Autogen 还有助于最大限度地提高 ChatGPT 和 GPT-4 等昂贵的法学硕士的效用。它提供增强的 LLM 推理以及强大的功能,如调整、缓存、错误处理、模板。例如,您可以通过 LLM 使用您自己的调整数据、成功指标和预算来优化生成。

# perform tuning
config, analysis = autogen.Completion.tune(
    data=tune_data,
    metric="success",
    mode="max",
    eval_func=eval_func,
    inference_budget=0.05,
    optimization_budget=3,
    num_samples=-1,
)
# perform inference for a test instance
response = autogen.Completion.create(context=test_instance, **config)

多代理对话框架

AutoGen 提供了一个统一的多代理对话框架作为使用基础模型的高级抽象。它具有功能强大、可定制且可对话的代理,通过自动代理聊天将LLM、工具和人员集成在一起。通过在多个有能力的代理之间自动进行聊天,人们可以轻松地让他们自主地或根据人工反馈集体执行任务,包括需要通过代码使用工具的任务。

该框架简化了复杂的LLMs工作流程的编排、自动化和优化。它最大限度地提高了 LLM 模型的性能并克服了它们的弱点。它能够以最少的努力构建基于多代理对话的下一代法学硕士应用程序。

代理人

AutoGen 抽象并实现了可对话代理,旨在通过代理间对话来解决任务。具体来说,AutoGen 中的代理具有以下显着特点:

  • 可对话:AutoGen 中的代理是可对话的,这意味着任何代理都可以从其他代理发送和接收消息以发起或继续对话

  • 可定制:AutoGen 中的代理可以定制以集成法学硕士、人员、工具或它们的组合。

下图显示了 AutoGen 中的内置代理。 代理聊天示例

在这里插入图片描述

我们为代理设计了一个通用ConversableAgent类,它们能够通过交换消息来相互对话以共同完成任务。代理可以与其他代理进行通信并执行操作。不同的代理在收到消息后执行的操作可能有所不同。两个代表性的子类是AssistantAgent和UserProxyAgent。

AssistantAgent被设计为充当人工智能助手,默认使用LLMs,但不需要人工输入或代码执行。它可以编写 Python 代码(在 Python 编码块中)供用户在收到消息(通常是需要解决的任务的描述)时执行。在底层,Python 代码是由 LLM(例如 GPT-4)编写的。它还可以接收执行结果并建议更正或错误修复。可以通过传递新的系统消息来更改其行为。LLM推理配置可以通过 进行配置llm_config。

从概念上讲,UserProxyAgent是人类的代理,默认情况下在每次交互时征求人类输入作为代理的回复,并且还具有执行代码和调用函数的能力。当它UserProxyAgent检测到接收到的消息中的可执行代码块并且没有提供人类用户输入时,会自动触发代码执行。可以通过将参数设置为 False 来禁用代码执行code_execution_config。默认情况下禁用基于 LLM 的响应。可以通过设置与推理llm_config配置对应的字典来启用它。当设置为字典时,可以在不执行代码时使用LLM生成回复。llm_configUserProxyAgent

自动回复功能ConversableAgent允许更自主的多代理通信,同时保留人工干预的可能性。人们还可以通过使用该方法注册回复函数来轻松扩展它register_reply()。

在以下代码中,我们创建一个AssistantAgent名为“assistant”作为助手,并UserProxyAgent创建一个名为“user_proxy”作为人类用户的代理。稍后我们将使用这两个代理来解决任务。

from autogen import AssistantAgent, UserProxyAgent

# create an AssistantAgent instance named "assistant"
assistant = AssistantAgent(name="assistant")

# create a UserProxyAgent instance named "user_proxy"
user_proxy = UserProxyAgent(name="user_proxy")

多代理对话

一个基本的两个代理对话示例
一旦正确构建了参与代理,就可以通过初始化步骤启动多代理会话会话,如以下代码所示:

# the assistant receives a message from the user, which contains the task description
user_proxy.initiate_chat(
    assistant,
    message="""What date is today? Which big tech stock has the largest year-to-date gain this year? How much is the gain?""",
)

初始化步骤完成后,对话可以自动进行。下面是 user_proxy 和助手如何协作自动解决上述任务的直观说明: 代理聊天示例
在这里插入图片描述

  1. 助手(Assistant)从 user_proxy 接收一条消息,其中包含任务描述。
  2. 助手尝试编写 Python 代码来解决任务,并将响应发送到 user_proxy。
  3. 一旦 user_proxy 收到助手的响应,它会尝试通过请求人工输入或准备自动生成的回复来进行回复。如果未提供人工输入,则 user_proxy 会执行代码并将结果用作自动回复。
  4. 然后,助手为 user_proxy 生成进一步的响应。然后 user_proxy 可以决定是否终止会话。如果不是,则重复步骤 3 和 4。

支持多种对话模式

具有不同自主程度和人类参与模式
一方面,在初始化步骤之后可以实现完全自主的对话。另一方面,AutoGen 可用于通过配置人类参与级别和模式(例如,设置 human_input_modeALWAYS )来实现人类参与到问题解决的途径中,因为在许多应用中预期和/或需要人类参与。

静态和动态对话

通过采用编程语言和自然语言的对话驱动控制,AutoGen 本质上允许动态对话。动态会话允许代理拓扑根据不同输入问题实例下的实际会话流程而改变,而静态会话的流程始终遵循预定义的拓扑。动态对话模式在交互模式无法提前预定的复杂应用程序中非常有用。AutoGen 提供了两种实现动态对话的通用方法:

  • 已注册自动回复。通过可插入的自动回复功能,人们可以根据当前消息的内容和上下文选择与其他代理进行对话。在此代码示例中可以找到演示此类动态对话的工作系统,演示了动态群聊。在系统中,我们在群聊管理器中注册了自动回复功能,让LLM决定群聊设置中下一个发言者是谁。

  • 基于LLM的函数调用。在这种方法中,LLM 根据每个推理调用中的对话状态来决定是否调用特定函数。通过在被调用函数中向其他代理发送消息,LLM 可以驱动动态多代理对话。展示这种类型的动态对话的工作系统可以在多用户数学问题解决场景中找到,其中学生助理将使用函数调用自动求助于专家。

使用AutoGen

下图显示了使用 AutoGen 构建的应用程序的六个示例。 应用领域
在这里插入图片描述

1. 代码生成、执行和调试

通过代码生成、执行和调试自动解决任务
自动代码生成、执行、调试和人工反馈
使用检索增强代理自动生成代码和问答

2. 多智能体协作(>3 智能体)

  • 使用 GPT-4 + 多个人类用户自动解决任务
  • 通过群聊自动解决任务(有 3 个群组成员代理和 1 个经理代理)
  • 通过群聊实现自动数据可视化(包含 3 个群组成员代理和 1 个经理代理)
  • 通过群聊自动解决复杂任务(有 6 个组成员代理和 1 个经理代理)
  • 使用编码和规划代理自动解决任务

3. 应用

  • GPT-4 代理自动玩国际象棋游戏和闲聊
  • 从新数据中自动持续学习
  • OptiGuide - 用于供应链优化的大型语言模型。

4. 工具使用

  • Web 搜索:解决需要 Web 信息的任务
  • 使用提供的工具作为函数
  • 使用 Langchain 提供的工具作为函数来解决任务
  • RAG:带有检索增强生成的群组聊天(具有 5 个群组成员代理和 1 个经理代理)
  • OpenAI 实用函数深入指南

5. 代理教学

  • 通过自动聊天教授代理新技能并重复使用
  • 向代理传授编码以外的新事实、用户偏好和技能

信息来源:

AutoGen Getting Started
AutoGen Multi-agent Conversation Framework

其他信息

个人目前有w_x的账号, yqpan1991 , 关于最新的AI咨询以及AI框架相关的信息, 欢迎大家关注和交流. 加账号时, 请备注, 来自csdn

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Autogen multiagent是一种自动生成多智能体系统的方法。 在传统的多智能体系统中,需要手动设计和编写每个智能体的行为规则和决策策略。这样做的问题是,当系统需要扩展或修改时,需要手动调整每个智能体的规则和策略,非常耗时和困难。而autogen multiagent方法则通过自动生成智能体系统的规则和策略,极大地简化了系统的设计和维护过程。 具体实现autogen multiagent的方法有多种。一种常用的方法是基于机器学习和优化算法。系统首先采用机器学习算法对智能体的行为规则进行训练,让系统能够从大量的实例中学习合适的决策策略。然后,使用优化算法对系统中的智能体进行优化,并自动调整它们的规则和策略,以实现更高的性能和效率。 另一种实现autogen multiagent的方法是基于进化算法。系统首先通过随机生成一组智能体的规则和策略作为初始种群,然后使用进化算法对这些智能体进行迭代优化。在每一代中,系统通过评估智能体的性能选择出适应度高的个体,并通过交叉和变异等遗传操作生成新的智能体。通过不断迭代优化,系统可以自动生成合适的智能体规则和策略。 总的来说,autogen multiagent实现是一种通过机器学习、优化算法或进化算法等方法自动生成多智能体系统的规则和策略的方法。它可以大大简化多智能体系统的设计和维护过程,并且能够在系统性能和效率方面取得更好的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI老潘信息差

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值