开源智能体框架AutoGen深度解析:多Agent协作的工程实践

AutoGen:对话驱动的多Agent框架 微软研究院的AutoGen开创了"对话即协作"的Agent范式。与LangGraph的图驱动不同,AutoGen将多Agent协作建模为一组Agent之间的对话,每个Agent有独立的角色和能力。 核心架构 Agent类型体系 from autogen import ( ConversableAgent, AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager ) # AssistantAgent: AI助手,有系统消息定义角色 researcher = AssistantAgent( name="Researcher", system_message="""你是一位AI研究分析师。 职责: 1. 分析用户需求 2. 搜索和整理相关信息 3. 提供结构化的分析报告 约束: - 基于事实,不编造 - 注明信息来源 - 区分事实和推测 """, llm_config={"model": "gpt-4o", "temperature": 0.3}, tools=[web_search, knowledge_base_search] ) # UserProxyAgent: 用户代理,可以执行代码 user_proxy = UserProxyAgent( name="User", human_input_mode="NEVER", # 不等待人类输入 code_execution_config={ "work_dir": "workspace", "use_docker": True, # 安全执行环境 "timeout": 60 } ) 对话管理 class ConversationManager: def __init__(self): self.conversations = {} self.termination_conditions = [] def add_termination(self, condition): """添加对话终止条件""" self.termination_conditions.append(condition) def check_termination(self, messages): for condition in self.termination_conditions: if condition.check(messages): return True return False # 常见终止条件 class MaxRoundsTermination: def __init__(self, max_rounds=10): self.max_rounds = max_rounds def check(self, messages): return len(messages) >= self.max_rounds class KeywordTermination: def __init__(self, keywords): self.keywords = keywords def check(self, messages): if messages: return any(kw in messages[-1]["content"] for kw in self.keywords) return False 多Agent协作模式 模式1:顺序对话 def sequential_conversation(task): """Agent按顺序处理任务""" # Agent 1: 分析需求 analysis = analyst.generate(f"分析以下任务:{task}") # Agent 2: 编写代码 code = coder.generate(f"基于以下分析编写代码:{analysis}") # Agent 3: 审查代码 review = reviewer.generate(f"审查以下代码:{code}") # Agent 4: 优化代码 if "问题" in review: final_code = coder.generate(f"根据审查意见优化代码:{review}") else: final_code = code return final_code 模式2:群聊协作 def group_chat_collaboration(task): """多Agent群聊协作""" agents = [ UserProxyAgent(name="User", human_input_mode="NEVER"), AssistantAgent(name="Planner", system_message="负责制定计划"), AssistantAgent(name="Coder", system_message="负责编写代码"), AssistantAgent(name="Tester", system_message="负责测试"), AssistantAgent(name="Reviewer", system_message="负责审查") ] group_chat = GroupChat( agents=agents, messages=[], max_round=20, speaker_selection_method="auto" # 自动选择下一个发言者 ) manager = GroupChatManager( groupchat=group_chat, llm_config={"model": "gpt-4o"} ) agents[0].initiate_chat(manager, message=task) 模式3:嵌套对话 def nested_conversation(task): """Agent内部发起子对话""" # 主Agent处理任务 main_agent = AssistantAgent( name="Main", system_message="你是项目经理,可以委托子任务给其他Agent" ) # 当主Agent遇到需要深入研究的子问题时 # 它可以发起一个子对话 def research_subtask(subtask): researcher = AssistantAgent( name="Researcher", system_message="你是研究员,擅长信息检索" ) result = researcher.generate(f"研究:{subtask}") return result # 主Agent可以在处理过程中调用子对话 main_agent.register_function( function_map={"research": research_subtask} ) 代码执行环境 安全执行 class SafeCodeExecutor: def __init__(self): self.docker_config = { "image": "python:3.11-slim", "timeout": 60, "memory_limit": "512m", "cpu_limit": 1.0, "network": "none", # 禁止网络访问 } self.allowed_packages = [ "numpy", "pandas", "matplotlib", "scipy", "scikit-learn" ] def execute(self, code): # 1. 静态检查 issues = self._static_check(code) if issues: return {"error": "代码检查未通过", "issues": issues} # 2. Docker执行 result = self._docker_exec(code) return result def _static_check(self, code): """静态安全检查""" forbidden = [ "import os", "import subprocess", "import socket", "open(", "__import__", "eval(", "exec(" ] issues = [] for pattern in forbidden: if pattern in code: issues.append(f"禁止使用: {pattern}") return issues 代码执行反馈循环 def code_feedback_loop(agent, task, max_attempts=3): """代码编写-执行-修正的反馈循环""" for attempt in range(max_attempts): # Agent生成代码 code = agent.generate(f"任务:{task}\n尝试:{attempt+1}") # 执行代码 result = executor.execute(code) if result["success"]: return code, result["output"] # 反馈错误,让Agent修正 feedback = f""" 代码执行失败: 错误信息:{result['error']} 请修正代码。 """ task = task + "\n\n" + feedback return None, "达到最大尝试次数" 高级特性 Agent可序列化 def save_agent_state(agent, path): """保存Agent状态,支持恢复""" state = { "name": agent.name, "system_message": agent.system_message, "llm_config": agent.llm_config, "chat_history": agent.chat_messages, "registered_tools": list(agent.tools.keys()) } with open(path, 'w') as f: json.dump(state, f) def load_agent_state(path): """从文件恢复Agent""" with open(path) as f: state = json.load(f) agent = AssistantAgent( name=state["name"], system_message=state["system_message"], llm_config=state["llm_config"] ) agent.chat_messages = state["chat_history"] return agent 自定义Agent行为 class CustomAgent(ConversableAgent): def __init__(self, name, **kwargs): super().__init__(name, **kwargs) self.register_hook("process_message_before_send", self._preprocess) self.register_hook("process_message_after_receive", self._postprocess) def _preprocess(self, message): """发送前预处理""" # 添加时间戳 message["content"] = f"[{datetime.now()}] {message['content']}" return message def _postprocess(self, message): """接收后处理""" # 记录消息日志 self._log(message) return message def _log(self, message): """消息日志""" with open("agent_log.jsonl", 'a') as f: f.write(json.dumps({ "timestamp": datetime.now().isoformat(), "sender": message.get("from"), "content": message["content"][:200] }) + "\n") 实际案例:数据分析Agent def build_data_analysis_agent(): """构建数据分析Agent系统""" # 数据科学家Agent data_scientist = AssistantAgent( name="DataScientist", system_message="""你是数据科学家,负责: 1. 理解用户的数据分析需求 2. 编写Python代码进行数据分析 3. 解释分析结果 使用pandas, numpy, matplotlib进行数据分析。 确保代码包含异常处理和数据验证。 """, llm_config={"model": "gpt-4o"} ) # 代码执行Agent code_runner = UserProxyAgent( name="CodeRunner", human_input_mode="NEVER", code_execution_config={ "work_dir": "analysis_workspace", "use_docker": "python:3.11-slim" }, system_message="你负责执行代码并返回结果。不生成代码,只执行。" ) # 启动分析 code_runner.initiate_chat( data_scientist, message="""分析销售数据: 1. 读取 /data/sales.csv 2. 按月统计销售趋势 3. 找出Top 10产品 4. 生成可视化图表 5. 输出分析报告 """ ) AutoGen vs 其他框架 维度 AutoGen LangGraph CrewAI 核心范式 对话驱动 图驱动 角色驱动 代码执行 内置Docker 需自定义 需自定义 多Agent 原生支持 需手动编排 支持 状态管理 对话历史 检查点 任务上下文 适合场景 研究探索 生产系统 快速原型 结语 AutoGen将多Agent协作还原为最自然的形式——对话。它的优势在于代码执行能力和灵活的对话管理。劣势在于控制精度不如图驱动框架。对于需要多专家协作探索的研究型任务,AutoGen是最佳选择。对于需要精确控制执行流程的生产系统,LangGraph更合适。选择框架的关键是匹配你的任务特性。 ...

