Microsoft 代理框架简介(预览版):让每个开发人员都能轻松使用 AI 代理

Microsoft 代理框架简介(预览版):让每个开发人员都能轻松使用 AI 代理

引言

人工智能代理(AI Agents)正逐渐成为现代软件开发的重要组成部分,它们能够结合推理、上下文和工具来追求特定目标。然而,许多开发人员在构建 AI 代理时面临复杂编排逻辑、多模型连接困难以及部署基础设施繁琐等问题。Microsoft 代理框架(Microsoft Agent Framework)的推出,旨在简化这一过程,让开发人员能够像创建 Web API 或控制台应用一样轻松构建 AI 代理。本文将详细介绍 Microsoft 代理框架的核心概念、功能特性以及如何使用它快速构建 AI 代理系统。

正文内容

代理与工作流:AI 系统的核心构建块

在深入探讨 Microsoft 代理框架之前,我们需要先理解代理(Agents)和工作流(Workflows)这两个核心概念。

代理(Agents)

代理是结合推理、上下文和工具来追求目标的系统。它们由三个关键组件组成:

  1. 推理和决策:代理需要推理能力来决定为实现其目标采取哪些行动。这通常由大型语言模型(LLM)提供支持,但也可以使用搜索算法、规划系统等其他技术。
  2. 上下文感知:上下文是为决策提供信息的外部数据或状态。由于模型没有对实时或系统特定信息的内置访问权限,因此需要额外的输入(如对话历史、知识库或企业数据)来做出明智决策。
  3. 工具使用:工具是离散的、可调用的功能,如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)

设置环境变量:

bash 复制代码
export GITHUB_TOKEN="YOUR-GITHUB-TOKEN"

步骤1:设置项目

创建新C#控制台应用并安装必要包:

bash 复制代码
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文件:

csharp 复制代码
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等)之间选择,而无需更改代理代码。

纵向扩展:编排多个代理

单个代理功能强大,但实际场景常需多个专业代理协作。例如,写作代理创建内容后,可能需要编辑代理润色或事实核查代理验证细节。

添加专业代理

csharp 复制代码
// 创建专业编辑代理
AIAgent editor = new ChatClientAgent(
    chatClient,
    new ChatClientAgentOptions
    {
        Name = "Editor",
        Instructions = "Make the story more engaging, fix grammar, and enhance the plot."
    });

构建工作流

安装工作流包:

bash 复制代码
dotnet add package Microsoft.Agents.AI.Workflows --prerelease

创建工作流连接代理:

csharp 复制代码
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 代理框架支持多种工作流模式:

  1. 顺序:代理按顺序执行,沿链传递结果
  2. 并发:多个代理并行工作
  3. 交接:根据上下文或结果转移责任
  4. 群聊:代理在共享对话空间中协作

这些灵活类型支持从简单管道到动态多代理协作的各种编排需求。

为代理赋能工具

Microsoft 代理框架使代理能轻松访问外部功能、API和服务。

创建代理工具

csharp 复制代码
[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}";

将工具连接到代理

csharp 复制代码
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集成

csharp 复制代码
// 在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集成

启用详细遥测:

csharp 复制代码
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代理的强大功能融入您的应用程序中,以更智能、更高效的方式解决业务挑战。