Zing 论坛

正文

HuggingFace C# SDK:完整的.NET生态AI开发工具包

一个完全基于OpenAPI规范自动生成的C# SDK,提供HuggingFace Hub API、TGI推理和TEI嵌入的完整支持,与Microsoft.Extensions.AI深度集成,面向现代.NET开发。

C#.NETHuggingFaceSDKTGITEI文本嵌入语义搜索RAGMicrosoft.Extensions.AI
发布时间 2026/03/29 15:13最近活动 2026/03/29 15:23预计阅读 6 分钟
HuggingFace C# SDK:完整的.NET生态AI开发工具包
1

章节 01

导读 / 主楼:HuggingFace C# SDK:完整的.NET生态AI开发工具包

一个完全基于OpenAPI规范自动生成的C# SDK,提供HuggingFace Hub API、TGI推理和TEI嵌入的完整支持,与Microsoft.Extensions.AI深度集成,面向现代.NET开发。

2

章节 02

项目特色:自动生成与原生集成

这个SDK的最大特点是完全基于OpenAPI规范自动生成。它使用AutoSDK工具,从HuggingFace Hub、Text Generation Inference(TGI)和Text Embeddings Inference(TEI)的OpenAPI规范生成类型安全的C#代码。

这种生成方式带来了几个显著优势:

  • API一致性:SDK与官方API保持同步,新功能可以快速跟进
  • 类型安全:完整的强类型支持,编译时捕获错误
  • 现代.NET特性:支持可空性(nullability)、 trimming、NativeAOT、源生成JSON序列化

更重要的是,SDK与Microsoft.Extensions.AI深度集成,提供了IChatClient和IEmbeddingGenerator接口的完整实现,让.NET开发者可以用熟悉的抽象模式使用HuggingFace模型。

3

章节 03

三大客户端:各司其职

SDK提供了三个专门的客户端,分别对应不同的使用场景:

4

章节 04

1. HuggingFaceInferenceClient - 对话与补全

这是与TGI(Text Generation Inference)交互的客户端,支持聊天补全和文本生成。通过Microsoft.Extensions.AI的IChatClient接口,代码可以写得非常简洁:

using var client = new HuggingFaceInferenceClient(apiKey);
IChatClient chatClient = client;

var response = await chatClient.GetResponseAsync(
    [new ChatMessage(ChatRole.User, "Say hello in one word.")],
    new ChatOptions
    {
        ModelId = "Qwen/Qwen2.5-Coder-32B-Instruct",
        MaxOutputTokens = 32,
    });

Console.WriteLine(response.Text);

流式响应同样简单:

await foreach (var update in chatClient.GetStreamingResponseAsync(
    [new ChatMessage(ChatRole.User, "Say hello in one word.")],
    new ChatOptions { ModelId = "Qwen/Qwen2.5-Coder-32B-Instruct", MaxOutputTokens = 32 }))
{
    Console.Write(update.Text);
}
5

章节 05

2. HuggingFaceEmbeddingClient - 嵌入与重排序

这是与TEI(Text Embeddings Inference)交互的客户端,提供强大的文本嵌入能力:

using var client = new HuggingFaceEmbeddingClient(apiKey);
IEmbeddingGenerator<string, Embedding<float>> generator = client;

var result = await generator.GenerateAsync(
    ["Hello world", "How are you?"],
    new EmbeddingGenerationOptions
    {
        ModelId = "sentence-transformers/all-MiniLM-L6-v2",
    });

Console.WriteLine($"Embedding dimension: {result[0].Vector.Length}");

除了基础的嵌入功能,还支持:

  • 重排序(Reranking):根据查询对文本列表进行相关性排序
  • 相似度计算:计算源句子与候选句子的余弦相似度
  • Tokenization:将文本转换为token ID,或反向解码
  • 稀疏嵌入:生成稀疏向量表示
6

章节 06

3. HuggingFaceClient - Hub API

这是与HuggingFace Hub交互的客户端,用于获取模型信息、数据集元数据等:

using var client = new HuggingFaceClient(apiKey);

// 获取当前用户信息
var whoami = await client.Auth.GetWhoamiV2Async();

// 获取热门模型
var trending = await client.Models.GetTrendingAsync(limit: 5);

// 快速搜索
var search = await client.RepoSearch.CreateQuicksearchAsync(
    new Request45 { Q = "text-generation", Limit = 5, Exclude = [] });
7

章节 07

场景一:构建RAG应用

结合嵌入和重排序功能,可以轻松构建检索增强生成(RAG)系统:

using var client = new HuggingFaceEmbeddingClient(apiKey);

// 重排序文档
var results = await client.RerankAsync(
    query: "What is Deep Learning?",
    texts: [
        "Deep Learning is a subset of Machine Learning.",
        "The weather is sunny today.",
        "Neural networks are inspired by the human brain.",
    ],
    returnText: true);

// 按相关性排序
foreach (var rank in results.OrderByDescending(r => r.Score))
{
    Console.WriteLine($"[{rank.Index}] score={rank.Score:F4}");
}
8

章节 08

场景二:语义搜索

利用嵌入向量的相似度计算,实现语义级别的文本搜索:

var scores = await client.SimilarityAsync(
    inputs: new SimilarityInput
    {
        SourceSentence = "What is Deep Learning?",
        Sentences = [
            "Deep Learning is a subset of Machine Learning.",
            "The weather is sunny today.",
        ],
    });

for (var i = 0; i < scores.Count; i++)
{
    Console.WriteLine($"[{i}] similarity={scores[i]:F4}");
}