2026-07-16 · 3 min · 571 words · 硅基 AGI 探索者
AutoGen多智能体

AutoGen 2026多智能体:协作AI的新范式

引言 多智能体(Multi-Agent)是2026年AI应用的热门方向。微软的AutoGen框架是这一领域的领军者,它让多个AI智能体协作完成复杂任务成为可能。本文将全面介绍AutoGen 2026的最新进展。 AutoGen 2026核心概念 多智能体协作模式 模式一:对话式协作 Agent A ←→ Agent B (两个Agent通过对话解决问题) 模式二:层级式协作 Manager Agent ├── Worker Agent 1 ├── Worker Agent 2 └── Worker Agent 3 (管理者分配任务给工作者) 模式三:流水线协作 Agent A → Agent B → Agent C (每个Agent处理一个阶段) 模式四:竞争式协作 Agent A ↘ Agent B → Judge Agent Agent C ↗ (多个Agent竞争,裁判选择最佳) 基本使用 双Agent对话 from autogen import AssistantAgent, UserProxyAgent # 创建用户代理 user_proxy = UserProxyAgent( name="user", human_input_mode="TERMINATE", max_consecutive_auto_reply=10 ) # 创建助手 assistant = AssistantAgent( name="assistant", system_prompt="你是一个Python编程助手。", llm_config={"model": "gpt-5"} ) # 开始对话 user_proxy.initiate_chat( assistant, message="帮我写一个快速排序算法" ) 多Agent协作 from autogen import AssistantAgent, GroupChat, GroupChatManager # 创建多个专家Agent coder = AssistantAgent( name="coder", system_prompt="你是一个Python程序员,负责写代码。", llm_config={"model": "gpt-5"} ) reviewer = AssistantAgent( name="reviewer", system_prompt="你是一个代码审查专家,负责检查代码质量。", llm_config={"model": "claude-4-opus"} ) tester = AssistantAgent( name="tester", system_prompt="你是一个测试工程师,负责编写测试用例。", llm_config={"model": "gpt-5"} ) # 创建群聊 group_chat = GroupChat( agents=[coder, reviewer, tester], messages=[], max_round=20 ) manager = GroupChatManager( groupchat=group_chat, llm_config={"model": "gpt-5"} ) # 开始协作 user_proxy.initiate_chat( manager, message="实现一个LRU缓存,包括代码、审查和测试" ) 2026年新特性 1. Agent Workflow from autogen import Workflow # 定义工作流 workflow = Workflow() # 添加节点 workflow.add_node("researcher", research_agent) workflow.add_node("writer", writing_agent) workflow.add_node("editor", editing_agent) # 定义流程 workflow.add_edge("researcher", "writer") workflow.add_edge("writer", "editor") workflow.add_edge("editor", "writer", condition="needs_revision") # 执行 result = workflow.run("写一篇关于AI的科普文章") 2. Agent工具 from autogen import register_function # 注册工具 @register_function("search") def search_web(query: str) -> str: """搜索网络""" return web_search(query) @register_function("code_exec") def execute_code(code: str) -> str: """执行Python代码""" return exec_python(code) # Agent可以使用这些工具 agent = AssistantAgent( name="tool_agent", tools=["search", "code_exec"], llm_config={"model": "gpt-5"} ) 3. 可观测性 from autogen import trace # 追踪Agent交互 with trace("my_conversation"): user_proxy.initiate_chat(assistant, message="...") # 查看追踪 trace.visualize() # 生成交互图 4. 持久化 from autogen import save_state, load_state # 保存对话状态 save_state(assistant, "agent_state.pkl") # 加载状态继续对话 assistant = load_state("agent_state.pkl") user_proxy.initiate_chat(assistant, message="继续之前的对话") 应用场景 场景一:软件开发 # 多Agent协作开发软件 product_manager = AssistantAgent( name="PM", system_prompt="你是产品经理,负责需求分析和项目规划。" ) architect = AssistantAgent( name="Architect", system_prompt="你是架构师,负责技术设计。" ) developer = AssistantAgent( name="Developer", system_prompt="你是开发者,负责编码实现。" ) qa = AssistantAgent( name="QA", system_prompt="你是测试工程师,负责质量保证。" ) team = GroupChat( agents=[product_manager, architect, developer, qa], max_round=50 ) 场景二:研究报告 # 多Agent协作写研究报告 researcher = AssistantAgent( name="Researcher", system_prompt="你是研究员,负责收集和分析资料。" ) analyst = AssistantAgent( name="Analyst", system_prompt="你是分析师,负责数据分析和可视化。" ) writer = AssistantAgent( name="Writer", system_prompt="你是技术写作专家,负责撰写报告。" ) editor = AssistantAgent( name="Editor", system_prompt="你是编辑,负责审核和修改。" ) 场景三:客服系统 # 分层Agent客服 triage_agent = AssistantAgent( name="Triage", system_prompt="你是客服分流Agent,判断问题类型并路由。" ) tech_agent = AssistantAgent( name="Tech", system_prompt="你是技术支持Agent。" ) billing_agent = AssistantAgent( name="Billing", system_prompt="你是计费问题Agent。" ) 性能优化 并行执行 # 多Agent并行工作 import asyncio async def parallel_agents(): tasks = [ agent1.ainvoke("任务1"), agent2.ainvoke("任务2"), agent3.ainvoke("任务3") ] results = await asyncio.gather(*tasks) return results 成本控制 # 根据任务复杂度选择模型 def select_model(task_complexity): if task_complexity == "simple": return "gpt-5o-mini" elif task_complexity == "medium": return "gpt-5o" else: return "gpt-5" 与其他框架对比 特性 AutoGen CrewAI LangGraph 多Agent ★★★★★ ★★★★☆ ★★★☆☆ 工作流 ★★★★☆ ★★★★★ ★★★★★ 可观测性 ★★★☆☆ ★★★☆☆ ★★★★★ 学习曲线 中等 低 高 适合场景 复杂协作 角色扮演 图式流程 结语 AutoGen在2026年仍然是多智能体协作的首选框架。它让多个AI智能体像人类团队一样协作,各司其职,共同完成复杂任务。随着Agent工作流和可观测性的增强,AutoGen正在从实验性框架走向生产级工具。 ...

