网易首页 > 网易号 > 正文 申请入驻

AutoGen框架入门: 5个核心概念搭建智能体协作系统

0
分享至

AutoGen 是微软研究院开源的多智能体 AI 系统框架。这个框架的设计思路很简单——让多个 AI 智能体(加上人类参与)在对话中完成复杂任务的协作和推理。

你甚至可以把它理解成一个团队聊天室,智能体们在里面讨论、争论、协作,最终得出解决方案。



AutoGen 通过创建多个专门化智能体,为每个智能体设定自己的角色、目标,来达到上面说的聊天能力,并且还能通过配置工具来获得代码执行能力。智能体之间通过消息机制通信,互相配合完成任务。

AutoGen 为什么值得关注

AutoGen 真正好玩的地方在于它实现了 AI 之间的协作。智能体可以相互辩论、推理、纠错、共同创造,整个过程不需要人工逐步编写脚本,设置可以不需要人工的参与。

相比于CrewAI,AutoGen 则把重点放在讨论、推理和演化上,而CrewAI 更关注执行层面。



你可以理解为CrewAI更像是我们现在用的工作助手,而AutoGen 更像是圆桌会议。

AutoGen 框架处理了很多底层问题,这样我们可以只专著于如何编排角色和任务。





AutoGen 定义了三类核心智能体:

  • Conversable Agent:负责管理结构化对话和预定义的交互模式
  • Assistant Agent:执行具体任务,调用工具或 LLM
  • UserProxy Agent:充当人机接口层,转发消息和响应



简单的群聊演示


from autogen import ConversableAgent, AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager
# Define AssistantAgent (AI assistant)
assistant = AssistantAgent(
name="AssistantAgent",
system_message="You are a helpful AI assistant. Suggest Python code when relevant.",
human_input_mode="NEVER" # No human input required, runs automatically
)
# Define UserProxyAgent (represents human)
user_proxy = UserProxyAgent(
name="UserProxyAgent",
human_input_mode="ALWAYS" # Requires human input
)
# Define group chat
chat = GroupChat(
agents=[assistant, user_proxy],
messages=[]
)
# Manage group chat with GroupChatManager
manager = GroupChatManager(
groupchat=chat,
llm_config={"model": "gpt-5-mini"}
)
# Start the chat
user_proxy.initiate_chat(
manager,
message="Write a short Python function to calculate factorial."
)

AutoGen 核心概念详解

1、Human-in-the-Loop(人工参与)

这个功能让人类可以在智能体执行过程中进行干预。



# Human-in-the-Loop example
from autogen import AssistantAgent, UserProxyAgent
# Step 1: Create assistant agent
assistant = AssistantAgent(
name="code_writer",
system_message="You are a helpful coding assistant."
)
# Step 2: Create user proxy with human-in-the-loop enabled
user = UserProxyAgent(
name="human_user",
human_input_mode="ALWAYS" # Enable human confirmation
)
# Step 3: Start conversation
user.initiate_chat(
assistant,
message="Write a Python function to calculate factorial."
)

2、Code Executor 的工作机制

Code Executor 负责安全执行智能体生成的代码。



# Behind the scenes
# AssistantAgent generates code:
sum([x for x in range(1, 21) if x % 2 == 0])
# PythonCodeExecutor automatically:
# - Executes safely in sandbox
# - Captures output
# - Returns result to agent
# UserProxyAgent displays result:
✅ Result: 110
# Optional: Add human approval
user = UserProxyAgent(
name="human_user",
code_execution_config={"executor": executor},
human_input_mode="ALWAYS"
)

3、工具集成方式

工具通过初始化时的 tools 参数传入智能体。

from autogen import AssistantAgent, UserProxyAgent, Tool
# Define tool function
def multiply_numbers(a: int, b: int) -> int:
"""Returns the product of two numbers."""
return a * b
# Wrap as Tool object
multiply_tool = Tool(
func=multiply_numbers,
name="multiply_tool",
description="Multiplies two numbers and returns the product."
)
# Create agent and integrate tool
assistant = AssistantAgent(
name="math_agent",
system_message="You are a math assistant. Use multiply_tool when needed.",
tools=[multiply_tool]
)
user = UserProxyAgent(name="human_user")
user.initiate_chat(
assistant,
message="Can you multiply 8 and 7?"
)

4、多智能体协作模式

