admin管理员组文章数量:1034942
Ollama系列06:C#使用OllamaSharp集成Ollama服务
本文是Ollama系列教程的第6篇,主要介绍如何通过SDK将ollama集成到c#程序中。
Ollama 提供了HTTP API的访问,如果需要使用SDK集成到项目中,需要引用第三方库OllamaSharp
,直接使用nuget进行安装即可。
功能亮点
- 简单易用:几行代码就能玩转Ollama
- 值得信赖:已为Semantic Kernal、.NET Aspire和Microsoft.Extensions.AI提供支持
- 全接口覆盖:支持所有Ollama API接口,包括聊天对话、嵌入生成、模型列表查看、模型下载与创建等
- 实时流传输:直接将响应流推送到您的应用
- 进度可视化:实时反馈模型下载等任务的进度状态
- 工具引擎:通过源码生成器提供强大的工具支持
- 多模态能力:支持视觉模型处理
调用示例
初始化client
代码语言:javascript代码运行次数:0运行复制// set up the client
var uri = new Uri("http://localhost:11434");
var ollama = new OllamaApiClient(uri);
获取模型列表
代码语言:javascript代码运行次数:0运行复制// list models
var models = await ollama.ListLocalModelsAsync();
if (models != null && models.Any())
{
Console.WriteLine("Models: ");
foreach (var model in models)
{
Console.WriteLine(" " + model.Name);
}
}
创建对话
代码语言:javascript代码运行次数:0运行复制// chat with ollama
var chat = new Chat(ollama);
Console.WriteLine();
Console.WriteLine($"Chat with {ollama.SelectedModel}");
while (true)
{
var currentMessageCount = chat.Messages.Count;
Console.Write(">>");
var message = Console.ReadLine();
await foreach (var answerToken in chat.SendAsync(message, Tools))
Console.Write(answerToken);
Console.WriteLine();
// find the latest message from the assistant and possible tools
var newMessages = chat.Messages.Skip(currentMessageCount - 1);
foreach (var newMessage in newMessages)
{
if (newMessage.ToolCalls?.Any() ?? false)
{
Console.WriteLine("\nTools used:");
foreach (var function in newMessage.ToolCalls.Where(t => t.Function != null).Select(t => t.Function))
{
Console.WriteLine($" - {function!.Name}");
Console.WriteLine($" - parameters");
if (function?.Arguments is not null)
{
foreach (var argument in function.Arguments)
Console.WriteLine($" - {argument.Key}: {argument.Value}");
}
}
}
if (newMessage.Role.GetValueOrDefault() == OllamaSharp.Models.Chat.ChatRole.Tool)
Console.WriteLine($" - results: \"{newMessage.Content}\"");
}
}
Tools
如果是LLM是大脑,那么工具就是四肢,通过工具我们能具备LLM与外界交互的能力。
定义工具:
代码语言:javascript代码运行次数:0运行复制/// <summary>
/// Gets the current datetime
/// </summary>
/// <returns>The current datetime</returns>
[OllamaTool]
public static string GetDateTime() => $"{DateTime.Now: yyyy-MM-dd HH:mm:ss ddd}";
使用工具:
代码语言:javascript代码运行次数:0运行复制public static List<object> Tools { get; } = [
new GetDateTimeTool(),
];
await chat.SendAsync(message, Tools)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-25,如有侵权请联系 cloudcommunity@tencent 删除工具接口模型c#服务Ollama系列06:C#使用OllamaSharp集成Ollama服务
本文是Ollama系列教程的第6篇,主要介绍如何通过SDK将ollama集成到c#程序中。
Ollama 提供了HTTP API的访问,如果需要使用SDK集成到项目中,需要引用第三方库OllamaSharp
,直接使用nuget进行安装即可。
功能亮点
- 简单易用:几行代码就能玩转Ollama
- 值得信赖:已为Semantic Kernal、.NET Aspire和Microsoft.Extensions.AI提供支持
- 全接口覆盖:支持所有Ollama API接口,包括聊天对话、嵌入生成、模型列表查看、模型下载与创建等
- 实时流传输:直接将响应流推送到您的应用
- 进度可视化:实时反馈模型下载等任务的进度状态
- 工具引擎:通过源码生成器提供强大的工具支持
- 多模态能力:支持视觉模型处理
调用示例
初始化client
代码语言:javascript代码运行次数:0运行复制// set up the client
var uri = new Uri("http://localhost:11434");
var ollama = new OllamaApiClient(uri);
获取模型列表
代码语言:javascript代码运行次数:0运行复制// list models
var models = await ollama.ListLocalModelsAsync();
if (models != null && models.Any())
{
Console.WriteLine("Models: ");
foreach (var model in models)
{
Console.WriteLine(" " + model.Name);
}
}
创建对话
代码语言:javascript代码运行次数:0运行复制// chat with ollama
var chat = new Chat(ollama);
Console.WriteLine();
Console.WriteLine($"Chat with {ollama.SelectedModel}");
while (true)
{
var currentMessageCount = chat.Messages.Count;
Console.Write(">>");
var message = Console.ReadLine();
await foreach (var answerToken in chat.SendAsync(message, Tools))
Console.Write(answerToken);
Console.WriteLine();
// find the latest message from the assistant and possible tools
var newMessages = chat.Messages.Skip(currentMessageCount - 1);
foreach (var newMessage in newMessages)
{
if (newMessage.ToolCalls?.Any() ?? false)
{
Console.WriteLine("\nTools used:");
foreach (var function in newMessage.ToolCalls.Where(t => t.Function != null).Select(t => t.Function))
{
Console.WriteLine($" - {function!.Name}");
Console.WriteLine($" - parameters");
if (function?.Arguments is not null)
{
foreach (var argument in function.Arguments)
Console.WriteLine($" - {argument.Key}: {argument.Value}");
}
}
}
if (newMessage.Role.GetValueOrDefault() == OllamaSharp.Models.Chat.ChatRole.Tool)
Console.WriteLine($" - results: \"{newMessage.Content}\"");
}
}
Tools
如果是LLM是大脑,那么工具就是四肢,通过工具我们能具备LLM与外界交互的能力。
定义工具:
代码语言:javascript代码运行次数:0运行复制/// <summary>
/// Gets the current datetime
/// </summary>
/// <returns>The current datetime</returns>
[OllamaTool]
public static string GetDateTime() => $"{DateTime.Now: yyyy-MM-dd HH:mm:ss ddd}";
使用工具:
代码语言:javascript代码运行次数:0运行复制public static List<object> Tools { get; } = [
new GetDateTimeTool(),
];
await chat.SendAsync(message, Tools)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-25,如有侵权请联系 cloudcommunity@tencent 删除工具接口模型c#服务本文标签: Ollama系列06C使用OllamaSharp集成Ollama服务
版权声明:本文标题:Ollama系列06:C#使用OllamaSharp集成Ollama服务 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1748152558a2261211.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论