2026-07-02 · 2 min · 419 words · 硅基 AGI 探索者
Semantic Kernel 2026:微软AI编排框架的成熟之路

Semantic Kernel 2026:微软AI编排框架的成熟之路

Semantic Kernel 2026:从实验到成熟 Semantic Kernel(SK)是微软的AI编排框架,经过三年的迭代,2026版本终于达到了企业级成熟度。与AutoGen的对话范式不同,SK采用函数编排范式——将AI能力封装为可组合的函数(Functions),通过Kernel进行编排。 核心架构 函数体系 SK的核心抽象是三种函数类型: // C# 示例:Semantic Kernel 2026 using Microsoft.SemanticKernel; using Microsoft.SemanticKernel.Connectors.OpenAI; var builder = Kernel.CreateBuilder(); builder.AddAzureOpenAIChatCompletion("gpt-4o", endpoint, apiKey); builder.Plugins.AddFromType<TimePlugin>(); builder.Plugins.AddFromType<SearchPlugin>(); var kernel = builder.Build(); // 1. Semantic Function(AI生成) var summarize = kernel.CreateFunctionFromPrompt( "总结以下文本的核心要点:\n{{$input}}", functionName: "Summarize", description: "文本摘要" ); // 2. Native Function(原生代码) public class SearchPlugin { [KernelFunction("search")] [Description("搜索网络信息")] public async Task<string> SearchAsync( [Description("搜索关键词")] string query, [Description("结果数量")] int count = 5 ) { return await _searchEngine.QueryAsync(query, count); } } // 3. Hybrid Function(混合函数 - 2026新增) var analyze = kernel.CreateFunctionFromMethod( async (string input) => { var summary = await summarize.InvokeAsync(kernel, new() { ["input"] = input }); var keywords = await extractKeywords.InvokeAsync(kernel, new() { ["input"] = summary }); return new { Summary = summary, Keywords = keywords }; }, functionName: "Analyze" ); Kernel编排 2026版本的Kernel引入了管道编排器(Pipeline Orchestrator): ...

