AutoGen项目解读

基本信息

出品公司: 微软
官网: https://microsoft.github.io/autogen/
开源网址: https://github.com/microsoft/autogen
官方示例:https://microsoft.github.io/autogen/0.2/docs/Examples
讨论组: https://github.com/microsoft/autogen/discussions
https://aka.ms/autogen-discord
支持语言: Python ,C# (截止20241217)

项目介绍

An Open-Source Programming Framework for Agentic AI(代理型AI开源编程框架)

  • 提供了多代理会话框架作为一个高级抽象。有了这个框架,人们可以方便地构建LLM工作流。
  • 提供了一系列工作系统,涵盖了各种领域和广泛的复杂应用。
  • 支持增强LLM推理API,可用于提高推理性能并降低成本。

AutoGen是一个开源编程框架,用于构建AI代理并促进多个代理之间的合作以解决任务。AutoGen旨在提供一个易于使用和灵活的框架,以加速对AI智能体的开发和研究,如PyTorch之于深度学习。它提供了一些功能,例如可以与其他代理进行交谈的代理,LLM和工具支持,自主和有人干预工作流程以及多代理对话模式等。


注释: 可对话代理、代理定制化、多代理间对话、灵活的对话模式

核心能力

  • AutoGen使得基于多智能体对话构建下一代LLM应用程序变得轻而易举。它简化了复杂LLM工作流程的协调、自动化和优化。它最大化了LLM模型的性能,并克服了其弱点。

  • 支持多种对话模式以应对复杂的工作流程。通过可定制和可交谈的智能体,开发者可以利用AutoGen构建各种与对话自主性、多智能体和智能体对话拓扑相关的对话模式。

  • 提供了一系列不同复杂性的工作系统。这些系统涵盖了来自各种领域和复杂性范围的广泛应用。这展示了AutoGen如何轻松应对多样的对话模式。

  • 异步消息传递:代理通过异步消息进行通信,支持事件驱动和请求/响应交互模式。

  • 全面的类型支持:在所有接口中使用类型,并在构建时强制进行类型检查,注重质量和一致性。

  • 可扩展和分布式:设计复杂的、可跨组织边界操作的分布式代理网络。

  • 模块化和可扩展:通过可插拔组件自定义您的系统:自定义代理、工具、内存和模型。跨语言支持:在不同编程语言之间互操作代理。目前支持 Python 和 .NET,更多语言即将推出。

  • 可观察性与调试:内置功能和工具用于跟踪、追踪和调试代理交互与工作流,包括对行业标准可观察性的支持,如使用 OpenTelemetry。

路线图

  • AutoGen 0.2 – 这是当前稳定版本的 AutoGen。将继续接受对该版本的错误修复和小幅改进。
  • AutoGen 0.4 – AutoGen的全面重写,旨在创建一个更强大、可扩展、易于使用的跨语言库来构建人工智能代理。该版本仍处于预览阶段(很大概念近期-24年底-可能发版)。将重点关注接口的稳定性、文档、教程、示例以及您可以使用的一系列内置代理。以下是一些主要的计划项目:
    • 更多编程语言(例如,TypeScript)
    • 更多内置代理和多代理工作流程
    • 分布式代理的部署
    • AutoGen Studio的重新实现/迁移
    • 与其他代理框架和数据源的集成
    • 高级RAG技术和记忆服务

安装测试

Python
## 安装依赖包

pip install 'autogen-agentchat==0.4.0.dev11' 'autogen-ext[openai]==0.4.0.dev11'

## 通过openai获取天气信息的代理

import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.ui import Console
from autogen_agentchat.conditions import TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient

# Define a tool
async def get_weather(city: str) -> str:
    return f"The weather in {city} is 73 degrees and Sunny."

async def main() -> None:
    # Define an agent
    weather_agent = AssistantAgent(
        name="weather_agent",
        model_client=OpenAIChatCompletionClient(
            model="gpt-4o-2024-08-06",
            # api_key="YOUR_API_KEY",
        ),
        tools=[get_weather],
    )

    # Define termination condition
    termination = TextMentionTermination("TERMINATE")

    # Define a team
    agent_team = RoundRobinGroupChat([weather_agent], termination_condition=termination)

    # Run the team and stream messages to the console
    stream = agent_team.run_stream(task="What is the weather in New York?")
    await Console(stream)

asyncio.run(main())



示例(截止0.2.40版本)

https://microsoft.github.io/autogen/0.2/docs/notebooks

自动化多智能体聊天

AutoGen提供由大型语言模型(LLM)、工具或人类驱动的可对话智能体,这些智能体可通过自动化聊天共同执行任务。该框架允许通过多智能体对话来使用工具以及人类参与其中。

