告别复杂 API 调用!OllamaSharp 让 .NET 开发者轻松上手 AI,附带完整示例

115 阅读2分钟

大家好,我是深山踏红叶,今天要介绍一个名为 OllamaSharp 的库。一个用于与 Ollama API 进行交互的 C# 库, 让您轻松地与 Ollama 进行交互。 下面让我们看看是怎么来简化的。

功能

使用方法

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 是他们 IChatClientIEmbeddingGenerator 的第一个完整实现,使您能够像使用其他聊天提供商一样使用 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分享”,技术文章第一时间推送,随缘更新 , 分享一些你可能注意不到的细节