编辑
2025-09-27
C#
00

目录

OllamaSharp 的特点
官网
开始使用 OllamaSharp
安装
设置客户端
完整代码
列出可用模型
拉取模型并报告进度
输出信息
构建交互式聊天
与 Microsoft.Extensions.AI 一起使用
重要说明
结论

OllamaSharp 是一个强大的库,为 Ollama API 提供 .NET 绑定,使得与 Ollama 的本地和远程交互变得更加简单。本文将指导您了解 OllamaSharp 的功能、设置和使用方法,并提供详细的示例和解释。

OllamaSharp 的特点

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

官网

Markdown
https://github.com/awaescher/OllamaSharp

image.png

开始使用 OllamaSharp

安装

要开始使用,您需要通过 NuGet 安装 OllamaSharp 包。您可以在终端中使用以下命令:

Bash
dotnet add package OllamaSharp

设置客户端

image.png

完整代码

C#
using OllamaSharp; namespace AppOllamaSharp { public partial class Form1 : Form { OllamaApiClient ollama; public Form1() { InitializeComponent(); } private async void Form1_Load(object sender, EventArgs e) { await InitModelAsync(); } private async Task InitModelAsync() { var uri = new Uri("http://127.0.0.1:11434"); ollama = new OllamaApiClient(uri); var models = await ollama.ListLocalModelsAsync(); foreach (var model in models) { cboModel.Items.Add(model.Name); } } private async void btnSend_Click(object sender, EventArgs e) { await foreach (var stream in ollama.GenerateAsync(txtMessage.Text)) { txtReturn.AppendText(stream.Response); } } private void cboModel_SelectedIndexChanged(object sender, EventArgs e) { // 选择要用于后续操作的模型 ollama.SelectedModel = cboModel.Text; } } }

列出可用模型

您可以轻松列出本地可用的所有模型,使用以下代码:

C#
var models = await ollama.ListLocalModelsAsync(); foreach (var model in models) { cboModel.Items.Add(model.Name); }

拉取模型并报告进度

要拉取模型并报告进度,您可以使用以下代码片段:

C#
await foreach (var status in ollama.PullModelAsync("llama3.1:405b")) { Console.WriteLine($"{status.Percent}% - {status.Status}"); }

输出信息

生成文本完成非常简单。以下是如何做到这一点:

C#
await foreach (var stream in ollama.GenerateAsync(txtMessage.Text)) { txtReturn.AppendText(stream.Response); }

构建交互式聊天

OllamaSharp 使构建交互式聊天应用程序变得简单。以下是一个示例:

C#
using OllamaSharp; namespace AppOllamaSharpChat { internal class Program { static async Task Main(string[] args) { OllamaApiClient ollama; var uri = new Uri("http://127.0.0.1:11434"); ollama = new OllamaApiClient(uri); ollama.SelectedModel = "deepseek-r1:1.5b"; var chat = new Chat(ollama); while (true) { var message = Console.ReadLine(); await foreach (var answerToken in chat.SendAsync(message)) { Console.Write(answerToken); } } } } }

image.png

Microsoft.Extensions.AI 一起使用

OllamaSharp 还可以与 Microsoft.Extensions.AI 集成,使您能够与其他 AI 提供者(如 ChatGPT)一起使用。以下是如何设置:

安装必要的包:

Bash
dotnet add package Microsoft.Extensions.AI.Abstractions

创建一个可以在提供者之间切换的聊天客户端:

C#
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 或兼容 } }

重要说明

虽然 IOllamaApiClient 提供了许多 Ollama 特定的方法,但 IChatClientIEmbeddingGenerator 并未涵盖完整的 Ollama API 规范。然而,OllamaApiClient 实现了这三个接口:本地的 IOllamaApiClient 和 Microsoft 的 IChatClient 以及 IEmbeddingGenerator<string, Embedding<float>>,这使您可以根据需要随时将其转换为这两个接口之一。

结论

OllamaSharp 是一个强大的库,简化了将 Ollama API 集成到 .NET 应用程序中的过程。凭借其易用性、全面的 API 覆盖和实时能力,它是希望在应用程序中利用 AI 的开发人员的绝佳选择。无论您是在构建聊天应用程序还是处理模型,OllamaSharp 都提供了您成功所需的工具。

有关更多信息以及探索 OllamaSharp 的全部功能,请查看 官方文档。祝您编码愉快!

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!