目录

功能

使用方法

初始化

列出本地可用的所有模型

拉取模型并报告进度

直接在控制台中生成补全

构建交互式聊天

与 Microsoft.Extensions.AI 的使用


 

大家好,我是深山踏红叶,今天要介绍一个名为 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 或兼容
}

引入地址 

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