AutoGen多代理AI编程框架

AutoGen 正在彻底改变我们对自主AI代理的看法。该项目由 Microsoft 开发,提供了一个框架,允许用户创建多个自主的 ChatGPT 类代理并让它们无缝协作。在本文中,我们将深入探讨 AutoGen 是什么、如何安装它以及如何利用它的功能。

1、AutoGen简介

AutoGen 是 Microsoft 的一个开创性项目,它使用户能够根据需要创建任意数量的自主 ChatGPT 类代理。这些代理可以协同工作以完成特定任务。该框架非常灵活,允许用户定义各种代理、为他们分配角色并协调他们的协作工作。

Doug Berger,Microsoft 技术研究员:AutoGen 使用多代理对话实现基于 LLM 的复杂工作流。(左)AutoGen 代理是可定制的,可以基于 LLM、工具、人类,甚至是它们的组合。(右上)代理可以通过交谈来解决任务。(右下)该框架支持许多其他复杂的对话模式。
为什么 AutoGen 会改变游戏规则?

许多项目都在手动集成多个代理来完成任务。但是,当多个 AI 代理协作时,输出往往会更出色。这可能是在编码、规划、创意写作或任何其他领域。一个代理完成工作,另一个代理检查工作,还有一个代理提供反馈,迭代循环确保最终输出是精致且高质量的。

因此,AutoGen 允许你执行许多项目已经手动执行的操作,即让多个代理协同完成一项任务。

几乎任何事情,如果你有一个由人类专家组成的团队一起工作,那么输出几乎总是比只有一个人处理问题更好。现在想象一下,如果我们可以让多个 ChatGPT 协同工作以解决问题——这就是 AutoGen!

AutoGen 可以集成到任何项目中,也可以替代 OpenAI 的 API。这意味着你可以轻松引入多代理支持,而无需更改现有的代码库。

AutoGen 的核心功能
  • LLM 工作流框架:AutoGen 简化了大型语言模型 (LLM) 工作流的编排、优化和自动化。
  • 可定制代理:它提供可定制代理,利用 GPT-4 等高级 LLM,通过与人类和工具集成来解决其局限性。
  • 自动聊天:代理可以进行自动对话,从而提高协作效率。
  • 与其他 LLM 集成:虽然它可以与 OpenAI 的 API 无缝协作,但 AutoGen 可以将任何大型语言模型与 API 集成。
来自 Microsoft Docs:

使用 AutoGen,构建复杂的多代理对话系统归结为:

  • 定义一组具有专门功能和角色的代理。
  • 定义代理之间的交互行为,即当代理收到来自另一个代理的消息时要回复什么。

AutoGen 创建多代理对话系统的方法通过允许组建由 AI 代理组成的虚拟团队(每个代理都体现了专门的角色和功能)彻底改变了企业内的运营和项目管理结构。通过不仅定义每个代理的独特功能(例如工程专业知识、项目协调或质量保证),还编写它们之间潜在的交互和协作响应脚本,公司可以建立复杂的数字劳动力。该系统可提高效率、精确度和全天候生产力,因为这些 AI 代理可以协同工作,反映部门间合作而不受人为限制的限制。

AutoGen 在行动

此图强调了 AutoGen 系统的创新设计,该系统采用两个不同的 AI 代理来增强用户交互。用户代理是用户的数字体现,具有自动执行决策和任务的能力,从而简化流程。然而,其独特的设计优势在于其灵活性;它可以自主执行运行代码等任务,也可以让实际的人类用户参与反馈或干预,确保人类在需要时保持参与。

另一方面,助理代理是计算和解决问题智能的主要来源。它生成输出(例如所提供场景中的代码),并将其传达给用户代理。本质上,助理代理是这种关系中的“执行者”,承担任务并提供解决方案。这两个代理的协作性质强调了这种设计的价值:它通过自动化优化效率,同时仍保留了人类洞察力和监督能力。这种双代理系统确保快速完成任务,同时保持人类判断的真实性和细微差别,在自动化和人性化之间取得平衡。您可以拥有多个代理和多个用户代理代理来模拟几乎任何业务流程。

