当前位置: 首页 > news >正文

微软AutoGen:多智能体AI开发新利器

在这里插入图片描述

https://github.com/microsoft/autogen

这个仓库是微软的 AutoGen 框架的官方代码库,主要用于构建多智能体 AI 应用程序。以下是对该仓库的详细介绍:

1. 核心定位

AutoGen 是一个支持多智能体协作的框架,允许智能体自主行动或与人类协同工作,适用于构建复杂的 AI 应用。其核心特点包括:

  • 支持多智能体间的通信与协调
  • 兼容多种 AI 模型(如 OpenAI 的 GPT 系列)
  • 提供工具调用、代码执行等扩展能力
  • 支持无代码 GUI 工具(AutoGen Studio)

2. 主要组件与功能

  • 多智能体协作:提供 AgentChat 模块,支持智能体通过共享上下文或定向工作流(如 GraphFlow)协同完成任务。
  • 模型集成:通过 autogen-ext 扩展支持 OpenAI、Azure 等多种模型服务。
  • 工具与工作台:例如 MCP Workbench 支持网页内容获取等功能,方便智能体调用外部工具。
  • AutoGen Studio:可视化工具,支持通过拖拽或 JSON 配置创建智能体团队,提供交互式测试环境(Playground)和社区组件库(Gallery)。

3. 支持的语言与生态

  • Python:提供 autogen-coreautogen-agentchat 等 PyPI 包,支持 Python 3.10+。
  • .NET:提供 NuGet 包(如 Microsoft.AutoGen.Contracts),支持 .NET 生态的开发。
  • 社区扩展:包含第三方项目(如 autogen-oaiapiautogen-contextplus),扩展了框架的功能。

4. 仓库结构

  • 根目录包含文档(README.mdFAQ.md)、配置文件(.gitignorecodecov.yml)等。
  • python/:Python 相关代码,包括核心库、扩展(autogen-ext)、示例(samples/)和 AutoGen Studio。
  • dotnet/:.NET 相关代码,包含 SDK、示例(如 dev-team 演示 GitHub 协作智能体)。
  • docs/:文档和用户指南,涵盖安装、快速启动、多智能体设计模式等。
  • protos/:定义了智能体通信的协议文件(如 agent_worker.proto)。

5. 安装与使用

  • Python 核心库安装:
    pip install -U "autogen-agentchat" "autogen-ext[openai]"
    
  • AutoGen Studio(无代码界面)安装:
    pip install -U "autogenstudio"
    
  • 示例代码涵盖基础交互(如 “Hello World”)、网页浏览、多智能体编排等场景。

AutoGen Python 代码核心实战示例

涵盖多智能体协作、代码执行、工具调用等关键场景,均来自官方示例并附加解析:

一、代码执行工具(PythonCodeExecutionTool)

场景:智能体调用工具执行 Python 代码并返回结果

核心代码(来自 autogen_ext/tools/code_execution/_code_execution.py 示例):

import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.code_executors.local import LocalCommandLineCodeExecutor
from autogen_ext.tools.code_execution import PythonCodeExecutionToolasync def main() -> None:# 1. 初始化代码执行器(本地命令行环境)executor = LocalCommandLineCodeExecutor(work_dir="coding")  # 代码在 "coding" 目录执行# 2. 创建代码执行工具tool = PythonCodeExecutionTool(executor=executor)# 3. 初始化智能体(使用 GPT-4o 模型)model_client = OpenAIChatCompletionClient(model="gpt-4o")agent = AssistantAgent(name="code_assistant",model_client=model_client,tools=[tool],  # 绑定工具reflect_on_tool_use=True  # 自动反思工具调用结果)# 4. 执行任务:计算斐波那契数列第 10 项task = "计算斐波那契数列的第 10 项,用 Python 代码实现"result = await agent.run(task=task)print("执行结果:", result)asyncio.run(main())

关键解析

  • 代码执行器LocalCommandLineCodeExecutor 负责在本地环境运行代码,支持隔离目录(work_dir)避免冲突。
  • 工具绑定:智能体通过 tools 参数关联 PythonCodeExecutionTool,可自动判断何时需要执行代码。
  • 反思机制reflect_on_tool_use=True 让智能体在工具调用后检查结果,若出错会自动修正代码重试。