AutoGen 对话系统的核心特征是支持多智能体协作对话模式。

# Example: Multi-agent conversational pattern
from autogen import AssistantAgent, ReviewerAgent, UserProxyAgent, PythonCodeExecutor
executor = PythonCodeExecutor()
# Coder agent
coder = AssistantAgent(
name="coder_agent",
system_message="You are a code-writing assistant."
)
# Reviewer agent
reviewer = ReviewerAgent(
name="reviewer_agent",
system_message="You are a code reviewer. Check logic and security."
)
# User proxy
user = UserProxyAgent(
name="human_user",
human_input_mode="TERMINATE",
code_execution_config={"executor": executor}
)
def run_multi_agent_workflow(prompt: str):
coder_response = coder.chat_with(user, message=prompt)
print("Coder ->", coder_response["content"])
reviewer_response = reviewer.review(code={"code": coder_response["content"]})
print("Reviewer ->", reviewer_response["content"])
if "SUGGEST_CHANGES" in reviewer_response["content"]:
revision = coder.chat_with(reviewer, message=reviewer_response["content"])
final_code = revision["content"]
else:
final_code = coder_response["content"]
print("Waiting for human approval...")
if not user.get_human_approval(final_code):
print("Human rejected execution.")
return
exec_result = executor.execute(final_code)
print("Execution result ->", exec_result["output"])
if __name__ == "__main__":
run_multi_agent_workflow("Write a Python function prime_factors(n).")

这个例子展示了多智能体协作的几个关键点:Coder、Reviewer、User 各司其职完成协作,然后通过Reviewer 把关代码的安全性和质量,HITL 模式给人类最终审批权,最后可以通过Code Executor 在沙箱环境安全执行代码

5、会话终止机制

会话会在满足终止条件时结束,这样一个整个的”会议“就结束了

from autogen import AssistantAgent, UserProxyAgent
def is_termination_msg(message):
"""Returns True when message contains TERMINATE keyword."""
return "TERMINATE" in message["content"].upper()
assistant = AssistantAgent(
name="helper_agent",
system_message="Stop when receiving 'TERMINATE'."
)
user = UserProxyAgent(
name="human_user",
is_termination_msg=is_termination_msg
)
user.initiate_chat(assistant, message="Hello, explain recursion in simple terms.")
assistant.send({"role": "user", "content": "Thanks, that's clear. TERMINATE"})

总结

AutoGen 提供了构建复杂 AI 协作系统的完整支持,覆盖了角色结构、通信机制、人工参与、工具集成、代码执行和多智能体协作设计等各个方面。框架把底层复杂度封装得很好,开发者可以专注在业务逻辑和智能体设计上。

https://avoid.overfit.cn/post/a50b2cf5363046739250c9c284421d2f

作者:Sonika

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
牛鬼蛇神现原形!刘欢女儿大婚不到24小时,恶心的一幕出现了

牛鬼蛇神现原形!刘欢女儿大婚不到24小时,恶心的一幕出现了

牛牛叨史
2025-10-31 14:32:11
开房事后临时涨价,男子拒付,女子谎报遭强奸被判12个月缓刑监视

开房事后临时涨价,男子拒付,女子谎报遭强奸被判12个月缓刑监视

可达鸭面面观
2025-10-29 10:33:02
“荒诞”的事一直在发生,老百姓还能撑多久?

“荒诞”的事一直在发生,老百姓还能撑多久?

槽三刀
2025-11-02 22:33:59
保级大战踢成了友谊赛,乔老板的赢球奖不能只发给青岛海牛

保级大战踢成了友谊赛,乔老板的赢球奖不能只发给青岛海牛

姜大叔侃球
2025-11-02 17:55:47
最快美术生,李大林2小时11分26秒获得北马国内男子组冠军

最快美术生,李大林2小时11分26秒获得北马国内男子组冠军

懂球帝
2025-11-02 12:39:30
乌克兰特种部队机降红军城后遭团灭!俄方不解:怎么会这样用兵?

乌克兰特种部队机降红军城后遭团灭!俄方不解:怎么会这样用兵?

阿龙聊军事
2025-11-02 19:19:15
最可能对俄开战的10国,大鹅的世仇占一半,前三名和大鹅必有一战

最可能对俄开战的10国,大鹅的世仇占一半,前三名和大鹅必有一战