2、AutoGen 入门

让我们拉取 Microsoft 的示例。在这个先进的计算环境中,所呈现的用例通过两个不同的 AI 代理的协作引入了一种高级的代码解释和执行方法:助理代理和用户代理代理。助理代理以 LLM(语言模型)的强大功能为基础,擅长根据特定任务编写 Python 代码,简化编码过程并体现出功能显著增强的代码解释器。该系统的与众不同之处在于其迭代解决问题的能力。如果编写的代码遇到错误,在多代理框架下,助理代理具有自我纠正和迭代改进其输出的灵活性。

同时,用户代理彻底改变了编码过程的执行方面。传统上,用户会在 Visual Studio Code 等平台中手动复制和运行代码,这可能很繁琐。在这里,用户代理充当人类用户的替身,自主执行提供的代码并可能大大缩短周期时间。其内置的灵活性允许根据用户指定的设置自动执行或在运行代码之前寻求人工批准的选项。此外,两个代理之间的持续通信循环可确保实时反馈、错误检测和及时纠正。总之,这种双代理系统有望提高效率、减少人工干预并提供更流畅的编码体验,真正为编码人员和开发人员打造下一代解决方案。

2.1 安装Autogen

首先,你需要安装 Py AutoGen 库:

!pip install pyautogen

安装后,需要设置你的 API 端点。在此阶段,将 AutoGen 链接到你首选的大型语言模型。该过程涉及导入 AutoGen 库并设置你的 LLM 配置。

import autogen

config_list = autogen.config_list_from_json(
    "OAI_CONFIG_LIST",
    filter_dict={
        "model": ["gpt-4", "gpt-4-0314", "gpt4", "gpt-4-32k", "gpt-4-32k-0314", "gpt-4-32k-v0314"],
    },
)

接下来,你需要将 Open AI 或 Azure Open AI Keys 添加到框架中:

config_list = [
    {
        'model': 'gpt-4',
        'api_key': '<your OpenAI API key here>',
    },
    {
        'model': 'gpt-4',
        'api_key': '<your Azure OpenAI API key here>',
        'api_base': '<your Azure OpenAI API base here>',
        'api_type': 'azure',
        'api_version': '2023-06-01-preview',
    },
    {
        'model': 'gpt-4-32k',
        'api_key': '<your Azure OpenAI API key here>',
        'api_base': '<your Azure OpenAI API base here>',
        'api_type': 'azure',
        'api_version': '2023-06-01-preview',
    },
]

设置好环境后,你就可以探索 AutoGen 的功能了。首先定义你的代理及其角色。例如,你可以创建一个负责编码任务的“工程师”代理、一个负责监督的“项目经理”代理和一个负责审查输出的“质量保证”代理。

2.2 任务执行和调试

AutoGen 在自动任务解决、代码生成、执行和调试方面表现出色。你可以通过提示代理执行特定操作(如编写和执行代码)来启动任务。如果代码遇到错误,AutoGen 将进入调试阶段,提供解决方案并确保任务继续完成。

# create an AssistantAgent named "assistant"
assistant = autogen.AssistantAgent(
    name="assistant",
    llm_config={
        "seed": 42,  # seed for caching and reproducibility
        "config_list": config_list,  # a list of OpenAI API configurations
        "temperature": 0,  # temperature for sampling
    },  # configuration for autogen's enhanced inference API which is compatible with OpenAI API
)
# create a UserProxyAgent instance named "user_proxy"
user_proxy = autogen.UserProxyAgent(
    name="user_proxy",
    human_input_mode="NEVER",
    max_consecutive_auto_reply=10,
    is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"),
    code_execution_config={
        "work_dir": "coding",
        "use_docker": False,  # set to True or image name like "python:3" to use docker
    },
)
# the assistant receives a message from the user_proxy, which contains the task description
user_proxy.initiate_chat(
    assistant,
    message="""What date is today? Do a Bivariate Analysis of Google Stock since the beginning of the year""",
)