二、多智能体协作(国际象棋游戏)

场景:AI 智能体与人类(或随机策略)对战国际象棋

核心代码(来自 samples/agentchat_chess_game/main.py):

import asyncio
import chess
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.ui import Console
from autogen_core.models import ChatCompletionClientdef create_ai_player(model_client: ChatCompletionClient) -> AssistantAgent:"""创建 AI 棋手智能体"""return AssistantAgent(name="ai_player",model_client=model_client,system_message="你是国际象棋大师,用 UCI 格式返回走法(如 e2e4)",model_context=BufferedChatCompletionContext(buffer_size=10),  # 限制上下文为最近 10 条消息)async def get_ai_move(board: chess.Board, player: AssistantAgent) -> str:"""获取 AI 的下一步走法"""# 生成提示:包含当前棋盘状态、合法走法legal_moves = ", ".join([move.uci() for move in board.legal_moves])prompt = f"棋盘状态: {board.fen()}\n合法走法: {legal_moves}\n请用 UCI 格式返回你的走法"# 流式获取智能体响应result = await Console(player.run_stream(task=prompt))# 从响应中提取走法(格式:<move>e2e4</move>)response = result.messages[-1].contentreturn response.split("<move>")[1].split("</move>")[0]async def main():# 初始化棋盘和模型客户端board = chess.Board()model_client = ChatCompletionClient.load_component("model_config.yaml")  # 从配置文件加载模型ai_player = create_ai_player(model_client)# 游戏主循环while not board.is_game_over():# AI 走棋ai_move = await get_ai_move(board, ai_player)board.push(chess.Move.from_uci(ai_move))print(f"AI 走法: {ai_move}")# 人类走棋(或随机走法)user_move = input("你的走法 (UCI 格式): ")board.push(chess.Move.from_uci(user_move))print(f"游戏结束!结果: {board.result()}")asyncio.run(main())

关键解析

  • 智能体角色定义:通过 system_message 约束 AI 棋手的行为(仅返回 UCI 格式走法)。
  • 上下文管理BufferedChatCompletionContext 限制上下文长度,避免模型输入超限。
  • 流式交互run_stream 配合 Console 实现实时输出,提升交互体验。

三、任务中心记忆(Task-Centric Memory)

场景:智能体通过记忆模块学习并优化任务执行

核心代码(来自 samples/task_centric_memory/eval_retrieval.py):

import asyncio
from autogen_core.utils import load_yaml_file
from autogen_ext.models.openai import OpenAIChatCompletionClient
from your_module import MemoryController, PageLogger, eval_retrieval  # 假设的模块导入async def run_example(config_filepath: str) -> None:# 1. 加载配置(模型参数、记忆设置等)config = load_yaml_file(config_filepath)# 2. 初始化组件logger = PageLogger(config["PageLogger"])  # 日志记录器client = OpenAIChatCompletionClient(model="gpt-4o", api_key=config["client"]["api_key"])memory_controller = MemoryController(reset=True,  # 重置记忆(首次运行)client=client,config=config["MemoryController"],logger=logger,)# 3. 执行记忆检索任务(例如:从历史对话中提取关键信息)results = await eval_retrieval(memory_controller=memory_controller,client=client,logger=logger,test_config=config["test"]  # 测试用例配置)print("记忆检索结果:", results)if __name__ == "__main__":asyncio.run(run_example("config.yaml"))

关键解析

  • 记忆控制器MemoryController 负责存储和检索任务相关记忆(如用户偏好、历史决策)。
  • 配置化设计:通过 YAML 文件分离模型参数、测试用例,便于调试和复用。
  • 多场景支持:类似逻辑可用于 eval_self_teaching.py(自我学习)、eval_teachability.py(从用户指导学习)等场景。

四、工具调用(GraphRAG 搜索)

场景:智能体调用搜索工具回答文档相关问题

核心代码(来自 samples/agentchat_graphrag/app.py):

import asyncio
import os
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.graphrag import GlobalSearchTool, LocalSearchToolasync def main() -> None:# 检查 API 密钥api_key = os.environ.get("OPENAI_API_KEY")if not api_key:print("请设置 OPENAI_API_KEY 环境变量")return# 1. 初始化模型客户端model_client = OpenAIChatCompletionClient(model="gpt-4o-mini", api_key=api_key)# 2. 初始化 GraphRAG 搜索工具global_tool = GlobalSearchTool.from_settings(root_dir="./", config_filepath="./settings.yaml")  # 全局搜索local_tool = LocalSearchTool.from_settings(root_dir="./", config_filepath="./settings.yaml")    # 局部搜索# 3. 创建智能体(工具选择器)assistant_agent = AssistantAgent(name="search_assistant",tools=[global_tool, local_tool],  # 绑定两个搜索工具model_client=model_client,system_message=("根据用户问题选择工具:\n""- 细节问题(如特定实体)用 local_search\n""- 全局问题(如整体主题)用 global_search"))# 4. 执行查询(例如:询问《福尔摩斯》中车站站长对 Becher 博士的评价)query = "What does the station-master say about Dr. Becher?"print(f"查询: {query}")await Console(assistant_agent.run_stream(task=query))asyncio.run(main())

关键解析

  • 工具分类GlobalSearchTool 用于全局理解文档,LocalSearchTool 用于提取特定细节。
  • 工具选择逻辑:通过 system_message 明确智能体的工具调用规则,避免无效调用。
  • 文档处理:工具会自动处理 input/ 目录下的文档(如 sherlock_book.txt),无需手动加载。

运行示例的通用步骤

  1. 安装依赖
    pip install -U "autogen-agentchat" "autogen-ext[openai]" "python-dotenv"
    
  2. 配置 API 密钥
    export OPENAI_API_KEY="your-api-key"
    
  3. 运行代码
    python your_script.py
    

这些示例覆盖了 AutoGen 最核心的功能,可根据实际需求扩展(如添加更多智能体、集成自定义工具等)。

http://www.dtcms.com/a/486287.html

相关文章:

  • vscode的Verilog/SystemVerilog Tools(Andrew Nolte)插件简单配置
  • Rokid设备连接全解析:蓝牙与Wi-Fi通信源码深度剖析
  • 浦口区建设中学网站湖北什么是网站建设
  • 在阿贝云免费云服务器上体验LightGBM模型训练的愉快经历
  • 工业设计核心软件全解析:从绘图到高端制造
  • 20251015荣品的PRO-RK3566开发板在buildroot下解决驱动编译异常的问题
  • pytest 库用法示例:Python 测试框架的高效实践
  • 公司接到网站中文域名到期在云服务器打建网站
  • 为什么做的网站预览出来什么都没有wordpress开发西瓜
  • uniapp使用音频录音功能
  • 【Linux运维】 Prometheus + Grafana + Alertmanager 监控系统部署指南(CentOS Ubuntu 通用版)
  • 目标检测核心知识与技术
  • 【免费源码】使用YOLOv11和OCSort进行多类别目标跟踪。(基于ncnn框架,c++实现)
  • 学习:uniapp全栈微信小程序vue3后台(31)
  • 微信小程序开发实战指南(三)-- Webview访问总结
  • 公司自建网站加盟装修公司哪家好
  • 哪个软件做网站好如何制作橡皮泥 简单
  • DDE方式下Delphi7程序间及与VB6程序的数据交换
  • 网络安全等级保护要求(10+4 层面)记忆总结
  • 活字格AI智能体:重塑企业级自动化与智能交互新范式
  • 【通信网络安全主题】第六届计算机通信与网络安全国际学术会议(CCNS 2025)
  • 海商网做网站价格自己做的网站怎么添加采集模块
  • vscode使用翻译插件分享
  • Web通信技术:Comet(服务器推送)详解
  • 互联网营销网站建设玩具租赁网站开发与实现论文
  • 为什么格林公式二重积分一侧的被积函数是两项相减
  • 成都网站建设软件石家庄模板网站
  • 【实战-12】flink版本表
  • ‌MyBatis-Plus 的 LambdaQueryWrapper 可以实现 OR 条件查询‌
  • 带你了解STM32:SPI通信(硬件部分)