AutoGen简介

AutoGen 是一个框架,它通过多个可以相互对话的代理实现 LLM(Large Language Model)应用的开发。AutoGen 代理是可定制、可对话的,并且可以无缝地允许人类参与。它们可以以使用 LLM、人类输入和工具的各种模式运行。

AutoGen概览

  • AutoGen 通过 多代理对话 实现了下一代 LLM 应用的构建,减少了工作量。它简化了复杂 LLM 工作流的编排、自动化和优化。它最大程度地提高了 LLM 模型的性能,并克服了它们的弱点。
  • 它支持多样化的对话模式用于复杂的工作流程。通过可定制和可对话的代理,开发人员可以使用 AutoGen 构建涵盖对话自主性、代理数量和代理对话拓扑的各种对话模式。
  • 它提供了一系列具有不同复杂性的工作系统。这些系统涵盖了各种应用领域的广泛应用和复杂性。这表明 AutoGen 如何轻松支持多样化的对话模式。
  • AutoGen 提供了增强的 LLM 推断。它提供了诸如 API 统一化、缓存和高级用法模式(如错误处理、多配置推断、上下文编程等)等实用程序。

AutoGen 基于微软、宾州州立大学和华盛顿大学的合作研究

路线图

要了解我们正在进行的工作以及计划进行的工作,请查看我们的路线图问题

快速开始

开始玩耍的最简单方法是:

  1. 单击以下链接使用 GitHub Codespace

    Open in GitHub Codespaces

  2. 将 OAI_CONFIG_LIST_sample 复制到 ./notebook 文件夹中,命名为 OAI_CONFIG_LIST,并设置正确的配置。
  3. 开始使用笔记本!

注意: OAI_CONFIG_LIST_sample 将 GPT-4 列为默认模型,因为这代表了我们当前的建议,并且已知与 AutoGen 配合良好。如果您使用的模型不是 GPT-4,您可能需要修改各种系统提示(特别是如果使用像 GPT-3.5-turbo 这样的较弱模型)。此外,如果使用的模型不是由 OpenAI 或 Azure 托管的模型,则可能会带来与对齐和安全性相关的额外风险。如果更新此默认设置,请谨慎操作。

安装

选项 1. 在 Docker 中安装和运行 AutoGen

详细说明请参见用户这里,以及开发人员这里

选项 2. 本地安装 AutoGen

AutoGen 需要 Python 版本 >= 3.8, < 3.13。可以通过 pip 安装:

pip install pyautogen

安装了最小依赖项,没有额外选项。您可以根据需要安装其他功能的额外选项。

有关更多选项,请参见安装文档

多代理对话框架

AutoGen 使用通用的多代理对话框架实现了下一代 LLM 应用。它提供了可定制和可对话的代理,这些代理集成了 LLM、工具和人类。 通过在多个能力强大的代理之间自动进行聊天,人们可以轻松地使它们共同完成任务,无论是自主还是通过人类反馈,包括需要使用代码通过工具完成的任务。

此用例的功能包括:

  • **多代

理对话**:AutoGen 代理可以相互通信以解决任务。这使得可以开发比单个 LLM 更复杂和复杂的应用程序。

  • 定制化:AutoGen 代理可以根据应用程序的特定需求进行定制。这包括选择要使用的 LLM、允许的人类输入类型以及要使用的工具。
  • 人类参与:AutoGen 可以无缝地允许人类参与。这意味着人类可以根据需要向代理提供输入和反馈。

例如,

from autogen import AssistantAgent, UserProxyAgent, config_list_from_json
# 从环境变量或文件加载 LLM 推断端点
# 参见 https://microsoft.github.io/autogen/docs/FAQ#set-your-api-endpoints
# 和 OAI_CONFIG_LIST_sample
config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST")
# 您也可以直接将 config_list 设置为列表,例如,config_list = [{'model': 'gpt-4', 'api_key': '<your OpenAI API key here>'},]
assistant = AssistantAgent("assistant", llm_config={"config_list": config_list})
user_proxy = UserProxyAgent("user_proxy", code_execution_config={"work_dir": "coding", "use_docker": False}) # 重要提示:建议设置为 True 以在 Docker 中运行代码
user_proxy.initiate_chat(assistant, message="Plot a chart of NVDA and TESLA stock price change YTD.")
# 这将在两个代理之间启动自动对话以解决任务

