OllamaSharp 是一个强大的库,为 Ollama API 提供 .NET 绑定,使得与 Ollama 的本地和远程交互变得更加简单。本文将指导您了解 OllamaSharp 的功能、设置和使用方法,并提供详细的示例和解释。
Markdownhttps://github.com/awaescher/OllamaSharp
要开始使用,您需要通过 NuGet 安装 OllamaSharp 包。您可以在终端中使用以下命令:
Bashdotnet add package OllamaSharp
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);
}
}
}
}
}
OllamaSharp 还可以与 Microsoft.Extensions.AI 集成,使您能够与其他 AI 提供者(如 ChatGPT)一起使用。以下是如何设置:
安装必要的包:
Bashdotnet 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 特定的方法,但 IChatClient
和 IEmbeddingGenerator
并未涵盖完整的 Ollama API 规范。然而,OllamaApiClient
实现了这三个接口:本地的 IOllamaApiClient
和 Microsoft 的 IChatClient
以及 IEmbeddingGenerator<string, Embedding<float>>
,这使您可以根据需要随时将其转换为这两个接口之一。
OllamaSharp 是一个强大的库,简化了将 Ollama API 集成到 .NET 应用程序中的过程。凭借其易用性、全面的 API 覆盖和实时能力,它是希望在应用程序中利用 AI 的开发人员的绝佳选择。无论您是在构建聊天应用程序还是处理模型,OllamaSharp 都提供了您成功所需的工具。
有关更多信息以及探索 OllamaSharp 的全部功能,请查看 官方文档。祝您编码愉快!
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!