当前位置: 首页 > news >正文

C#使用Semantic Kernel:接入本地deepseek-r1

安装Ollama

1.下载Ollama

  • 访问Ollama官网(https://ollama.com),选择适合你操作系统的版本进行下载。

  • 对于Linux用户,可以通过以下命令安装:

curl -fsSL https://ollama.com/install.sh | sudo bash    sudo systemctl start ollama 

2.验证安装

    • 安装完成后,在终端输入ollama -v,若显示版本号(如ollama version is 0.5.7),则说明安装成功。

    • 你还可以在浏览器中访问http://localhost:11434/,确认服务已启动。

    部署DeepSeek模型

    1. 选择模型版本
    • 访问Ollama官网的模型库(https://ollama.com/library/deepseek-r1),选择适合你硬件配置的DeepSeek模型版本。例如:

      • `deepseek-r1:1.5b`:适合低端设备。
      • `deepseek-r1:7b`:适合中端设备。
      • `deepseek-r1:14b`:适合高端设备。
      • `deepseek-r1:32b`:适合科研级设备。
    1. 下载并运行模型

     ollama run deepseek-r1:1.5b 

    1. 验证模型

    curl http://localhost:11434/api/chat -d '{"model": "deepseek-r1:1.5b", "messages": [{ "role": "user", "content": "你好" }]}'

    安装 SK 及 ollama connector

    首先在本地创建一个 Console 项目,然后安装以下包:

    dotnet add package Microsoft.SemanticKernel --version 1.21.1
    dotnet add package Microsoft.SemanticKernel.Connectors.Ollama --version 1.21.1-alpha

    配置 Ollama 服务

    接下来,我们需要配置 Ollama 服务的端点和模型 ID ,并添加 Ollama 的聊天服务:

    var endpoint = new Uri("http://localhost:11434");
    var modelId = "deepseek-r1:1.5b";
    
    var builder = Kernel.CreateBuilder();
    #pragma warning disable SKEXP0070 
    builder.Services.AddScoped<IChatCompletionService>(_ => new OllamaChatCompletionService(modelId, endpoint));
    

    获取聊天服务

    var chatService = kernel.GetRequiredService<IChatCompletionService>();
    var history = new ChatHistory();
    history.AddSystemMessage("你是?");
    
    

    聊天循环

    最后,我们实现一个简单的聊天循环,读取用户输入并获取 Ollama 的回复:

    while (true)
    {
        Console.Write("You:");
    
        var input = Console.ReadLine();
    
        if (string.IsNullOrWhiteSpace(input))
        {
            break;
        }
    
        history.AddUserMessage(input);
    
        var contents = await chatService.GetChatMessageContentsAsync(history);
    
        foreach (var chatMessageContent in contents)
        {
            var content = chatMessageContent.Content;
            Console.WriteLine($"Ollama: {content}");
            history.AddMessage(chatMessageContent.Role, content ?? "");
        }
    }
    

    相关文章:

  • 【多模态处理篇五】【DeepSeek文档解析:PDF/Word智能处理引擎】
  • C#初级教程(6)——函数:从基础到实践
  • 后端之路——阿里云OSS云存储
  • 【JavaScript进阶】构造函数数据常用函数
  • 【AI】openEuler 22.03 LTS SP4安装 docker NVIDIA Container Toolkit
  • Java集合框架全解析:从LinkedHashMap到TreeMap与HashSet面试题实战
  • 微信小程序修改个人信息头像(uniapp开发)
  • 机器学习实战(11):时间序列预测——循环神经网络(RNN)与 LSTM
  • NVIDIA A100 SXM4与NVIDIA A100 PCIe版本区别深度对比:架构、性能与场景解析
  • einops测试
  • C#导出dataGridView数据
  • 【Node.js】express框架
  • 【论文带读(1)】《End-to-End Object Detection with Transformers》论文超详细带读 + 翻译
  • 人工智能(AI)的不同维度分类
  • 【知识】Nginx反向代理路径到指定端口,很全面
  • 3D模型在线转换工具:轻松实现3DM转OBJ
  • 深度学习的集装箱箱号OCR识别技术,识别率99.9%
  • mysql之B+ 树索引 (InnoDB 存储引擎)机制
  • Eclipse2024中文汉化教程(图文版)
  • Kafka客户端连接服务端异常 Can‘t resolve address: VM-12-16-centos:9092
  • 印度杰纳布河上游两座水电站均已重新开闸
  • 菲护卫艇企图侵闯中国黄岩岛领海,南部战区:依法依规跟踪监视、警告驱离
  • 特朗普称美军舰商船应免费通行苏伊士运河,外交部:反对任何霸凌言行
  • 这个五月,有三部纪录电影值得一看
  • 云南昆磨高速发生交通事故致3辆车起火,昆明消防:幸无人员伤亡
  • 胡祥|人工智能时代:文艺评论何为?