2026-06-30 · 3 min · 439 words · 硅基 AGI 探索者
AutoGen 2026:微软的多Agent对话框架深度评测

AutoGen 2026:微软的多Agent对话框架深度评测

AutoGen 2026:对话驱动的多Agent编排 微软的AutoGen是最早一批多Agent框架,以"对话即编排"的理念独树一帜。2026版本(v0.5+)经历了底层架构重写,在稳定性、可扩展性和生态集成方面有了质的飞跃。 本文将从架构设计、开发体验、性能表现、生产就绪度四个维度进行深度评测。 架构设计评测 对话协议模型 AutoGen的核心抽象是对话(Conversation)而非图(Graph)。2026版本引入了结构化对话协议: from autogen import ConversableAgent, GroupChat, GroupChatManager from autogen.protocol import ConversationProtocol, MessageContract # 定义消息契约 class AnalysisRequest(MessageContract): """分析请求消息""" target: str metrics: list[str] deadline: str class AnalysisResult(MessageContract): """分析结果消息""" findings: list[dict] confidence: float caveats: str # 定义对话协议 protocol = ConversationProtocol( participants=["analyst", "reviewer", "reporter"], message_types=[AnalysisRequest, AnalysisResult], termination_condition="reporter:FINAL_REPORT", max_turns=20 ) 与2025版本相比,结构化协议带来的最大改进是消息类型安全和自动终止检测。 GroupChat机制 GroupChat是AutoGen的杀手锏功能。2026版本新增了动态角色管理: from autogen import AssistantAgent, UserProxyAgent, GroupChat # 动态角色注册 class DynamicGroupChat(GroupChat): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.role_registry = {} def register_role(self, name: str, agent: ConversableAgent, trigger_condition: callable): """注册条件触发的动态角色""" self.role_registry[name] = { "agent": agent, "trigger": trigger_condition } def select_speaker(self, last_speaker, messages): # 先检查动态角色触发条件 for name, role in self.role_registry.items(): if role["trigger"](messages): return role["agent"] # 回退到默认选择逻辑 return super().select_speaker(last_speaker, messages) # 使用场景:当检测到法律问题时动态引入法务Agent legal_trigger = lambda msgs: any( "合规" in m.get("content", "") or "法律" in m.get("content", "") for m in msgs[-3:] ) chat = DynamicGroupChat( agents=[analyst, researcher, writer], messages=[], max_round=30 ) chat.register_role("legal", legal_agent, legal_trigger) 开发体验评测 上手难度 AutoGen的"对话即编程"范式对新手友好,但生产级使用存在隐性复杂度: ...

2026-06-30 · 2 min · 372 words · 硅基 AGI 探索者
AutoGen 2026:微软的多Agent对话框架深度评测

AutoGen 2026:微软的多Agent对话框架深度评测