此示例可以通过以下方式运行:

python test/twoagent.py

在克隆仓库后。 下图显示了一个使用 AutoGen 的示例对话流程。 Agent Chat Example

另外,这里的示例代码允许用户以 ChatGPT 风格与 AutoGen 代理进行交互。 请找到更多代码示例以获取此功能。

增强的 LLM 推断

AutoGen 还有助于最大限度地利用诸如 ChatGPT 和 GPT-4 等昂贵的 LLM。它提供了增强的 LLM 推断,具有诸如缓存、错误处理、多配置推断和模板等功能。

文档

您可以在这里找到有关 AutoGen 的详细文档。

此外,您还可以找到:

相关论文

AutoGen

@inproceedings{wu2023autogen,
      title={AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation Framework},
      author={Qingyun Wu and Gagan Bansal and Jieyu Zhang and Yiran Wu and Beibin Li and Erkang Zhu and Li Jiang and Xiaoyun Zhang and Shaokun Zhang and Jiale Liu and Ahmed Hassan Awadallah and Ryen W White and Doug Burger and Chi Wang},
      year={2023},
      eprint={2308.08155},
      archivePrefix={arXiv},
      primaryClass={cs.AI}
}

EcoOptiGen

@inproceedings{wang2023EcoOptiGen,
    title={Cost-Effective Hyperparameter Optimization for Large Language Model Generation Inference},
    author={Chi Wang and Susan Xueqing Liu and Ahmed H. Awadallah},
    year={2023},
    booktitle={AutoML'23},
}

MathChat

@inproceedings{wu2023empirical,
    title={An Empirical Study on Challenging Math Problem Solving with GPT-4},
    author={Yiran Wu and Feiran Jia and Shaokun Zhang and Hangyu Li and Erkang Zhu and Yue Wang and Yin Tat Lee and Richard Peng and Qingyun Wu and Chi Wang},
    year={2023},
    booktitle={ArXiv preprint arXiv:2306.01337},
}

AgentOptimizer

@article{zhang2024training,
  title={Training Language Model Agents without Modifying Language Models},
  author={Zhang, Shaokun and Zhang, Jieyu and Liu, Jiale and Song, Linxin and Wang, Chi and Krishna, Ranjay and Wu, Qingyun},
  journal={ICML'24},
  year={2024}
}

贡献

此项目欢迎贡献和建议。大多数贡献都要求您同意签署贡献者许可协议(CLA),声明您有权并且实际上授予我们使用您的贡献的权利。

如果您是 GitHub 新手,这里有关于在 GitHub 上参与开发的详细帮助资源。

当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA,并适当地装饰 PR(例如,状态检查、注释)。只需按照机器人提供的说明操作。在使用我们的 CLA 的所有存储库中,您只需要执行一次此操作。

此项目已采

Microsoft 开放源代码行为准则。更多信息,请参见行为准则 FAQ,或通过电子邮件opencode@microsoft.com与我们联系。

贡献者墙

法律声明

Microsoft 和任何贡献者授予您对该存储库中的 Microsoft 文档和其他内容的许可,根据知识共享署名 4.0 国际公共许可证,请参阅LICENSE 文件,并向您授予对该存储库中任何代码的许可,根据MIT 许可证,请参阅LICENSE-CODE 文件。

在文档中引用的 Microsoft、Windows、Microsoft Azure 和/或其他 Microsoft 产品和服务可能是 Microsoft 在美国和/或其他国家/地区的商标或已注册商标。此项目的许可不授予您使用任何 Microsoft 名称、标志或商标的权利。Microsoft 的一般商标指南可在 http://go.microsoft.com/fwlink/?LinkID=254653 上找到。

隐私信息可在 https://privacy.microsoft.com/en-us/ 找到。

Microsoft 和任何贡献者保留所有其他权利,无论是根据其各自的版权、专利还是商标权,无论是通过暗示、禁止还是以其他方式。

参考资料

https://github.com/microsoft/autogen/blob/main/README.md