AutoGen 與 Qingyun Wu:讓 AI 互相對話,才能解決真正複雜的問題

AutoGen 與 Qingyun Wu:讓 AI 互相對話,才能解決真正複雜的問題

AI 系列-深入介紹 AutoGen 創始研究員 Qingyun Wu 與她在微軟研究院打造的多智能體對話框架,從 ConversableAgent、GroupChat 到 AG2 的社群分叉,一次看懂這套讓 AI 學會「開會」的系統。


多個 AI 互相對話,能解決一個 AI 永遠做不到的事。

這不是直覺,但這是 Qingyun Wu 在 2023 年做的事。

她在微軟研究院紐約實驗室的辦公室裡,和同事 Chi Wang 及一群研究員,把一個簡單的想法工程化:與其讓一個超強的 AI 單打獨鬥,不如讓一群有各自專長的 AI 互相對話、互相糾錯、協同完成任務。

這個框架叫 AutoGen。發表後,它拿下了 ICLR 2024 LLM Agent Workshop 的最佳論文獎,GitHub Star 數迅速突破 4 萬,成為 Multi-Agent 領域被引用最多的工程框架之一。

AutoGen 解決的核心問題:複雜任務不是「更聰明的模型」能解決的,而是需要「更好的分工」。


為什麼你需要認識 Qingyun Wu?

在這個 AI Agent 系列裡,我們已經認識了幾種不同的建造者:

  • Andrew Ng 定義了 Agent 的思維框架(Reflection、Tool Use、Planning、Multi-Agent)
  • Shunyu Yao 設計了 ReAct 推理引擎
  • Harrison Chase 把 LLM 工程化、民主化(LangChain)
  • João Moura 把 Agent 角色化、組織化(CrewAI)
  • Peter Steinberger 把 AI 帶進你的日常通訊軟體(OpenClaw)

Qingyun Wu 做的事,站在更學術的位置:她把「讓 AI 學會對話」這件事,從研究論文落地成可以直接用的開源框架。

她的洞見是:LLM 的根本限制不是「不夠聰明」,而是上下文視窗有限、一個模型無法同時兼顧所有角色。解法不是更大的模型,而是讓多個小角色各司其職,透過對話協作出更好的結果。


Qingyun Wu 是誰?

學術路徑:從 NLP 到 LLM Agent 的跨越

Qingyun Wu 的學術背景紮實且聚焦:

  • 2020 年:在維吉尼亞大學取得計算機科學博士學位,導師是 Hongning Wang,研究方向為 NLP 與資訊搜尋
  • 2020–2021 年:在微軟研究院紐約實驗室擔任博士後研究員,師從 John Langford(強化學習領域大牛)
  • 2021 年至今:賓州州立大學資訊科學與技術學院 助理教授

在進入 LLM Agent 領域之前,她已在 Automated Machine Learning(AutoML)領域發表多篇頂級論文,並在 2019 年拿下 SIGIR Best Paper Award

這個背景很重要:她不是一個純粹的工程師,而是一個同時懂得如何做嚴謹研究,又能把研究轉化成工程產品的人

為什麼是「對話」?

Wu 的核心洞見來自一個觀察:人類在解決複雜問題時,很少是一個人獨自完成的,而是透過開會、討論、互相審查來達成。

那 AI 為什麼不行?

她的答案是:以前的架構不讓 AI 開會。 LangChain 解決了「接管道」,CrewAI 解決了「分角色」,但這些框架的 Agent 之間的互動,本質上是單向的資料傳遞。

AutoGen 的革新在於:讓 Agent 的溝通真正成為雙向對話(conversation),每個 Agent 都能讀取完整的對話歷史,隨時介入、糾正、追問——就像真正的團隊協作。


AutoGen 的核心積木

AutoGen 的設計哲學是「萬物皆對話(Everything is a conversation)」——複雜任務就是一場多角色的對話過程。

