Microsoft 代理框架簡介(預覽版):讓每個開發人員都能輕鬆使用 AI 代理
引言
人工智能代理(AI Agents)正逐漸成為現代軟件開發的重要組成部分,它們能夠結合推理、上下文和工具來追求特定目標。然而,許多開發人員在構建 AI 代理時面臨複雜編排邏輯、多模型連接困難以及部署基礎設施繁瑣等問題。Microsoft 代理框架(Microsoft Agent Framework)的推出,旨在簡化這一過程,讓開發人員能夠像創建 Web API 或控制枱應用一樣輕鬆構建 AI 代理。本文將詳細介紹 Microsoft 代理框架的核心概念、功能特性以及如何使用它快速構建 AI 代理系統。
正文內容
代理與工作流:AI 系統的核心構建塊
在深入探討 Microsoft 代理框架之前,我們需要先理解代理(Agents)和工作流(Workflows)這兩個核心概念。
代理(Agents)
代理是結合推理、上下文和工具來追求目標的系統。它們由三個關鍵組件組成:
- 推理和決策:代理需要推理能力來決定為實現其目標採取哪些行動。這通常由大型語言模型(LLM)提供支持,但也可以使用搜索算法、規劃系統等其他技術。
- 上下文感知:上下文是為決策提供信息的外部數據或狀態。由於模型沒有對實時或系統特定信息的內置訪問權限,因此需要額外的輸入(如對話歷史、知識庫或企業數據)來做出明智決策。
- 工具使用:工具是離散的、可調用的功能,如API、模型上下文協議(MCP)工具、代碼執行或數據查詢。它們擴展系統能力但不自行決策。
工作流(Workflows)
隨着目標複雜性增加,需要將其分解為可管理步驟,這就是工作流的用武之地。工作流將複雜目標構建為一系列步驟,協調跨人員或系統的任務以有效實現目標。例如,軟件交付工作流可能包括需求收集、設計、實現、測試和部署等階段。
代理+工作流
雖然工作流可以作為預定序列運行,但集成代理增加了動態決策和適應性,實現更智能、自主的流程管理。代理、工具和工作流都是高度可組合的,這種分層架構支持構建靈活、智能且可擴展的系統。
認識 Microsoft 代理框架
Microsoft 代理框架是一套全面的.NET庫,旨在降低代理開發複雜性。無論您構建簡單聊天機器人還是編排複雜工作流中的多個AI代理,該框架都提供所需工具:
- 用最少樣板代碼構建代理
- 輕鬆編排多代理工作流
- 使用熟悉的.NET模式託管和部署代理
- 監控生產中的代理行為
建立在經過驗證的基礎上
Microsoft 代理框架基於以下成熟技術構建:
- Semantic Kernel:提供強大的編排能力
- AutoGen:支持先進的多代理協作和研究驅動技術
- Microsoft.Extensions.AI:為.NET提供標準化AI構建塊
這種組合使框架具有可靠性、靈活性和開發者友好的API,讓您能快速高效地構建部署強大AI代理。
從簡單開始:幾分鐘內構建第一個代理
Microsoft 代理框架入門非常簡單。以下示例將構建一個生成引人入勝短篇小説的創意寫作代理。
步驟0:配置先決條件
需要準備:
- .NET 9 SDK或更高版本
- 具有模型範圍的GitHub個人訪問令牌(PAT)
設置環境變量:
export GITHUB_TOKEN="YOUR-GITHUB-TOKEN"
步驟1:設置項目
創建新C#控制枱應用並安裝必要包:
dotnet new console -o HelloWorldAgents
cd HelloWorldAgents
dotnet add package Microsoft.Agents.AI --prerelease
dotnet add package OpenAI
dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease
dotnet add package Microsoft.Extensions.AI
步驟2:編寫代理
將以下代碼添加到Program.cs文件:
using Microsoft.Extensions.AI;
using Microsoft.Agents.AI;
using OpenAI;
using OpenAI.Chat;
using System.ClientModel;
IChatClient chatClient = new ChatClient(
"gpt-4o-mini",
new ApiKeyCredential(Environment.GetEnvironmentVariable("GITHUB_TOKEN")!),
new OpenAIClientOptions { Endpoint = new Uri("https://models.github.ai/inference") })
.AsIChatClient();
AIAgent writer = new ChatClientAgent(
chatClient,
new ChatClientAgentOptions
{
Name = "Writer",
Instructions = "Write stories that are engaging and creative."
});
AgentRunResponse response = await writer.RunAsync("Write a short story about a haunted house.");
Console.WriteLine(response.Text);
運行應用程序,您就擁有了一個功能完整的AI代理!
抽象的力量
Microsoft 代理框架圍繞簡化代理開發的強大抽象設計。其核心是AIAgent抽象,它提供構建代理的統一接口。通過Microsoft.Extensions.AI標準化模型訪問(通過IChatClient接口),您可以輕鬆在不同提供商(如OpenAI、Azure OpenAI、GitHub Models等)之間選擇,而無需更改代理代碼。
縱向擴展:編排多個代理
單個代理功能強大,但實際場景常需多個專業代理協作。例如,寫作代理創建內容後,可能需要編輯代理潤色或事實核查代理驗證細節。
添加專業代理
// 創建專業編輯代理
AIAgent editor = new ChatClientAgent(
chatClient,
new ChatClientAgentOptions
{
Name = "Editor",
Instructions = "Make the story more engaging, fix grammar, and enhance the plot."
});
構建工作流
安裝工作流包:
dotnet add package Microsoft.Agents.AI.Workflows --prerelease
創建工作流連接代理:
Workflow workflow = AgentWorkflowBuilder.BuildSequential(writer, editor);
AIAgent workflowAgent = await workflow.AsAgentAsync();
AgentRunResponse workflowResponse = await workflowAgent.RunAsync("Write a short story about a haunted house.");
Console.WriteLine(workflowResponse.Text);
現在運行時,編寫者創建初始故事,編輯器自動審查改進,整個工作流對外表現為單個更強大的代理。
所有類型的工作流
Microsoft 代理框架支持多種工作流模式:
- 順序:代理按順序執行,沿鏈傳遞結果
- 併發:多個代理並行工作
- 交接:根據上下文或結果轉移責任
- 羣聊:代理在共享對話空間中協作
這些靈活類型支持從簡單管道到動態多代理協作的各種編排需求。
為代理賦能工具
Microsoft 代理框架使代理能輕鬆訪問外部功能、API和服務。
創建代理工具
[Description("Gets the author of the story.")]
string GetAuthor() => "Jack Torrance";
[Description("Formats the story for display.")]
string FormatStory(string title, string author, string story) =>
$"Title: {title}\nAuthor: {author}\n\n{story}";
將工具連接到代理
AIAgent writer = new ChatClientAgent(
chatClient,
new ChatClientAgentOptions
{
Name = "Writer",
Instructions = "Write stories that are engaging and creative.",
ChatOptions = new ChatOptions
{
Tools = [
AIFunctionFactory.Create(GetAuthor),
AIFunctionFactory.Create(FormatStory)
],
}
});
框架還支持更強大的工具,如模型上下文協議(MCP)服務器和託管工具(如代碼解釋器、Bing Grounding等)。
充滿信心部署:簡化託管
將代理投入生產不應意味着學習新部署模型。Microsoft 代理框架與您已使用的.NET託管模式無縫集成。
最小Web API集成
// 在ASP.NET最小Web API中註冊IChatClient
builder.AddOpenAIClient("chat")
.AddChatClient(Environment.GetEnvironmentVariable("MODEL_NAME") ?? "gpt-4o-mini");
// 註冊代理
builder.AddAIAgent("Writer", (sp, key) => {
var chatClient = sp.GetRequiredService<ichatclient>();
return new ChatClientAgent(
chatClient,
name: key,
instructions: "You are a creative writing assistant...",
tools: [AIFunctionFactory.Create(GetAuthor), AIFunctionFactory.Create(FormatStory)]
);
});
生產就緒功能
框架託管包括生產所需的一切:
- 通過標準.NET配置管理代理設置
- 與現有DI容器和實踐集成
- 添加身份驗證、速率限制或自定義邏輯的中間件支持
部署就像添加代理並部署到.NET運行的地方一樣簡單。
觀察和改進:內置監控
生產代理需要可觀測性。Microsoft 代理框架提供與現有可觀測性堆棧集成的全面監控。
OpenTelemetry集成
啓用詳細遙測:
writer.WithOpenTelemetry();
editor.WithOpenTelemetry();
這捕獲:
- 對話流程:可視化代理間消息移動
- 模型使用:跟蹤令牌消耗、模型選擇和成本
- 性能指標:監控響應時間和吞吐量
- 錯誤跟蹤:快速識別和調試問題
豐富的儀表板
當連接到現有可觀測性平台(如Aspire、Azure Monitor、Grafana等)時,您可以獲得代理行為的詳細洞察,幫助優化性能並在問題影響用户前識別它們。
確保質量:評估和測試
對AI系統的信任來自嚴格評估。Microsoft 代理框架可與Microsoft.Extensions.AI.Evaluations集成,幫助構建可靠、值得信賴的代理系統,支持:
- 自動化測試:作為CI/CD管道一部分運行評估套件
- 質量指標:衡量相關性、連貫性和安全性
- 迴歸檢測:部署前捕獲質量下降
- A/B測試:比較不同配置
結論
Microsoft 代理框架為.NET開發者提供了一套強大工具,顯著簡化了AI代理的開發、編排和部署過程。通過抽象複雜性和建立在成熟技術基礎上,它使得:
- 構建單個代理變得像編寫幾行代碼一樣簡單
- 多代理協作可通過直觀的工作流實現
- 部署與標準.NET應用模式無縫集成
- 生產監控開箱即用
無論您是構建簡單聊天機器人還是複雜企業自動化系統,Microsoft 代理框架都能提供所需的基礎設施和工具,讓您專注於業務邏輯而非底層複雜性。隨着AI代理在軟件開發中扮演越來越重要的角色,這一框架無疑將成為.NET生態系統中的關鍵組成部分。
現在就開始使用Microsoft 代理框架,將AI代理的強大功能融入您的應用程序中,以更智能、更高效的方式解決業務挑戰。