上面代码解释如下:

首先创建助手(assistant)代理:

  • 脚本首先创建一个名为“assistant”的 AssistantAgent 实例。此代理旨在与查询或任务进行交互并做出响应,就像人类助手一样。
  • llm_config 参数包含助手语言模型的配置,确保文本生成期间的特定行为。例如,它设置一个“种子”以获得一致的输出,使用可能用于各种响应样式或内容限制的配置列表 (config_list),以及确定助手响应的随机性或创造性的“温度”设置(设置为 0 表示确定性或创造性较低的响应)。

然后设置用户(user)代理:

  • 然后,脚本设置一个名为“user_proxy”的 UserProxyAgent。此代理充当人类用户的替身,根据预定义的逻辑或数据自动执行用户输入,而无需实际的实时人机交互(由 human_input_mode="NEVER" 表示)。
  • max_consecutive_auto_reply 可能是一种保护措施,可确保自动对话不会陷入代理之间的无限循环回复。
  • is_termination_msg 函数是一种智能终止检查。当消息内容以“TERMINATE”结尾时,对话将停止,允许外部控件在需要时结束对话。
  • code_execution_config 表明此代理可以执行代码(根据上下文,可能是 Python)。它配置为在特定目录中工作,并且可以选择在 Docker 容器内执行代码以增加安全性或环境一致性(尽管在此代码段中设置为不使用 Docker)。

接下来启动任务:

  • user_proxy 通过 initial_chat 方法与助手启动对话。它发送一条消息询问两个问题:一个关于当前日期,另一个要求对今年年初以来的 Google 股票进行双变量分析。
  • 此启动模拟用户要求助手执行任务。助手将解释此消息并执行任务,就像它们是由真实用户请求的一样。

本质上,此脚本创建了一个自动化环境,其中“用户”(或用户代理)可以要求“助手”执行复杂的任务(如股票分析),而无需人工干预。它是模拟的自动对话系统的一部分,其中各种代理可以处理任务、提出问题或提供信息,就像与人类互动一样。

2.3 分析运行的输出

执行后,推理链如下:

哎呀!它生成的代码失败了(它知道这一点,因为 AutoGen 尝试运行代码!):

它分析来自代码解释器的错误并自动建议修复并再次测试(它将继续此循环,直到问题得到解决或尝试次数或时间用尽!):

现在你有了干净的代码!

由于框架内置了缓存机制,你可以继续分析:

# followup of the previous question
user_proxy.send(
    recipient=assistant,
    message="""Plot a chart of this and save to google_analysis.png.""",
)

它一次就搞定了代码!让我们看看它创建了什么:

from IPython.display import Image

Image(filename='/content/coding/google_analysis.png')

2.4 创建和使用配方

AutoGen 的突出功能之一是它能够从序列中学习并创建可重复使用的“配方”。这些配方是分步指南,您的代理可以将其用于未来类似的任务,从而提高效率和一致性。

# Command to create a recipe after a sequence of steps
assistant.create_recipe(sequence_of_steps)

3、结束语

AutoGen 正在重新定义 AI 的可能性。它能够创建能够学习、适应和协作的多智能体系统,这意味着我们只是触及了其潜在应用的表面。无论您从事软件开发、研究、创意写作还是数据分析,AutoGen 都可以提高您的工作效率和创造力。

随着我们继续探索这个框架的功能,想想它可以为各个领域的复杂问题提供的解决方案是令人兴奋的。AI 的未来就在这里,它具有自主性、自适应性和极高的智能。


原文链接:Step by Step AutoGen by Microsoft: The Future of Programming using Autonomous GPT Like Agents

汇智网翻译整理,转载请标明出处