wen aidev
Published on

Microsoft Agent Framework 完整指南 01:統一 Semantic Kernel 與 AutoGen 的未來

前言: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 Evolution Diagram

什麼是 Microsoft Agent Framework?

簡單來說,它是未來的統一標準。

Agent Framework = Semantic Kernel 的企業基因 + AutoGen 的協作大腦

它不是要取代 Semantic Kernel,而是建立在 SK 的基礎之上(底層許多組件仍使用 SK 的連接器),並將 AutoGen 的 Orchestration(編排) 能力標準化。

核心優勢

  1. 統一的抽象層:無論用 Python 還是 .NET,Agent 的定義方式趨於一致。
  2. 生產就緒 (Production Ready):原生支援 OpenTelemetry 遙測、分散式狀態管理。
  3. 向後相容:你可以直接重複使用既有的 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 擁有「不死之身」。

👉 前往下一篇:完整指南 02:Azure 生態整合

留言討論