AutoGen 2026:微软的Agent对话哲学 AutoGen的核心设计理念与CrewAI、LangGraph截然不同。CrewAI强调角色和任务分配,LangGraph强调图式工作流,而AutoGen强调对话即计算——通过Agent之间的自然语言对话来解决问题。这个理念在2026版本中被推向了新高度。 核心架构:ConversationGraph AutoGen 2026引入了ConversationGraph作为底层抽象,将Agent间的对话建模为图结构: from autogen import ConversableAgent, GroupChat, GroupChatManager from autogen.graph import ConversationGraph # 创建具有不同专长的Agent data_scientist = ConversableAgent( name="数据科学家", system_message="""你是一位资深数据科学家。 你负责数据探索、特征工程和模型选择。 当需要编写代码时,请使用python工具执行。""", llm_config={"model": "gpt-4o", "temperature": 0.3}, code_execution_config={ "work_dir": "workspace", "use_docker": True, # 2026新增:默认Docker隔离 "timeout": 60, "max_consecutive_auto_reply": 3 } ) domain_expert = ConversableAgent( name="业务专家", system_message="""你是一位金融领域专家。 你负责理解业务需求、解释数据含义、验证分析结论的合理性。 你不写代码,但你能判断分析方向是否正确。""", llm_config={"model": "claude-sonnet-4", "temperature": 0.5} ) critic = ConversableAgent( name="审查员", system_message="""你是代码和分析方法的审查者。 检查代码的正确性、统计方法是否恰当、结论是否有数据支撑。 提出具体的改进建议,不做泛泛评价。""", llm_config={"model": "gpt-4o", "temperature": 0.2} ) # GroupChat配置 group_chat = GroupChat( agents=[data_scientist, domain_expert, critic], messages=[], max_round=20, # 最大对话轮次 speaker_selection_method="auto", # 自动选择发言者 allow_repeat_speaker=False, # 禁止连续发言 select_speaker_prompt_template="""根据当前对话历史,选择下一位发言者。 考虑任务的当前阶段和各Agent的专长。""" ) manager = GroupChatManager( groupchat=group_chat, llm_config={"model": "gpt-4o", "temperature": 0.1} ) # 启动对话 data_scientist.initiate_chat( manager, message="我们需要分析2025年A股市场科技板块的涨跌因子,数据已准备在data/目录下。" ) GroupChat 2.0:智能发言者选择 2026版本最大的改进是GroupChat的发言者选择机制。旧版本使用简单的轮询或随机选择,新版本引入了基于LLM的智能选择: ...

2026-06-30 · 2 min · 420 words · 硅基 AGI 探索者
Semantic Kernel 2026:微软AI编排框架的成熟之路

Semantic Kernel 2026:微软AI编排框架的成熟之路

Semantic Kernel 2026:企业级AI编排的微软答案 Semantic Kernel(SK)是微软推出的开源AI编排框架,最早于2023年发布。与LangChain的"开发者优先"理念不同,SK从设计之初就聚焦于企业级集成和**.NET生态**。2026年,SK已经发布了1.0正式版,并在多个大型企业系统中投入生产。 核心抽象:从Semantic Function到Kernel SK的核心抽象经历了多次迭代,2026版本最终稳定为以下模型: 1. Kernel:中央协调器 using Microsoft.SemanticKernel; // 创建Kernel var kernel = Kernel.Builder .WithAzureOpenAIChatCompletion("gpt-4o", endpoint, apiKey) .WithAzureAIContentSafety(apiKey, endpoint) // 2026新增:内容安全 .WithMemoryStorage(new VolatileMemoryStore()) // 内存存储 .Build(); // 注册插件(Plugin) kernel.ImportPluginFromType<TimePlugin>(); kernel.ImportPluginFromType<MathPlugin>(); kernel.ImportPluginFromPromptDirectory("plugins/WriterPlugin"); // 执行函数 var result = await kernel.InvokeAsync("WriterPlugin", "Summarize", new() { ["input"] = "长文本内容..." }); 2. Plugin:能力封装单位 SK 2026用"Plugin"替代了早期的"Skill"术语(避免与OpenClaw的Skill混淆)。Plugin是功能的可复用封装: using Microsoft.SemanticKernel; using System.ComponentModel; public class FinancialDataPlugin { [KernelFunction("get_stock_price")] [Description("获取指定股票的当前价格")] public async Task<string> GetStockPriceAsync( [Description("股票代码,如AAPL")] string symbol) { // 实现股票查询逻辑 var price = await FetchStockPrice(symbol); return $"{symbol}当前价格: ${price}"; } [KernelFunction("calculate_portfolio_value")] [Description("计算投资组合总价值")] public async Task<double> CalculatePortfolioValueAsync( [Description("投资组合JSON,格式:[{symbol, shares}]")] string portfolioJson) { // 实现投资组合计算逻辑 } } // 注册使用 kernel.ImportPluginFromType<FinancialDataPlugin>(); 3. Planner:自动任务规划 SK 2026的Planner组件可以根据用户意图自动规划函数调用序列: ...

2026-06-30 · 3 min · 517 words · 硅基 AGI 探索者
semantic kernel 2026

Semantic Kernel 2026:微软 AI 编排框架的成熟

微软的 AI 编排答卷 Semantic Kernel(SK)是微软在 2023 年初推出的 AI 编排框架,定位类似于"AI 版的 .NET CLR"。经过三年多的发展,2026 版的 SK 已经成为企业级 AI 应用的主流选择之一,特别是在微软生态(Azure、M365、Power Platform)中占据核心位置。 2026 核心架构 分层设计 ┌──────────────────────────────────────────────────┐ │ Application Layer │ │ Copilot Apps │ Plugins │ Agent Workflows │ ├──────────────────────────────────────────────────┤ │ Semantic Kernel Core │ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │ │ Kernel │ │ Planner │ │ Agent Framework │ │ │ │ (上下文) │ │ (规划器) │ │ (多Agent编排) │ │ │ └──────────┘ └──────────┘ └──────────────────┘ │ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │ │ Memory │ │ Filters │ │ Process Engine │ │ │ │ (记忆) │ │ (过滤器) │ │ (流程引擎) │ │ │ └──────────┘ └──────────┘ └──────────────────┘ │ ├──────────────────────────────────────────────────┤ │ Connector Layer │ │ LLM Connectors │ Vector DB │ Search │ Tools │ ├──────────────────────────────────────────────────┤ │ .NET / Python / Java │ └──────────────────────────────────────────────────┘ 多语言支持 2026 年 SK 的语言支持矩阵: ...

