AutoGen 核心概念
AutoGen 是微軟研究院開發的多 Agent 框架,核心思想是讓多個具有不同角色的 Agent 相互對話,共同完成複雜任務。主要角色:
- AssistantAgent:AI 驅動的助手,負責生成回應、程式碼、分析
- UserProxyAgent:代表使用者的 Agent,可執行程式碼並將結果回饋
- GroupChatManager:管理多 Agent 群組對話,決定發言順序
AutoGen 的核心優勢:自動執行程式碼、多輪自我修正、多角色分工,特別適合需要程式碼生成與驗證的場景。
基本兩 Agent 對話
import autogen
# 設定 LLM
config_list = [{"model": "gpt-4o-mini", "api_key": "YOUR_API_KEY"}]
llm_config = {"config_list": config_list, "temperature": 0}
# 建立 AssistantAgent(AI 助手)
assistant = autogen.AssistantAgent(
name="助手",
llm_config=llm_config,
system_message="你是一個 Python 程式設計專家,負責撰寫程式碼解決問題。"
)
# 建立 UserProxyAgent(執行者)
user_proxy = autogen.UserProxyAgent(
name="執行者",
human_input_mode="NEVER", # 全自動,不需人工干預
max_consecutive_auto_reply=10,
code_execution_config={
"work_dir": "coding",
"use_docker": False # 設為 True 可使用 Docker 沙箱
}
)
# 啟動對話
user_proxy.initiate_chat(
assistant,
message="請撰寫一個 Python 程式,計算 1 到 100 的質數並輸出結果。"
)多 Agent 群組對話
使用 GroupChat 讓多個專門角色的 Agent 協同工作:
import autogen
config_list = [{"model": "gpt-4o-mini", "api_key": "YOUR_API_KEY"}]
llm_config = {"config_list": config_list}
# 建立不同角色的 Agent
planner = autogen.AssistantAgent(
name="規劃師",
llm_config=llm_config,
system_message="你負責分析需求,制定解決方案的整體架構。只負責規劃,不寫程式碼。"
)
coder = autogen.AssistantAgent(
name="工程師",
llm_config=llm_config,
system_message="你是資深 Python 工程師,根據規劃師的設計實作程式碼。"
)
reviewer = autogen.AssistantAgent(
name="審查員",
llm_config=llm_config,
system_message="你負責 Code Review,找出潛在問題和改進空間。"
)
executor = autogen.UserProxyAgent(
name="執行者",
human_input_mode="NEVER",
code_execution_config={"work_dir": "coding", "use_docker": False}
)
# 建立群組對話
groupchat = autogen.GroupChat(
agents=[planner, coder, reviewer, executor],
messages=[],
max_round=12
)
manager = autogen.GroupChatManager(
groupchat=groupchat,
llm_config=llm_config
)
# 啟動群組對話
executor.initiate_chat(
manager,
message="請設計並實作一個簡單的 RESTful API,提供待辦事項管理功能。"
)自訂終止條件
# 當助手回覆包含 "TERMINATE" 時自動結束對話
user_proxy = autogen.UserProxyAgent(
name="執行者",
human_input_mode="NEVER",
max_consecutive_auto_reply=10,
is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"),
code_execution_config={"work_dir": "coding", "use_docker": False}
)
assistant = autogen.AssistantAgent(
name="助手",
llm_config=llm_config,
system_message="""你是 Python 專家。
完成任務後,在最後回覆中加上 TERMINATE 表示任務完成。"""
)人機協作模式
# 設定需要人工確認才能執行程式碼
user_proxy = autogen.UserProxyAgent(
name="使用者",
human_input_mode="ALWAYS", # 每次都詢問人工
# 或 "TERMINATE" 只在結束時詢問
code_execution_config={"work_dir": "coding"}
)
# 也可以設定白名單,允許某些指令自動執行
user_proxy = autogen.UserProxyAgent(
name="使用者",
human_input_mode="NEVER",
default_auto_reply="繼續",
code_execution_config={
"work_dir": "coding",
"last_n_messages": 3 # 只參考最近 3 條訊息中的程式碼
}
)接下來學習 MCP Server 開發,了解如何建立標準化的 AI 工具介面。