如何在Windows下离线部署DeepSeek并以WebApi形式调用

news/2025/3/6 18:57:24/文章来源:https://www.cnblogs.com/zhaotianff/p/18752411

最近这一块的话题有点火,这里也找资料学习了解了一下,分享出来。

目前应该有很多公司已经通过官方的WebApi接口接入了DeepSeek。

本文可以帮助你离线使用DeepSeek的WebApi,并集成到自己的程序里。

文末会有示例程序。

 

Ollama是什么

Ollama 是一个开源的 AI 模型服务平台,旨在提供高效且易于使用的 AI 模型部署和管理解决方案。它结合了强大的计算能力和灵活的模型接口,使用户能够轻松构建、训练和部署自定义 AI 模型。

目前支持在本地运行包括但不限于  Llama 3.3, DeepSeek-R1, Phi-4, Mistral, Gemma 2, 等模型。

 

 

安装Ollama

打开Ollama下载页:https://ollama.com/download

下载Windows版本

 

下载完成后执行安装

目前还无法选择路径,会自动安装到C盘。

不过我看了一下这种非为Windows单独设计的软件,一般都没什么依赖。手动移下安装文件位置,再更新下环境变量,应该问题不大。

 

下载DeepSeek离线模型

打开Ollama下的DeepSeek模型下载页:https://ollama.com/library/deepseek-r1

 

选择适合自己电脑配置的离线模型,这里建议装1.5b版本就可以了

 

可以简单参考一下下面的配置要求

 

‌1.5B‌:

‌CPU‌:最低4核,推荐Intel/AMD多核处理器。

 

‌内存‌:8GB+。

‌硬盘‌:3GB+,模型文件约1.5-2GB。

‌显卡‌:非必需,纯CPU推理即可,若GPU加速可选4GB显存,如GTX 1650‌12。

 

 

‌7B‌:

 

‌CPU‌:8核以上,推荐现代多核CPU。

‌内存‌:16GB+。

‌硬盘‌:8GB+,模型文件约4-5GB。

‌显卡‌:推荐8GB显存,如RTX 3070/4060‌12。

 

确认安装的版本后,复制右边的脚本到cmd中运行

 

执行后可以看到正在下载模型

这里应该是从国内服务器下载,所以下载速度就取决 于你的带宽 了

 

运行DeepSeek离线模型

下载完成后,已经自动运行了

 

这个时候我们可以进行对话,因为是离线模型,所以并不具备联网查询的能力

 

如果我们手动运行DeepSeek离线模型,可以通过打开cmd,输入以下脚本即可

1 ollama run deepseek-r1:1.5b

 

如何通过WebApi调用

Ollama在安装成功后,提供了WebApi的调用形式。

请求地址是:http://localhost:11434/api/generate

请求/返回的数据格式是json,定义如下:

Request
{
  "model": "deepseek-r1:1.5b",
  "prompt": "Why is the sky blue?"
}'
 
model:模型名,这里我们使用的是deepseek-r1:1.5b
prompt:对话内容 
 
Response
{"model": "deepseek-r1:1.5b","created_at": "2024-08-01T08:52:19.385406455-07:00","response": "The","done": false
}

model:模型名

created_at:创建日期

response:响应(也就是我们要读取的对话内容)

done:对话是否完成

 

注意:WebApi调用默认是以流式的形式进行访问,所以对话结果并不是一次就生成的,而是会返回多次结果。

 

我们可以通过Apifox类似的api测试软件进行测试

 

测试通过后,我们可以到代码里进行集成。

 

通过C#调用

主要是用到HttpClient类,因为这里的请求是Post,所以一开始我使用了HttpClient.PostAsync

 

 1 protected virtual async Task<HttpResponseMessage> SendToOllamaAsync(HttpRequestMessage requestMessage, OllamaRequest? ollamaRequest, HttpCompletionOption completionOption, CancellationToken cancellationToken)
 2 {
 3     requestMessage.ApplyCustomHeaders(DefaultRequestHeaders, ollamaRequest);
 4 
 5     var response = await _client.SendAsync(requestMessage, completionOption, cancellationToken).ConfigureAwait(false);
 6 
 7     await EnsureSuccessStatusCodeAsync(response).ConfigureAwait(false);
 8 
 9     return response;
10 }

 

 1 private async IAsyncEnumerable<GenerateResponseStream?> ProcessStreamedCompletionResponseAsync(HttpResponseMessage response, [EnumeratorCancellation] CancellationToken cancellationToken)
 2 {
 3     using var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false);
 4     using var reader = new StreamReader(stream);
 5 
 6     while (!reader.EndOfStream && !cancellationToken.IsCancellationRequested)
 7     {
 8         var line = await reader.ReadLineAsync().ConfigureAwait(false) ?? "";
 9         var streamedResponse = JsonSerializer.Deserialize<GenerateResponseStream>(line, IncomingJsonSerializerOptions);
10 
11         yield return streamedResponse?.Done ?? false
12             ? JsonSerializer.Deserialize<GenerateDoneResponseStream>(line, IncomingJsonSerializerOptions)!
13             : streamedResponse;
14     }
15 }

 

 