2026-06-28 · 4 min · 851 words · 硅基 AGI 探索者
autogen multi agent

AutoGen 多智能体框架:从对话到协作

引言:为什么需要多智能体? 单一 AI Agent 的能力是有限的——一个 Agent 难以同时扮演产品经理、开发者和测试工程师的角色。微软 AutoGen 框架的核心思想是:让多个专业化 Agent 协作完成复杂任务,就像一个高效的团队一样。 AutoGen 核心架构 框架层次 ┌─────────────────────────────────┐ │ Application Layer │ │ (User Interface / API) │ ├─────────────────────────────────┤ │ Orchestration Layer │ │ ┌───────────┐ ┌────────────┐ │ │ │ Group Chat│ │ Workflow │ │ │ │ Manager │ │ Engine │ │ │ └───────────┘ └────────────┘ │ ├─────────────────────────────────┤ │ Agent Layer │ │ AssistantAgent│UserProxyAgent│ │ MultimodalAgent│CustomAgent │ ├─────────────────────────────────┤ │ Communication Layer │ │ Message Queue │ Event Bus │ ├─────────────────────────────────┤ │ Model Layer │ │ OpenAI │ Azure │ Local Models │ └─────────────────────────────────┘ Agent 类型 Agent 类型 职责 典型场景 AssistantAgent 执行任务、生成内容 编码、分析、写作 UserProxyAgent 代理用户行为 执行代码、提供反馈 GroupChatManager 管理多 Agent 对话 团队协作场景 MultimodalAgent 处理图像等多模态输入 视觉分析任务 CustomAgent 用户自定义 Agent 特殊业务逻辑 快速上手 安装与基础配置 # 安装 AutoGen # pip install autogen-agentchat autogen-ext import asyncio from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.teams import RoundRobinGroupChat from autogen_agentchat.conditions import TextMentionTermination from autogen_ext.models.openai import OpenAIChatCompletionClient # 配置模型 model_client = OpenAIChatCompletionClient( model="gpt-5", api_key="your-api-key", # Azure OpenAI 配置 # base_url="https://your-resource.openai.azure.com", # api_version="2026-03-01-preview", ) 创建第一个多 Agent 团队 # 创建专业化的 Agent 团队 product_manager = AssistantAgent( name="ProductManager", model_client=model_client, system_message=""" 你是一个产品经理。你的职责: 1. 理解用户需求 2. 将需求拆解为具体的功能点 3. 定义验收标准 不要写代码,专注于需求分析。 当需求分析完成时,说"需求已明确,请开发人员开始实现"。 """, ) developer = AssistantAgent( name="Developer", model_client=model_client, system_message=""" 你是一个高级 Python 开发者。你的职责: 1. 根据产品经理的需求编写代码 2. 确保代码质量(类型标注、错误处理) 3. 编写单元测试 写完代码后,说"代码已完成,请测试人员审查"。 """, # 可以执行代码 reflect_on_tool_history=True, ) tester = AssistantAgent( name="Tester", model_client=model_client, system_message=""" 你是一个 QA 测试工程师。你的职责: 1. 审查代码的逻辑正确性 2. 检查边界条件和错误处理 3. 提出改进建议 审查完成后,说"APPROVED"表示通过,或指出需要修改的问题。 """, ) # 创建团队(轮询模式) team = RoundRobinGroupChat( participants=[product_manager, developer, tester], termination_condition=TextMentionTermination("APPROVED"), max_turns=20, ) # 执行任务 async def main(): result = await team.run( task="实现一个函数,接收日期字符串,返回该日期是星期几," "支持多种日期格式输入" ) print(result) asyncio.run(main()) 高级:工作流编排 自定义工作流 from autogen_agentchat.teams import SelectorGroupChat from autogen_agentchat.conditions import MaxMessageTermination # 使用智能选择器(Selector)模式 # 由一个"管理者"Agent 决定下一个发言者 team = SelectorGroupChat( participants=[product_manager, developer, tester], model_client=model_client, # 用于选择发言者 selector_prompt=""" 你是一个团队协调者。根据当前对话状态, 选择下一个应该发言的团队成员。 可选成员:{participants} 对话历史:{history} 返回下一个发言者的名字。 """, termination_condition=MaxMessageTermination(30), allow_repeated_speaker=False, # 同一成员不能连续发言 ) # 带工具的工作流 async def run_with_tools(): # 给 Developer 添加代码执行工具 from autogen_ext.tools.code import PythonCodeExecutionTool code_executor = PythonCodeExecutionTool( timeout=30, work_dir="./workspace", ) developer_with_tools = AssistantAgent( name="Developer", model_client=model_client, tools=[code_executor], system_message="写完代码后用工具执行验证。", ) team = RoundRobinGroupChat( participants=[product_manager, developer_with_tools, tester], max_turns=15, ) result = await team.run(task="实现并验证一个快速排序算法") return result DAG 工作流 from autogen_agentchat.teams import GraphWorkflow from autogen_agentchat.graph import Graph, Node, Edge # 定义有向无环图工作流 async def build_research_workflow(): # 创建专业化 Agent researcher = AssistantAgent( name="Researcher", model_client=model_client, system_message="你是一个研究员,负责搜索和整理信息。", ) analyst = AssistantAgent( name="Analyst", model_client=model_client, system_message="你是一个分析师,负责分析数据并得出结论。", ) writer = AssistantAgent( name="Writer", model_client=model_client, system_message="你是一个技术写作专家,负责撰写报告。", ) reviewer = AssistantAgent( name="Reviewer", model_client=model_client, system_message="你是审稿人,负责审核报告质量。", ) # 构建工作流图 graph = Graph() # 添加节点 graph.add_node(Node("research", researcher)) graph.add_node(Node("analyze", analyst)) graph.add_node(Node("write", writer)) graph.add_node(Node("review", reviewer)) # 添加边(定义执行顺序) graph.add_edge(Edge("research", "analyze")) graph.add_edge(Edge("analyze", "write")) graph.add_edge(Edge("write", "review")) # 审核不通过可以回退 graph.add_edge(Edge("review", "write", condition="needs_revision")) workflow = GraphWorkflow(graph=graph) result = await workflow.run( task="研究 2026 年 AI 编程助手市场格局并撰写分析报告" ) return result 通信与消息传递 消息结构 # AutoGen 的消息结构 from autogen_agentchat.messages import TextMessage, MultiModalMessage # 文本消息 text_msg = TextMessage( source="Developer", content="我已经实现了用户认证模块,请审查。", metadata={"timestamp": "2026-06-25T10:00:00Z"} ) # 多模态消息(包含图片) multimodal_msg = MultiModalMessage( source="Tester", content=[ "测试结果截图如下:", Image.from_file("test-results.png"), ] ) 自定义通信协议 from autogen_core import MessageContext, RoutedAgent, message_handler class TaskMessage: def __init__(self, content: str, priority: int = 0): self.content = content self.priority = priority class ResultMessage: def __init__(self, content: str, status: str): self.content = content self.status = status class CustomWorkerAgent(RoutedAgent): def __init__(self, model_client): super().__init__("Worker") self.model_client = model_client self._history = [] @message_handler async def handle_task(self, message: TaskMessage, ctx: MessageContext) -> ResultMessage: # 处理任务 self._history.append(message.content) response = await self.model_client.create( messages=[{"role": "user", "content": message.content}] ) return ResultMessage( content=response.content, status="completed" ) 状态管理与持久化 from autogen_core import CancellationToken import json import os class CheckpointManager: """Agent 会话状态持久化""" def __init__(self, checkpoint_dir: str = "./checkpoints"): self.checkpoint_dir = checkpoint_dir os.makedirs(checkpoint_dir, exist_ok=True) async def save(self, team, task_id: str): """保存团队状态""" state = await team.save_state() path = os.path.join(self.checkpoint_dir, f"{task_id}.json") with open(path, "w") as f: json.dump(state, f, ensure_ascii=False, indent=2) async def load(self, team, task_id: str): """恢复团队状态""" path = os.path.join(self.checkpoint_dir, f"{task_id}.json") if os.path.exists(path): with open(path) as f: state = json.load(f) await team.load_state(state) return True return False # 使用示例 checkpoint = CheckpointManager() # 保存中断的会话 await checkpoint.save(team, "task-001") # 恢复会话 await checkpoint.load(team, "task-001") result = await team.run(task="继续之前的任务") 性能优化 并行 Agent 执行 from autogen_agentchat.teams import ConcurrentGroupChat # 并行执行模式:多个 Agent 同时工作 concurrent_team = ConcurrentGroupChat( participants=[researcher, data_analyst, market_analyst], model_client=model_client, aggregation_strategy="merge", # merge | select | vote max_turns=10, ) # 三个 Agent 并行研究不同方面,然后合并结果 result = await concurrent_team.run( task="分析竞品:研究员查技术栈,数据分析师查性能指标,市场分析师查市场份额" ) 性能对比 模式 Agent 数量 平均耗时 Token 消耗 适用场景 单 Agent 1 15s ~5K 简单任务 轮询模式 3 45s ~15K 流程化任务 选择器模式 3 35s ~12K 灵活协作 并行模式 3 20s ~18K 独立子任务 DAG 工作流 4 60s ~20K 复杂流水线 生产部署 Docker 容器化 # Dockerfile FROM python:3.12-slim WORKDIR /app # 安装依赖 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 复制代码 COPY . . # 启动 Agent 服务 CMD ["python", "-m", "autogen_server", "--host", "0.0.0.0", "--port", "8080"] # requirements.txt autogen-agentchat>=0.5.0 autogen-ext[openai,azure]>=0.5.0 fastapi>=0.115.0 uvicorn>=0.30.0 API 服务封装 from fastapi import FastAPI, BackgroundTasks from pydantic import BaseModel app = FastAPI(title="AutoGen Agent Service") class TaskRequest(BaseModel): task: str team_config: dict = {} max_turns: int = 20 class TaskResponse(BaseModel): task_id: str status: str result: str | None = None @app.post("/tasks", response_model=TaskResponse) async def create_task(req: TaskRequest, bg: BackgroundTasks): task_id = generate_task_id() # 异步执行 bg.add_task(run_agent_team, task_id, req.task, req.team_config) return TaskResponse(task_id=task_id, status="running") @app.get("/tasks/{task_id}", response_model=TaskResponse) async def get_task(task_id: str): status, result = await get_task_status(task_id) return TaskResponse(task_id=task_id, status=status, result=result) 竞品对比 特性 AutoGen CrewAI LangGraph 开发者 微软 CrewAI LangChain Agent 通信 消息传递 角色对话 图状态 工作流 轮询/选择器/DAG 顺序/层次 自定义图 代码执行 内置 内置 需集成 状态持久化 ✅ ✅ ✅ 多模态 ✅ 有限 ✅ 生态整合 Azure/M365 Zapier LangChain 结语 AutoGen 是目前功能最全面的多智能体框架之一。它提供了从简单对话到复杂工作流的完整工具链,适合构建生产级的多 Agent 系统。其微软生态整合使其在企业场景中具有天然优势,但学习曲线相对陡峭。 ...

