用 Semantic Kernel 在 .NET 中构建你的第一个 AI 智能体(Agent)

告别传统开发!用 Semantic Kernel 在 .NET 中构建你的第一个 AI 智能体(Agent)

关键词:Semantic Kernel、.NET、AI Agent、大模型、智能体、C#

在传统的软件开发中,我们习惯于"写死逻辑"------if/else、状态机、规则引擎,程序只能按照我们预设的路径执行。但在大模型时代,AI 智能体(AI Agent) 正在颠覆这一范式:程序不再是被动执行指令,而是能够理解目标、规划步骤、调用工具、自主完成任务

微软推出的 Semantic Kernel(SK),正是为 .NET 开发者量身打造的 AI 编排 SDK。它让你可以用熟悉的 C#,快速构建具备"思考能力"的 AI 智能体。

本文将手把手带你,在 .NET 中构建你的第一个 AI Agent


一、什么是 Semantic Kernel?

Semantic Kernel ​ 是一个轻量级、开源的 AI 编排框架,由微软推出,支持 .NET、Python 和 Java

它的核心能力是:

将大语言模型(LLM)与你的业务代码、插件、记忆和外部工具无缝连接

你可以把 Semantic Kernel 理解为:

AI 的"操作系统" + 中间件

它帮你解决以下问题:

  • 如何与 OpenAI / Azure OpenAI 高效通信
  • 如何让 AI 调用你现有的 C# 方法
  • 如何让 AI 记住上下文(Memory)
  • 如何让 AI 自动规划多步任务(Planner / Agent)

二、AI Agent 到底是什么?

一个真正的 AI Agent​ 通常具备以下能力:

能力 说明
目标理解 理解用户的自然语言意图
规划 将复杂任务拆解为可执行的步骤
工具调用 调用 API、数据库、本地方法
记忆 记住历史对话或业务上下文
反思 根据执行结果调整策略

在 Semantic Kernel 中,Agent 本质上就是:

Kernel + 插件(Plugins) + 提示词(Prompts) + 模型


三、准备工作

1. 环境要求

  • .NET 8 SDK
  • 一个 IDE(Visual Studio 2022 / Rider / VS Code)
  • 一个 LLM 服务(推荐 Azure OpenAI 或 OpenAI)

2. 创建项目

复制代码
dotnet new console -n MyFirstAgent
cd MyFirstAgent

3. 安装 NuGet 包

复制代码
dotnet add package Microsoft.SemanticKernel

如果你使用 Azure OpenAI,也可以安装:

复制代码
dotnet add package Microsoft.SemanticKernel.Connectors.AzureOpenAI

四、创建你的第一个 Kernel

Kernel 是 Semantic Kernel 的核心容器。

复制代码
using Microsoft.SemanticKernel;

var builder = Kernel.CreateBuilder();

// 使用 OpenAI
builder.AddOpenAIChatCompletion(
    modelId: "gpt-4o",
    apiKey: "你的OpenAIKey"
);

// 如果使用 Azure OpenAI
// builder.AddAzureOpenAIChatCompletion(
//     deploymentName: "gpt-4o",
//     endpoint: "https://xxx.openai.azure.com/",
//     apiKey: "你的AzureKey"
// );

var kernel = builder.Build();

✅ 到这里,你的 AI 内核已经准备好了。


五、让 AI 调用你的代码(Plugin)

Agent 的强大之处在于:它不只是聊天,而是能干活

1. 定义一个插件(Plugin)

在 SK 中,插件就是一个普通的 C# 类。

复制代码
public class WeatherPlugin
{
    [KernelFunction]
    [Description("获取指定城市的当前天气")]
    public string GetWeather(
        [Description("城市名称,如 北京")] string city)
    {
        // 这里可以调用真实天气 API
        return $"{city} 的天气是:晴,25℃";
    }
}

2. 注册插件到 Kernel

复制代码
kernel.Plugins.AddFromType<WeatherPlugin>();

六、构建你的第一个 AI Agent

1. 创建 Agent 的"系统提示词"

提示词决定了 Agent 的性格和能力。

