
在 .NET 生态中,本地 AI 开发长期面临依赖复杂、功能零散、部署繁琐的痛点——要么依赖 Python 环境,要么需集成多个库,要么难以实现 Agent、RAG、文档智能等高级能力。LM-Kit.NET 的出现彻底解决了这些问题,它是专为 .NET 开发者打造的全栈本地 AI SDK,单 NuGet 包集成高性能推理、多智能体编排、RAG 检索、文档处理、工具调用等所有能力,纯本地运行、零外部依赖、跨平台兼容,让 .NET 开发者无需跨界即可快速构建企业级 AI 应用。
本文将从核心特性、环境搭建、基础使用、高级实战、生产优化全流程详解 LM-Kit.NET,所有代码100%可直接复制运行,带你快速掌握 .NET 本地 AI 开发的终极方案。
LM-Kit.NET 是企业级本地 AI 全栈 SDK,基于 llama.cpp 深度优化,为 .NET(C#/VB.NET)提供开箱即用的 AI 能力,核心定位是**“Your AI. Your Data. On Your Device.”**(你的AI,你的数据,在你的设备上)。
LM-Kit.NET 不是单一的推理库,而是完整的 AI 开发平台,覆盖全场景需求:
特性 | LM-Kit.NET | LlamaSharp | Semantic Kernel(本地) |
|---|---|---|---|
依赖 | 单 NuGet 包,零外部依赖 | 需单独安装运行时 | 需集成多个本地推理库 |
功能完整性 | 全栈 AI(推理+Agent+RAG+文档) | 仅基础推理 | 需额外集成组件 |
本地部署 | 100% 纯本地,无云依赖 | 纯本地,但功能单一 | 依赖云 API 或复杂本地适配 |
工具生态 | 内置 56+ 工具,支持自定义 | 无内置工具 | 需手动实现工具 |
文档处理 | 原生支持 PDF/Word 解析、提取 | 无文档能力 | 需第三方库集成 |
上手成本 | 极低,3 行代码跑 AI | 低,仅推理 | 高,需复杂配置 |
企业级支持 | 社区版免费,商业版支持 | 社区维护 | 微软维护,但本地能力弱 |
步骤 1:创建控制台项目
dotnet new console -n LMKitDemo
cd LMKitDemo步骤 2:安装核心 NuGet 包(必装)
# 核心 SDK(包含 CPU 推理,所有平台通用)
dotnet add package LM-Kit.NET步骤 3(可选):安装 GPU 加速包
dotnet add package LM-Kit.NET.Backend.Cuda12.Windowsdotnet add package LM-Kit.NET.Backend.Metal.OSXLM-Kit.NET 支持自动下载模型,也可手动加载本地模型:
qwen3.5:4b、llama3.2:8b),首次运行自动从 Hugging Face 下载Models 文件夹新手推荐模型:
提示:模型文件属性设置为**“如果较新则复制到输出目录”**
最基础的 AI 文本生成,3 行代码完成加载 + 推理 + 输出。
using LMKit.Model;
// 1. 加载模型(自动下载或本地路径)
// 方式1:自动下载模型(推荐新手)
using var model = LM.LoadFromModelID("qwen3.5:4b");
// 方式2:手动加载本地模型
// using var model = new LM(@"Models\qwen3.5-4b-instruct-q4_k_m.gguf");
// 2. 生成文本
var prompt = "用C#写一个异步的文件下载工具,支持断点续传,带详细注释";
var response = await model.GenerateAsync(prompt, new GenerateOptions
{
MaxTokens = 1024, // 最大生成长度
Temperature = 0.3f, // 随机性(0=确定,1=随机)
StreamOutput = false // 非流式输出
});
// 3. 输出结果
Console.WriteLine("=== AI 生成结果 ===");
Console.WriteLine(response.Text);模拟 ChatGPT 流式输出,支持上下文记忆,实现真正的聊天交互。
using LMKit.Model;
using LMKit.Chat;
// 加载模型
using var model = LM.LoadFromModelID("llama3.2:8b");
// 初始化多轮对话(内置上下文管理)
var conversation = new MultiTurnConversation(model)
{
// 系统提示词:定义AI角色
SystemPrompt = """
你是一个专业的.NET技术专家,回答简洁、准确、专业,
优先提供代码示例,不啰嗦,不使用无关话术。
"""
};
Console.WriteLine("=== LM-Kit.NET 本地聊天机器人(输入 exit 退出)===");
while (true)
{
Console.Write("\n你:");
var input = Console.ReadLine();
if (input?.ToLower() == "exit") break;
if (string.IsNullOrWhiteSpace(input)) continue;
// 流式输出:逐字打印回复
Console.Write("AI:");
await foreach (var token in conversation.SubmitStreamingAsync(input))
{
Console.Write(token);
}
Console.WriteLine();
}LM-Kit.NET 核心能力——AI Agent,让模型具备“思考 - 调用工具 - 解读结果 - 输出答案”的能力,内置 56+ 工具,支持自定义工具。
using LMKit.Model;
using LMKit.Agents;
using LMKit.Agents.Tools.BuiltIn;
// 加载模型
using var model = LM.LoadFromModelID("qwen3.5:4b");
// 1. 创建 AI 智能体(内置工具:计算、日期、文件、网络)
var agent = Agent.Create(model)
.WithName("DotNetExpert")
.WithDescription("专业的.NET开发助手,支持计算、日期查询、数据处理")
// 添加内置工具
.AddTool(BuiltInTools.CalcArithmetic) // 数学计算
.AddTool(BuiltInTools.DateTimeNow) // 日期时间
.AddTool(BuiltInTools.FileRead) // 文件读取
.AddTool(BuiltInTools.TextSummarize) // 文本总结
.Build();
Console.WriteLine("=== AI 智能体(支持工具调用,输入 exit 退出)===");
while (true)
{
Console.Write("\n你:");
var input = Console.ReadLine();
if (input?.ToLower() == "exit") break;
// 智能体执行任务(自动判断是否调用工具)
Console.Write("AI:");
var result = await agent.ExecuteAsync(input,
new AgentExecutionOptions { StreamOutput = true });
// 流式输出结果
await foreach (var token in result.StreamingResponse)
{
Console.Write(token);
}
Console.WriteLine();
// 打印工具调用日志(可选)
if (result.ToolCalls.Any())
{
Console.WriteLine($"\n[工具调用]:{result.ToolCalls.Count} 次");
}
}运行效果:
DateTimeNow 和 CalcArithmetic 工具RAG(检索增强生成)是企业 AI 核心场景——让 AI 基于私有文档回答问题,LM-Kit.NET 内置完整 RAG pipeline,无需集成第三方向量库,5 行代码实现文档问答。
using LMKit.Model;
using LMKit.RAG;
using LMKit.Chat;
// 1. 加载模型(主模型 + 嵌入模型,自动下载)
using var llm = LM.LoadFromModelID("llama3.2:8b");
using var embeddingModel = LM.LoadFromModelID("bge-m3:small"); // 嵌入模型
// 2. 初始化 RAG 引擎(内置向量库)
var ragEngine = new RagEngine(embeddingModel)
{
ChunkSize = 1024, // 文档分块大小
ChunkOverlap = 128 // 分块重叠长度
};
// 3. 导入私有文档(支持 PDF/Word/TXT/Markdown)
Console.WriteLine("正在加载文档...");
ragEngine.ImportDocument(@"Documents\企业技术方案.pdf");
ragEngine.ImportDocument(@"Documents\产品手册.md");
ragEngine.ImportDocument(@"Documents\API文档.txt");
// 4. 初始化 RAG 对话
var ragChat = new RagChat(llm, ragEngine)
{
SystemPrompt = "你是文档问答助手,仅基于提供的文档内容回答,不编造信息",
TopK = 3 // 检索最相关的3个文档片段
};
// 5. 启动 RAG 问答
Console.WriteLine("=== 私有文档 RAG 问答(输入 exit 退出)===");
while (true)
{
Console.Write("\n你的问题:");
var query = Console.ReadLine();
if (query?.ToLower() == "exit") break;
Console.Write("AI 回答:");
await foreach (var token in ragChat.SubmitStreamingAsync(query))
{
Console.Write(token);
}
Console.WriteLine();
}核心优势:
// GPU 加速配置(NVIDIA/Apple Silicon)
var deviceConfig = new LM.DeviceConfiguration
{
GpuLayerCount = 35, // 卸载35层到GPU(CPU设为0)
UseCuda = true, // 启用CUDA
UseMetal = true // 启用Metal(macOS)
};
// 带进度的模型加载
using var model = new LM(
@"Models\qwen3.5-4b-instruct-q4_k_m.gguf",
deviceConfiguration: deviceConfig,
loadingProgress: progress =>
{
Console.Write($"\r加载模型:{progress:P0}");
return true; // 继续加载
});var options = new GenerateOptions
{
MaxTokens = 2048, // 最大生成长度
Temperature = 0.4f, // 随机性(代码0.1-0.3,创意0.7-1.0)
TopP = 0.9f, // 核采样,控制多样性
FrequencyPenalty = 0.1f,// 重复惩罚
StreamOutput = true, // 启用流式输出
StopSequences = new[] { "用户:", "---" } // 停止序列
};// 限制对话历史长度(避免上下文溢出)
var conversation = new MultiTurnConversation(model)
{
MaxHistoryTurns = 10, // 保留最近10轮对话
MaxContextTokens = 4096 // 总上下文token上限
};dotnet publish -c Release)LM-Kit.NET 是 .NET 生态最完善的本地 AI 开发平台,彻底解决了 .NET 开发者构建 AI 应用的痛点:单包集成、零依赖、全功能、纯本地、易部署。
从基础的文本生成、聊天机器人,到企业级的 RAG 文档问答、AI 智能体自动化,LM-Kit.NET 提供一站式解决方案,让你无需掌握 Python、C++ 等技术,仅用 C# 即可快速构建隐私安全、低延迟、高性能的 AI 应用。