- Published on
Microsoft Agent Framework 完整指南 01:統一 Semantic Kernel 與 AutoGen 的未來
Table of Contents
前言:AI 開發的戰國時代
在過去的一年裡,微軟生態系的 AI 開發者往往面臨一個艱難的選擇:
- Semantic Kernel (SK):這是企業級開發的首選。它穩定、支援強型別 C#、擁有完善的過濾器(Filters)與依賴注入(DI)支援。但它原本是為了「單一 Agent」或「Plugin 呼叫」設計的,要做複雜的多代理(Multi-Agent)協作相對困難。
- AutoGen:這是 AI 研究與創新的前沿。它引入了 "Group Chat"、"Conversable Agent" 等革命性概念,讓多個 AI 像人類一樣在聊天室協作。但它的 .NET 支援一直落後於 Python,且 API 變動頻繁,難以在生產環境長期維護。
為了解決這個**「穩定 vs 創新」**的兩難,微軟推出了 Microsoft Agent Framework(預覽版)。

什麼是 Microsoft Agent Framework?
簡單來說,它是未來的統一標準。
Agent Framework = Semantic Kernel 的企業基因 + AutoGen 的協作大腦
它不是要取代 Semantic Kernel,而是建立在 SK 的基礎之上(底層許多組件仍使用 SK 的連接器),並將 AutoGen 的 Orchestration(編排) 能力標準化。
核心優勢
- 統一的抽象層:無論用 Python 還是 .NET,Agent 的定義方式趨於一致。
- 生產就緒 (Production Ready):原生支援 OpenTelemetry 遙測、分散式狀態管理。
- 向後相容:你可以直接重複使用既有的 Semantic Kernel Plugins。
核心概念:Agent vs. Workflow
在 Agent Framework 中,我們必須區分兩個極易混淆的角色:
1. AI Agent (代理人)
Agent 是「大腦」。它由 LLM 驅動,具有不確定性與自主性。
- 特性:你給它一個目標(Instruction),它自己決定該呼叫什麼工具、問什麼問題。
- 適用場景:客服對話、創意寫作、非結構化資料分析。
- 關鍵組件:
- Context:短期記憶。
- Tools:手腳(可以是 SK Plugins)。
2. Workflow (工作流程)
Workflow 是「骨架」。它由程式碼定義,具有確定性。
- 特性:路徑是預先寫死的(A -> B -> C),或者有明確的邏輯分支。
- 適用場景:固定流程的業務邏輯,如「收到訂單 -> 驗證庫存 -> 扣款 -> 寄信」。
- 關鍵組件:
- Step:流程中的每一個節點。
- Cloud Events:驅動流程前進的事件。
設計心法:盡量用 Workflow 處理「硬邏輯」,只將需要「軟邏輯」(推理、判斷)的部分交給 Agent。別讓 Agent 瞎猜你的業務規則。
C# 快速入門:打造你的第一個 Agent
讓我們看看如何用 C# 建立一個最簡單的 Agent。
1. 安裝套件
目前框架仍在預覽階段,你需要加入 Prerelease feed 或直接安裝預覽版 NuGet:
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease
dotnet add package Azure.AI.OpenAI --prerelease
2. Hello World 程式碼
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.OpenAI;
// 1. 建立連線 (推薦使用 Azure Identity)
// 比起 API Key,這更安全且符合企業規範
var client = new AzureOpenAIClient(
new Uri("https://your-resource.openai.azure.com/"),
new DefaultAzureCredential()
);
// 2. 定義 Agent
// 我們使用 ChatClient 來驅動這個 Agent
var agent = new ChatAgent(
name: "JokeBot",
client: client.GetChatClient("gpt-4o"),
instructions: "你是一個嚴肅的德國工程師,但被強迫講笑話。你的笑話要充滿技術細節且不好笑。"
);
// 3. 執行對話
var inputs = new List<ChatMessage>
{
new ChatMessage(ChatRole.User, "講一個關於由下而上(Bottom-up)程式設計的笑話")
};
await foreach (var message in agent.InvokeAsync(inputs))
{
Console.WriteLine($"[{message.Role}]: {message.Content}");
}
這個範例雖然簡單,但它展示了標準的 InvokeAsync 模式,這與我們之後要介紹的串流(Streaming)和工具呼叫(Function Calling)是一致的。
決策指南:我該選擇誰?
這是開發者最關心的問題。既然有了 Agent Framework,Semantic Kernel 還能用嗎?
| 比較項目 | Semantic Kernel (SK) | Microsoft Agent Framework |
|---|---|---|
| 定位 | 現在的穩定基石 | 未來的旗艦 |
| 適用場景 | 單一 Agent、RAG、傳統 Web API 整合 | 多 Agent 協作、複雜長時間工作流 |
| ASP.NET 整合 | ⭐⭐⭐⭐⭐ (極佳) | ⭐⭐⭐ (發展中) |
| 學習曲線 | 低 | 高 (需理解 Orchestration, Dapr 等概念) |
| API 穩定性 | 高 (不常 Breaking Change) | 低 (Preview 階段) |
結論
- 如果你現在就要上線一個企業級專案,且主要是「單一助理」或「RAG」架構:👉 請繼續使用 Semantic Kernel。它成熟、穩定,且能很好地嵌入 ASP.NET Core。
- 如果你要打造下一代 AI 應用,需要多個 AI 分工合作(例如一個寫 code,一個 review,一個寫測試):👉 請開始投資 Microsoft Agent Framework。
在下一篇,我們將深入 Agent Framework 最強大的武器 —— Azure 生態整合,看看如何利用 Durable Functions 讓你的 Agent 擁有「不死之身」。