黑洞观星
2025-11-01 16:10:09
医院抓小三后续:男子年入百万,单位电话被打爆,原配身份有来头

医院抓小三后续:男子年入百万,单位电话被打爆,原配身份有来头

鋭娱之乐
2025-11-02 08:22:31
医生提醒:70岁以上老人,宁吃热乎馒头喝稀粥,也别碰4类食物

医生提醒:70岁以上老人,宁吃热乎馒头喝稀粥,也别碰4类食物

医学原创故事会
2025-11-02 23:46:04
有人账户余额全没了!警方紧急提醒:卸载!卸载!内江人注意!

有人账户余额全没了!警方紧急提醒:卸载!卸载!内江人注意!

创作者_1479191106636
2025-11-02 20:13:51
复出即巅峰!全红婵时隔183天王者归来,夺冠实至名归,超级自信

复出即巅峰!全红婵时隔183天王者归来,夺冠实至名归,超级自信

君马体育
2025-11-03 04:49:55
德转列右边锋身价榜:亚马尔2亿欧居首,萨卡第二奥利塞第三

德转列右边锋身价榜:亚马尔2亿欧居首,萨卡第二奥利塞第三

懂球帝
2025-11-03 02:51:32
紫牛头条|土木工程硕士摆摊卖创意烧饼,“小孩哥”“小孩姐”成了他最忠实的粉丝

紫牛头条|土木工程硕士摆摊卖创意烧饼,“小孩哥”“小孩姐”成了他最忠实的粉丝

扬子晚报
2025-11-02 22:05:59
孔蒂质问小法:你们赛前就是这样准备的吗?你教队员假摔了吗

孔蒂质问小法:你们赛前就是这样准备的吗?你教队员假摔了吗

雷速体育
2025-11-02 12:47:23
别再可怜李咏了!离世7年后医生揭秘离世真相,难怪选择葬身美国

别再可怜李咏了!离世7年后医生揭秘离世真相,难怪选择葬身美国

东方不败然多多
2025-10-28 09:12:19
成“老赖”不到72小时,于谦资产被扒底朝天,杨议的话有人信了

成“老赖”不到72小时,于谦资产被扒底朝天,杨议的话有人信了

科学发掘
2025-10-31 14:06:52
220亿即将用尽?深铁对万科的借款加上了额度和增信要求

220亿即将用尽?深铁对万科的借款加上了额度和增信要求

观点机构
2025-11-03 00:30:14
趁着不少人还在观望,中国家长迅速出手,不到300万把文京区卷成“新海淀”

趁着不少人还在观望,中国家长迅速出手,不到300万把文京区卷成“新海淀”

掘金日本房产
2025-11-02 18:05:23
高中时期你经历过哪些炸裂事迹?网友:大家的青春都这么污的吗

高中时期你经历过哪些炸裂事迹?网友:大家的青春都这么污的吗

带你感受人间冷暖
2025-10-03 00:20:08
夺冠,全红婵还能回国家队?复出首秀夺冠,谁注意她体型变化

夺冠,全红婵还能回国家队?复出首秀夺冠,谁注意她体型变化

乐聊球
2025-11-02 21:45:47
2025-11-03 05:43:00
deephub incentive-icons
deephub
CV NLP和数据挖掘知识
1817文章数 1432关注度
往期回顾 全部

科技要闻

10月零跑突破7万辆,小鹏、蔚来超4万辆

头条要闻

马来西亚首富之子买上海大平层 449平米1.17亿元

头条要闻

马来西亚首富之子买上海大平层 449平米1.17亿元

体育要闻

这个日本人,凭啥值3.25亿美元?

娱乐要闻

陈道明被王家卫说他是阴阳同体的极品

财经要闻

段永平捐了1500万元茅台股票!本人回应

汽车要闻

神龙汽车推出“发动机终身质保”政策

态度原创

手机
家居
房产
艺术
军事航空

手机要闻

华为Mate80风扇版确认:五款机型同台竞技,18号见!

家居要闻

吸睛艺术 富有传奇色彩

房产要闻

中粮(三亚)国贸中心ITC首期自贸港政策沙龙圆满举行

艺术要闻

瓦迪斯瓦夫·谢维尼茨基:19世纪波兰杰出的画家

军事要闻

俄在日本海演习击沉假想敌潜艇

无障碍浏览 进入关怀版