admin管理员组

文章数量:1440221

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

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

功能

  • 易于使用:仅需几行代码即可与 Ollama 交互。
  • 可靠性:支持 Microsoft Semantic Kernel、.NET Aspire 和 Microsoft.Extensions.AI。
  • API 覆盖:涵盖 Ollama 的每个 API 端点,包括聊天、嵌入、列出模型、拉取和创建新模型等。
  • 实时流式传输:直接将响应流式传输到您的应用程序。
  • 进度报告:在拉取模型等任务中提供实时进度反馈。
  • 工具引擎:使用源代码生成器提供复杂工具支持。
  • 多模态支持:支持 视觉模型。

使用方法

OllamaSharp 将每个 Ollama API 端点封装为支持响应流式传输的可等待方法。

代码语言:javascript代码运行次数:0运行复制
 <PackageReference Include="OllamaSharp" Version="5.1.2" />
代码语言:javascript代码运行次数:0运行复制
Install-Package OllamaSharp

初始化

代码语言:javascript代码运行次数:0运行复制
// 设置客户端
var uri = new Uri("http://localhost:11434");
var ollama = new OllamaApiClient(uri);

// 选择用于后续操作的模型
ollama.SelectedModel = "deepseek-r1:7b";

列出本地可用的所有模型

代码语言:javascript代码运行次数:0运行复制
var models = await ollama.ListLocalModelsAsync();

拉取模型并报告进度

代码语言:javascript代码运行次数:0运行复制
await foreach (var status in ollama.PullModelAsync("llama3.1:405b"))
    Console.WriteLine($"{status.Percent}% {status.Status}");

直接在控制台中生成补全

代码语言:javascript代码运行次数:0运行复制
await foreach (var stream in ollama.GenerateAsync("How are you today?"))
    Console.Write(stream.Response);

构建交互式聊天

代码语言:javascript代码运行次数:0运行复制
// 消息(包括角色和工具调用)将自动在聊天对象中跟踪,并可通过 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

代码语言:javascript代码运行次数:0运行复制
// 安装 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 或兼容
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-12,如有侵权请联系 cloudcommunity@tencent 删除开发者模型api对象工具

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