复制代码
var systemPrompt = """
你是一个智能助手,可以帮助用户查询天气。
当用户询问天气时,你必须调用 WeatherPlugin 获取真实天气数据。
不要编造天气信息。
""";

2. 创建 Chat Completion Service

复制代码
var chatService = kernel.GetRequiredService<IChatCompletionService>();

var history = new ChatHistory();
history.AddSystemMessage(systemPrompt);

3. 启动对话循环

复制代码
while (true)
{
    Console.Write("用户 > ");
    var input = Console.ReadLine();
    if (string.IsNullOrWhiteSpace(input)) break;

    history.AddUserMessage(input);

    // 让 AI 自动决定是否调用插件
    var result = await kernel.InvokePromptAsync(
        input,
        new KernelArguments
        {
            { "history", history }
        }
    );

    Console.WriteLine($"Agent > {result}");
}

🎉 恭喜!你已经构建了一个可以调用工具的 AI Agent!

当你问:

"北京天气怎么样?"

Agent 会自动调用 WeatherPlugin,而不是瞎编答案。


七、让 Agent 更"聪明":自动函数调用(Auto Function Calling)

在 Semantic Kernel 中,你可以开启 自动函数调用,让模型自己决定何时调用插件。

复制代码
var settings = new OpenAIPromptExecutionSettings
{
    ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions
};

var result = await chatService.GetChatMessageContentAsync(
    history,
    settings,
    kernel
);

✅ 这意味着:

你不需要手动判断 AI 是否需要调用工具,模型自己会决定。


八、进阶:给 Agent 加上"记忆"

Agent 如果只是"金鱼记忆",体验会非常差。

Semantic Kernel 提供了 Memory​ 能力(基于向量数据库):

  • 记住用户偏好
  • 记住历史对话
  • 检索知识库

示例思路:

复制代码
builder.AddAzureAISearchTextEmbeddingGeneration();
kernel.AddMemoryStore(new VolatileMemoryStore());

结合 ISemanticTextMemory,你的 Agent 就能做到:

"上次你说过喜欢晴天,我帮你留意了。"


九、为什么选择 Semantic Kernel?

对比项 Semantic Kernel LangChain
语言 原生 C# Python 为主
生态 深度集成 .NET 通用
性能 中等
企业支持 微软官方 社区为主
学习曲线 对 .NET 开发者友好 较陡

对于 .NET 技术栈的企业和开发者,Semantic Kernel 是目前构建 AI Agent 的最佳选择。


十、总结

通过本文,你已经学会了:

✅ 什么是 Semantic Kernel

✅ 什么是 AI Agent

✅ 如何在 .NET 中创建 Kernel

✅ 如何编写 Plugin 让 AI 调用你的代码

✅ 如何构建并运行一个真正的 AI Agent

**传统开发正在被重构。**​

未来的应用,不再是"人适应软件",而是"软件理解人"。

而 Semantic Kernel,就是你通往 AI 原生应用的第一张门票。

相关推荐
EterNity_TiMe_43 分钟前
一个网页管理多种远程连接:Docker 部署 Next Terminal 与资产审计
运维·人工智能·docker·ai·容器
YakProject43 分钟前
如何让 AI Agent 跑得更快???
人工智能·测试工具·网络安全·agent·yakit·yaklang
硅谷秋水44 分钟前
ImageWAM:世界-动作模型真的需要视频生成,还是只需要图像编辑?
人工智能·深度学习·计算机视觉·语言模型·机器人·音视频
狂师1 小时前
AI 测试丨一句指令生成测试报告,带失败截图、操作录屏、Trace、日志,这套 Skill 思路可以直接抄...
人工智能·开源·测试
%471 小时前
DAY42
人工智能·深度学习·计算机视觉
七仔啊1 小时前
C#、.NET 、ASP.NET Core、Visual Studio全系列快速入门
c#·asp.net·.net
艾莉丝努力练剑1 小时前
【AI大模型接入SDK】C++日志体系与spdlog封装的理论部分
开发语言·c++·ide·人工智能·学习·面试·trae
墨染天姬1 小时前
[人工智能训练师]生成对抗网络(GAN)
人工智能·神经网络·生成对抗网络
RisunJan1 小时前
AI新闻速递(2026-08-25)
人工智能