You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#/VB.NET中用Microsoft Semantic Kernel加载Huggingface模型

在C#/.NET中通过Semantic Kernel加载本地Hugging Face LLM的实现步骤

方案一:借助Ollama托管本地模型(推荐)

这种方式无需复杂的模型加载代码,通过Ollama将本地模型转为HTTP服务,再用Semantic Kernel对接,操作门槛更低。

步骤1:部署本地模型服务

  • 安装Ollama工具,拉取适合本地运行的量化模型(如mistral或llama2:7b-chat-q4_0),终端执行:
    ollama pull mistral
    
  • 启动本地模型服务:
    ollama serve
    
    服务默认运行在http://localhost:11434,无需额外配置即可兼容OpenAI API格式。

步骤2:安装Semantic Kernel依赖包

在.NET项目中安装以下NuGet包:

Install-Package Microsoft.SemanticKernel
Install-Package Microsoft.SemanticKernel.Connectors.OpenAI

步骤3:编写C#调用代码

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.ChatCompletion;

// 构建Kernel并配置本地模型端点
var kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddOpenAIChatCompletion(
    modelId: "mistral", // 对应Ollama拉取的模型名称
    apiKey: "ollama", // Ollama无需真实密钥,填任意字符串即可
    endpoint: new Uri("http://localhost:11434/v1")
);
var kernel = kernelBuilder.Build();

// 获取聊天完成服务并发起对话
var chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();
var chatHistory = new ChatHistory();
chatHistory.AddUserMessage("解释一下面向对象编程的三大特性");

var response = await chatCompletionService.GetChatMessageContentAsync(chatHistory);
Console.WriteLine(response.Content);

方案二:直接通过Hugging Face .NET库加载本地模型

这种方式无需额外服务,直接在代码中加载本地模型文件,但需要处理模型兼容性和硬件资源限制。

步骤1:安装必要依赖包

Install-Package Microsoft.SemanticKernel
Install-Package HuggingFace.Transformers
Install-Package Microsoft.ML.OnnxRuntime

步骤2:准备本地模型文件

从Hugging Face Hub下载完整的模型文件(包含config.json、model.onnx等核心文件),保存到本地目录(如./local-models/mistral-7b-q4)。

步骤3:编写C#加载与调用代码

using Microsoft.SemanticKernel;
using HuggingFace.Transformers;
using Microsoft.SemanticKernel.PromptTemplates.Handlebars;

// 初始化Semantic Kernel
var kernel = Kernel.CreateBuilder().Build();

// 加载本地模型(指定CPU/GPU推理,GPU需配置CUDA环境)
var textGenModel = new TextGenerationModel(
    modelPath: "./local-models/mistral-7b-q4",
    onnxRuntimeProvider: "CPU"
);

// 将模型注册为Semantic Kernel的聊天服务
kernel.Services.AddSingleton<IChatCompletionService>(new HuggingFaceChatCompletionService(textGenModel));

// 创建Prompt模板并执行推理
var promptFunction = kernel.CreateFunctionFromPrompt(
    "{{$userQuery}}",
    new HandlebarsPromptTemplateFactory()
);
var result = await kernel.InvokeAsync(promptFunction, new() { { "userQuery", "推荐一本适合新手的Python入门书籍" } });
Console.WriteLine(result.ToString());

注意事项

  • 本地模型对硬件要求较高,7B参数的量化模型至少需要8GB以上内存,优先选择Q4/Q5量化版本减少资源占用。
  • 方案二中的HuggingFace.Transformers库对部分新模型的支持可能有限,遇到兼容性问题建议切换方案一。
  • 确保项目使用.NET 6.0及以上版本,Semantic Kernel对低版本.NET支持不足。

内容的提问来源于stack exchange,提问作者Xennon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:42:20