参考资料:

https://github.com/ollama/ollama/blob/main/docs/api.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/894022.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 MySQL 8.0 细粒度授权:单独授予 KILL 权限的优雅解决方案

基于 MySQL 8.0 细粒度授权:单独授予 KILL 权限的优雅解决方案一、引言 作为一名数据库从业者,我在日常工作中经常会遇到一个棘手的问题:如何在保证安全的前提下,让业务团队拥有足够的权限去管理数据库执行的 SQL,尤其是终止那些失控的慢查询或异常线程?这个问题看似简单…

对比Jira/禅道后,我们为什么选择Leangoo做敏捷项目管理?

Leangoo团队为开发者提供敏捷开发支持:免费获取《敏捷开发指南》;支持企业私有化部署,提供专属API文档及金融、电商行业落地案例,助力研发流程自动化升级。一、敏捷团队的3大隐形痛点 我曾带领过一个6人的Scrum团队,迭代经常遇到: 需求变更黑洞:客户口头需求未及时同步,…

中央计算平台CCP

汽车电子产品正从分布式向中央计算及物理区域控制方向发展,中央计算平台是车身域以及动力域的核心计算单元。 汽车电子产品正从分布式向中央计算及物理区域控制方向发展,中央计算平台是车身域以及动力域的核心计算单元。经纬恒润中央计算平台CCP(Central Compute Pla…

GPO 配置的 4 种常见安全错误及安全优化策略

组策略对象(GPO)是微软 Active Directory(AD)的核心功能,使管理员能够管理和保护AD环境。即使是一个被攻陷的账户也可能导致整个组织的安全受损,影响多个用户和系统。因此,解决GPO的安全威胁和漏洞对于维护AD环境的完整性至关重要。 一、常见的GPO安全错误 以下是管理员…

从薪酬管理到组织效能跃升:锦江易路共创实践——头部HR SaaS厂商如何实现中大型客户全链路覆盖

未来,HR的‘人’味或许会越来越淡,随着数字化进程和共享服务建设,你会成为IT运维者,会成为懂代码、懂业务语言的咨询顾问,成为流程专家,成为调动资源的项目管理者,这是对我们所有新的人力资源工作者的挑战“这三年,我们撞了很多墙、踩了很多坑,把这些伤痛和成就展示给…

【每日一题】20250305

如果你的灵魂黯淡,正为光明所烦扰,请勿从事文学。你什么都无法留下,除了几声能被人听懂的叹息,以及关于您拒绝成为自己的可怜碎片。【每日一题】回答下列(1)~(2)小题. (1)如图 \(1\) 所示,放在固定斜面上的物块 \(\mathrm{A}\) 以加速度 \(a\) 沿斜面匀加速下滑,现…

第1次作业

图书管理系统学生成绩

Oracle VM VirtualBox+vagrant搭建Linux虚拟机

Oracle VM VirtualBox+vagrant,搭建Linux虚拟机 title: Oracle VM VirtualBox+vagrant,搭建Linux虚拟机 tags: - vm - vagrant - VirtualBox categories: - 学习语录Oracle VM VirtualBox+vagrant,搭建Linux虚拟机 1,下载Oracle VM VirtualBox 2,下载vagrant 3,下载cento…

springboot集成deepseek

最近deepseek很火写一篇随文 1.deepseek官网:https://www.deepseek.com/ 2.spring-ai官网:https://docs.spring.io/spring-ai/reference/api/chat/deepseek-chat.html 3.截止到目前springboot已经集成了deepseek极大的简化了使用难度4.pom文件配置<dependencies><de…

告别 @import,拥抱 @use:从零掌握 Sass 模块化开发的核心技巧

探索 Sass 中 @use 语法的强大功能!本文深入解析如何使用 @use 实现模块化开发,避免命名冲突,并通过命名空间、私有成员、默认值覆盖等特性提升代码的封装性与灵活性。适合希望优化 Sass 工作流的前端开发者!🚀目录前言@use 用法1. 模块化与命名空间2. @use 中 as 语法的…

1.3K star!像拿快递一样传送文件,这么酷!

trzsz 是一款革命性的文件传输工具,专为终端用户设计。它完美兼容传统 rz/sz 协议,并创新性地支持 tmux 会话保持、目录传输、实时进度条等功能。就像在终端里收发快递一样,开发者无需跳出工作环境即可完成文件交互,彻底告别传统传输工具的繁琐操作! 嗨,大家好,我是小华…