1. ConversableAgent:一切的基礎類別

from autogen import ConversableAgent

agent = ConversableAgent(
    name="assistant",
    system_message="你是一位專業的 Python 工程師",
    llm_config={"config_list": [{"model": "gpt-4", "api_key": "..."}]},
    human_input_mode="NEVER",  # ALWAYS / NEVER / TERMINATE
)

ConversableAgent 是所有 Agent 的基礎類別。它的核心能力只有兩件事:

  • 接收訊息(receive):根據對話歷史和角色設定,決定如何回應
  • 發送訊息(send):把回應傳給下一個 Agent

這個設計刻意保持簡單——複雜的邏輯由多個 Agent 的對話組合完成,而不是塞進一個 Agent 裡。

2. AssistantAgent + UserProxyAgent:最經典的兩人組

AutoGen 最廣為人知的設計,是這對搭檔:

from autogen import AssistantAgent, UserProxyAgent

assistant = AssistantAgent(
    name="assistant",
    llm_config={"config_list": [{"model": "gpt-4", "api_key": "..."}]},
)

user_proxy = UserProxyAgent(
    name="user_proxy",
    human_input_mode="NEVER",
    code_execution_config={"work_dir": "coding", "use_docker": False},
    is_termination_msg=lambda x: "TERMINATE" in x.get("content", ""),
)

# 啟動對話:讓 AI 自動畫出台積電股價圖
user_proxy.initiate_chat(
    assistant,
    message="用 Python 畫出台積電過去一年的股價走勢圖",
)

這個「兩人組」的分工邏輯極為優雅:

角色職責類比
AssistantAgent用 LLM 生成程式碼工程師
UserProxyAgent執行程式碼、回傳結果測試員

當程式碼有 bug,UserProxyAgent 把錯誤訊息傳回去,AssistantAgent 讀取後自動修正,直到任務完成——這就是 Andrew Ng 的 Reflection 模式在工程層面的完整實現。

3. GroupChat:讓多個 Agent 開會

真正讓 AutoGen 從眾多框架中脫穎而出的,是 GroupChat

from autogen import GroupChat, GroupChatManager

researcher = AssistantAgent(name="研究員", ...)
analyst = AssistantAgent(name="分析師", ...)
writer = AssistantAgent(name="撰稿人", ...)
critic = AssistantAgent(name="審稿人", ...)

groupchat = GroupChat(
    agents=[researcher, analyst, writer, critic],
    messages=[],
    max_round=12,
    speaker_selection_method="auto",  # 由 LLM 決定下一個發言者
)

manager = GroupChatManager(groupchat=groupchat, llm_config=llm_config)
user_proxy.initiate_chat(manager, message="分析 AI 市場並撰寫一篇投資備忘錄")

GroupChatManager 負責主持這場會議,根據 speaker_selection_method 決定誰來發言:

發言選擇策略邏輯適合場景
autoLLM 判斷最適合的下一位複雜、動態任務
round_robin輪流按順序發言固定流程任務
random隨機選擇實驗性探索
manual等待人類輸入Human-in-the-Loop
Loading Diagram...

AutoGen 生態系的分叉:一個框架,兩條路

2024 年底,發生了 AI 開源社群罕見的事件:AutoGen 的原始創作者離開了微軟,把框架帶走了一半。

Qingyun Wu 與 Chi Wang 等核心成員宣布離開微軟,並將原始 AutoGen 0.2.x 的架構另立門戶,命名為 AG2

面向AG2(社群版)Microsoft AutoGen 0.4+
領導者Qingyun Wu、Chi Wang 等原始創作者微軟工程團隊
架構哲學維持 ConversableAgent 穩定介面事件驅動 Actor Model 全面重寫
向下相容✅ 完整相容 0.2.x❌ 大量破壞性改動
整合方向獨立社群生態與 Semantic Kernel 整合
授權Apache 2.0MIT

