OllamaSharp 项目介绍
OllamaSharp 是一个为 .NET 开发者设计的工具,它提供了与 Ollama API 的绑定,使得用户可以更加轻松地在本地或远程与 Ollama 进行交互。这一工具不仅简化了与 Ollama 的交互过程,还兼容了 Microsoft 的一些扩展技术,为开发者提供了更多选择。
项目特色
- 易于使用:通过 OllamaSharp,仅需几行代码即可与 Ollama 进行交互。
- API 端点支持:全面支持所有 Ollama API 端点,包括聊天、嵌入、列出和创建模型等多种功能。
- 实时流处理:可以将响应流直接传送到应用程序中,实现即时反馈。
- 进度报告:对于模型的提取等操作,可以实时获得进度反馈。
- 支持视觉模型和工具功能调用:适用于各种复杂的模型支持需求。
使用指南
OllamaSharp 使用异步方法封装了每个 Ollama API 端点,完整支持响应流。
初始化
// 设置客户端
var uri = new Uri("http://localhost:11434");
var ollama = new OllamaApiClient(uri);
// 选择一个模型用于后续操作
ollama.SelectedModel = "llama3.1:8b";
列出本地可用的所有模型
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);
构建交互式聊天
var chat = new Chat(ollama);
while (true)
{
var message = Console.ReadLine();
await foreach (var answerToken in chat.SendAsync(message))
Console.Write(answerToken);
}
// 消息及其角色和工具调用会自动记录在 chat 对象中,并可通过 Messages 属性访问
与 Microsoft.Extensions.AI 的结合使用
微软建立了一个抽象库以简化不同 AI 提供者的使用。这对于计划使用多个提供者的开发者来说是一个非常有趣的概念,例如使用 ChatGPT、Claude 和 Ollama 的本地模型。
OllamaSharp 是第一个完整实现微软 IChatClient
和 IEmbeddingGenerator
接口的工具,这使得 Ollama 的用法类似于其他聊天供应商。
// 安装包 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 或兼容版本
}
注意:
IOllamaApiClient
提供了很多 Ollama 特定的方法,而IChatClient
和IEmbeddingGenerator
作为抽象层不会实现 Ollama API 的完整规格。然而,OllamaApiClient
实现了三个接口:原生IOllamaApiClient
以及微软的IChatClient
和IEmbeddingGenerator<string, Embedding<float>>
,允许用户在需要时将其转换为任一接口。
致谢
感谢来自 Ollama 项目 的图标和名称。我想感谢所有抽出时间改进 OllamaSharp 的贡献者,尤其是 mili-tan,我们非常感谢他们对 OllamaSharp 与 Ollama API 同步的支持。❤
通过 OllamaSharp,.NET 开发者可以以更直观、高效的方式利用 Ollama 提供的 AI 模型和功能,提升开发效率和应用性能。