请在此处[https://microsoft.github.io/autogen/0.2/docs/Use-Cases/agent_chat]查看关于此功能的文档。

笔记本示例链接:

代码生成、执行与调试

  • 借助代码生成、执行和调试自动解决任务 – 代码
  • 利用检索增强智能体进行自动化代码生成与问答 – 代码
  • 基于Qdrant的检索增强智能体进行自动化代码生成与问答 – 代码

多智能体协作(超过3个智能体)

  • 通过群聊自动解决任务(含3个群成员智能体和1个管理者智能体) – 代码
  • 通过群聊自动进行数据可视化(含3个群成员智能体和1个管理者智能体) – 代码
  • 通过群聊自动解决复杂任务(含6个群成员智能体和1个管理者智能体) – 代码
  • 借助编码与规划智能体自动解决任务 – 代码
  • 依据图中指定的转移路径自动解决任务 – 代码
  • 通过“思维社会智能体”(SocietyOfMindAgent)将群聊作为内心独白来运行 – 代码
  • 使用自定义发言者选择功能运行群聊 – 代码

顺序多智能体聊天

  • 由单个智能体发起的一系列聊天中解决多个任务 – 代码
  • 由单个智能体发起的一系列聊天中异步解决多个任务 – 代码
  • 由不同智能体发起的一系列聊天中解决多个任务 – 代码

嵌套聊天

  • 利用嵌套聊天解决复杂任务 – 代码
  • 利用一系列嵌套聊天解决复杂任务 – 代码
  • 借助编码智能体和安全防护智能体通过嵌套聊天解决供应链优化问题的OptiGuide – 代码
  • 结合嵌套聊天与工具使用的对话式国际象棋 – 代码

应用

  • 从新数据中自动持续学习 – 代码
  • OptiGuide – 用于供应链优化的编码、工具使用、安全防护及问答功能
  • AutoAnny – 使用AutoGen构建的Discord机器人

工具使用

  • 网络搜索:解决需要网络信息的任务 – 代码
  • 将提供的工具用作函数 – 代码
  • 通过同步和异步函数调用使用工具 – 代码
  • 将Langchain提供的工具作为函数来解决任务 – 代码
  • 检索增强生成(RAG):含5个群成员智能体和1个管理者智能体的群聊 – 代码
  • 函数起始:使AutoGen智能体能够在对话期间更新/删除函数 – 代码
  • 结合Whisper的智能体聊天 – 代码
  • 通过引导生成受限响应 – 代码
  • 借助智能体浏览网页 – 代码
  • SQL:使用Spider文本到SQL基准将自然语言文本转换为SQL查询 – 代码
  • 网络抓取:使用Apify进行网络抓取 – 代码
  • 网络爬取:使用Spider API爬取整个域名 – 代码
  • 借助专门设计的函数逐个任务编写软件应用程序代码

人类参与

  • ChatGPT风格的简单示例 查看示例
  • 自动代码生成、执行、调试以及人类反馈代码
  • 结合GPT-4和多个人类用户自动解决任务 – 代码
  • 结合异步人类输入的智能体聊天 – 代码

智能体教学与学习

  • 通过自动化聊天教授智能体新技能并重复利用 – 代码
  • 教授智能体新事实、用户偏好以及编码之外的技能 – 代码
  • 通过GPTAssistantAgent教授OpenAI助手 – 代码
  • 智能体优化器:以智能体方式训练智能体 – 代码

包含OpenAI助手的多智能体聊天

  • AutoGen中与OpenAI助手的“Hello-World”聊天 – 代码
  • 使用函数调用与OpenAI助手聊天 – 代码
  • 结合代码解释器与OpenAI助手聊天 – 代码
  • 结合检索增强与OpenAI助手聊天 – 代码
  • OpenAI助手参与群聊 – 代码
  • 基于GPTAssistantAgent的多智能体工具使用 – 代码

非OpenAI模型

  • 使用非OpenAI模型的对话式国际象棋 – 代码

多模态智能体

  • 结合DALLE和GPT-4V的多模态智能体聊天 – 代码
  • 结合Llava的多模态智能体聊天 – 代码
  • 结合GPT-4V的多模态智能体聊天 – 代码

长文本语境处理

  • 长文本语境处理作为一项能力 – 代码

评估与测评

  • AgentEval:一个用于评估大型语言模型驱动应用程序效用的多智能体系统 – 代码

智能体自动构建

  • 使用智能体构建器(AgentBuilder)自动构建多智能体系统 – 代码
  • 从智能体库自动构建多智能体系统 – 代码

可观测性

  • 使用AgentOps跟踪大型语言模型调用、工具使用、操作以及错误 – 代码

增强推理

实用工具

推理超参数调优

AutoGen提供了一种具有成本效益的超参数优化技术EcoOptiGen,用于对大型语言模型进行调优。研究发现,调优超参数能够显著提升这些模型的效用。

请在此处[/docs/Use-Cases/enhanced_inference]查看关于此功能的文档。

笔记本示例链接:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注