2026-06-25 · 5 min · 884 words · 硅基 AGI 探索者
copilot studio enterprise

Microsoft Copilot Studio:企业级 Agent 构建平台

引言:低代码 Agent 构建的时代 Microsoft Copilot Studio 是微软推出的企业级 Agent 构建平台,基于 Power Platform 生态,允许组织在低代码环境中构建、部署和管理自定义 AI 智能体。2026 年版本深度集成了 GPT-5 和微软自研模型,支持多模态交互、多语言理解和深度企业系统连接。 平台架构 整体架构 ┌─────────────────────────────────────────────┐ │ Copilot Studio Portal │ ├─────────────┬──────────────┬───────────────┤ │ Low-Code │ Pro-Code │ Admin Center │ │ Builder │ Extension │ & Governance │ ├─────────────┴──────────────┴───────────────┤ │ Orchestration Layer │ │ ┌─────────┐ ┌──────────┐ ┌─────────────┐ │ │ │ Planner │ │ RAG │ │ Tool Router │ │ │ │ Engine │ │ Engine │ │ │ │ │ └─────────┘ └──────────┘ └─────────────┘ │ ├─────────────────────────────────────────────┤ │ AI Model Layer │ │ GPT-5 │ Azure OpenAI │ Small Models │ ├─────────────────────────────────────────────┤ │ Connector & Integration Layer │ │ M365 │ Dynamics │ Power Automate │ Custom │ └─────────────────────────────────────────────┘ 核心组件 组件 功能 说明 Agent Builder 可视化构建器 拖拽式构建 Agent 流程 Knowledge Base 知识库管理 支持文档、网站、SharePoint Tool Framework 工具框架 自定义 API 和 Power Automate Orchestration 编排引擎 任务规划与工具调度 Analytics 分析面板 使用统计与质量监控 Governance 治理中心 权限、合规、审计 构建第一个企业 Agent 低代码方式 通过 Copilot Studio 的可视化界面构建: ...

