告别传统开发!用 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 原生应用的第一张门票。