這不只是技術分叉,而是哲學分叉

  • AG2 認為:「穩定才是生態系最大的資產,不要為了重構而破壞現有使用者的投資。」
  • Microsoft AutoGen 0.4+ 認為:「舊架構無法支撐企業級的分散式 Agent 需求,必須從底層重建。」

這個分裂,讓開發者在選擇時需要先想清楚自己的需求——如果你是既有 AutoGen 0.2 使用者,AG2 是更安全的路徑;如果你是從零開始建立企業級系統,Microsoft AutoGen 0.4 的 Actor Model 值得評估。


AutoGen vs LangGraph vs CrewAI:三種 Multi-Agent 哲學

框架核心隱喻控制方式最強場景
AutoGen開會(對話)動態,LLM 決定流程程式碼生成、迭代除錯
LangGraph狀態機(流程圖)顯式,開發者定義邊複雜工作流、需要精確控制
CrewAI公司(角色分工)半顯式,角色 + 流程固定任務分工、商業流程自動化

選擇框架的直覺法則:

  • 任務需要反覆除錯、程式碼執行 → AutoGen
  • 工作流複雜、需要分支與循環 → LangGraph
  • 任務角色明確、流程可預期 → CrewAI

經典語錄

"The key insight of AutoGen is that conversation is a powerful abstraction for multi-agent collaboration — it naturally supports feedback, correction, and iteration."

AutoGen 的核心洞見:對話是多智能體協作最強大的抽象——它天然支援回饋、糾錯與迭代。

"We don't need one superintelligent AI. We need a team of specialized agents that can check each other's work."

我們不需要一個超級 AI,我們需要一支能互相審查的專業 Agent 團隊。


實用建議:三個起步行動

步驟 1:從兩人組開始,感受對話的力量

不要一開始就用 GroupChat。先用最簡單的 AssistantAgent + UserProxyAgent 組合,讓 AI 自動執行並修正程式碼。這個「寫 → 跑 → 報錯 → 修正」的循環,是理解 AutoGen 哲學的最佳入口。

步驟 2:用 speaker_selection_method="auto" 觀察 LLM 的決策

GroupChat 的精華在於 auto 模式——讓 LLM 自己判斷下一步要誰說話。觀察這個過程,你會看到 Multi-Agent 系統如何自然浮現出分工邏輯,這比任何文件都更直覺。

步驟 3:評估 AG2 vs AutoGen 0.4 再做選擇

如果你有現有的 AutoGen 0.2 程式碼,評估遷移成本後再決定要跟 AG2 還是 Microsoft 的 0.4。從零開始的新專案,建議兩個都裝起來跑一遍 Hello World,你會直接感受到架構哲學的差異。


我的反思

看完 AutoGen 的故事,有一件事讓我印象深刻。

Qingyun Wu 不是創業者,不是 VC 明星,不是那種喜歡出現在 TechCrunch 頭條的人。她是一位學術研究員,在一篇論文裡提出了一個想法——然後這個想法被工程社群接住了。

這讓我重新思考 AI Agent 世界的分工:理論家提出模式,工程師把它落地,但真正稀缺的,是那個站在中間、同時懂得兩邊語言的人。

Qingyun Wu 的 AutoGen,以及她後來帶著核心社群另立 AG2 的決定,都是在說同一件事:她在乎的不是在微軟繼續做開發,而是那個「對話即協作」的初心要被保留下來。

回看這個系列走過的路:

  • Andrew Ng 定義為什麼 Agent 很重要
  • Shunyu Yao 設計怎麼推理
  • Harrison Chase 建立怎麼接管道
  • João Moura 解決怎麼分角色
  • Peter Steinberger 回答在哪裡互動
  • Qingyun Wu 則問了另一個問題:AI 之間,怎麼開一場有效率的會?

這六個問題,才大概拼出了 AI Agent 這個領域的輪廓。


參考資料 (References)

官方資源

學術論文

延伸閱讀

推薦影片