章节 01
导读 / 主楼:HuggingFace C# SDK:完整的.NET生态AI开发工具包
一个完全基于OpenAPI规范自动生成的C# SDK,提供HuggingFace Hub API、TGI推理和TEI嵌入的完整支持,与Microsoft.Extensions.AI深度集成,面向现代.NET开发。
正文
一个完全基于OpenAPI规范自动生成的C# SDK,提供HuggingFace Hub API、TGI推理和TEI嵌入的完整支持,与Microsoft.Extensions.AI深度集成,面向现代.NET开发。
章节 01
一个完全基于OpenAPI规范自动生成的C# SDK,提供HuggingFace Hub API、TGI推理和TEI嵌入的完整支持,与Microsoft.Extensions.AI深度集成,面向现代.NET开发。
章节 02
这个SDK的最大特点是完全基于OpenAPI规范自动生成。它使用AutoSDK工具,从HuggingFace Hub、Text Generation Inference(TGI)和Text Embeddings Inference(TEI)的OpenAPI规范生成类型安全的C#代码。
这种生成方式带来了几个显著优势:
更重要的是,SDK与Microsoft.Extensions.AI深度集成,提供了IChatClient和IEmbeddingGenerator接口的完整实现,让.NET开发者可以用熟悉的抽象模式使用HuggingFace模型。
章节 03
SDK提供了三个专门的客户端,分别对应不同的使用场景:
章节 04
这是与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);
}
章节 05
这是与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}");
除了基础的嵌入功能,还支持:
章节 06
这是与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 = [] });
章节 07
结合嵌入和重排序功能,可以轻松构建检索增强生成(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}");
}
章节 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}");
}