大家好,我是深山踏红叶,今天要介绍一个名为 OllamaSharp 的库。一个用于与 Ollama API 进行交互的 C# 库, 让您轻松地与 Ollama 进行交互。 下面让我们看看是怎么来简化的。
功能
- 易于使用:仅需几行代码即可与 Ollama 交互。
- 可靠性:支持 Microsoft Semantic Kernel、.NET Aspire 和 Microsoft.Extensions.AI。
- API 覆盖:涵盖 Ollama 的每个 API 端点,包括聊天、嵌入、列出模型、拉取和创建新模型等。
- 实时流式传输:直接将响应流式传输到您的应用程序。
- 进度报告:在拉取模型等任务中提供实时进度反馈。
- 工具引擎:使用源代码生成器提供复杂工具支持。
- 多模态支持:支持 视觉模型。
使用方法
OllamaSharp 将每个 Ollama API 端点封装为支持响应流式传输的可等待方法。
<PackageReference Include="OllamaSharp" Version="5.1.2" />
Install-Package OllamaSharp
初始化
// 设置客户端
var uri = new Uri("http://localhost:11434");
var ollama = new OllamaApiClient(uri);
// 选择用于后续操作的模型
ollama.SelectedModel = "deepseek-r1:7b";
列出本地可用的所有模型
var models = await ollama.ListLocalModelsAsync();
拉取模型并报告进度
await foreach (var status in ollama.PullModelAsync("llama3.1:405b"))
Console.WriteLine($"{status.Percent}% {status.Status}");
直接在控制台中生成补全
await foreach (var stream in ollama.GenerateAsync("How are you today?"))
Console.Write(stream.Response);
构建交互式聊天
// 消息(包括角色和工具调用)将自动在聊天对象中跟踪,并可通过 Messages 属性访问
var chat = new Chat(ollama);
while (true)
{
var message = Console.ReadLine();
await foreach (var answerToken in chat.SendAsync(message))
Console.Write(answerToken);
}
与 Microsoft.Extensions.AI 的使用
Microsoft 提供了一个抽象库,用于简化不同 AI 提供商的使用。如果您计划构建可能使用不同提供商(如 ChatGPT、Claude 和本地 Ollama 模型)的应用程序,这是一个非常有趣的概念。
建议您阅读他们的公告 Microsoft.Extensions.AI 预览版 —— 统一的 .NET AI 构建模块。
OllamaSharp 是他们 IChatClient 和 IEmbeddingGenerator 的第一个完整实现,使您能够像使用其他聊天提供商一样使用 Ollama。
为此,只需将 OllamaApiClient 用作 IChatClient,而不是 IOllamaApiClient。
// 安装 Microsoft.Extensions.AI.Abstractions 包
private static IChatClient CreateChatClient(Arguments arguments)
{
if (arguments.Provider.Equals("ollama", StringComparison.OrdinalIgnoreCase))
return new OllamaApiClient(arguments.Uri, arguments.Model);
else
return new OpenAIChatClient(new OpenAI.OpenAIClient(arguments.ApiKey), arguments.Model); // ChatGPT 或兼容
}
总结
使用 OllamaSharp 进行开发的过程相对简单,关键是在项目中安装并引用相应的库,然后配置并通过客户端发送请求。
欢迎关注我的公众号“Net分享”,技术文章第一时间推送,随缘更新 , 分享一些你可能注意不到的细节