2026-06-25 · 5 min · 1061 words · 硅基 AGI 探索者
microsoft mai models

微软 MAI 模型家族:从 1B 到 1T 的全覆盖

引言:微软的 AI 独立宣言 2026 年 6 月 Build 大会上,微软正式发布了自研大模型家族 MAI (Microsoft AI),覆盖从 1B 到 1T 参数的全规模矩阵。这是微软首次在自研基础模型上采取如此激进的战略——不再仅仅依赖 OpenAI 的 GPT 系列,而是构建完全自主的 AI 模型体系。此举标志着微软与 OpenAI 的关系从"独家合作伙伴"进入"竞合"新阶段。 一、MAI 模型家族全览 1.1 规模矩阵 模型 参数量 类型 上下文 定位 竞品 MAI-1-Nano 1B Dense 32K 移动端/IoT Phi-4 MAI-1-Micro 3B Dense 64K 端侧/边缘 Llama 4-8B MAI-1-Small 7B Dense 128K 轻量云服务 DeepSeek V4-Lite MAI-1-Medium 32B Dense 256K 企业标准 Llama 4-70B MAI-1-Large 120B Dense 512K 高性能推理 GPT-4.5 MAI-1-XL 350B MoE (35B active) 1M 旗舰推理 GPT-5 MAI-1-Ultra 1T MoE (80B active) 2M 超大规模 GPT-5.5 MAI-Reasoner 350B MoE + 推理引擎 1M 深度推理 Claude Fable 5 MAI-Vision 120B 多模态 Dense 512K 视觉理解 Gemini 3 Pro MAI-Code 70B 代码专用 256K 软件工程 Codex 5 1.2 命名体系 微软采用统一命名规则:MAI-[版本]-[规模] ...

2026-06-25 · 6 min · 1103 words · 硅基 AGI 探索者
鲁ICP备2026018361号