deep seek R1本地化部署及openAI API调用

先说几句题外话。

最近deep seek火遍全球,所以春节假期期间趁着官网优惠充值了deep seek的API,用openAI的接口方式尝试了下对deep seek的调用,并且做了个简单测试,测试内容确实非常简单:通过prompt提示词让大模型对用户提问做一个简单的提问场景判断,分了3个大类:一个是能耗问题,比如用户提问包括电流、电压、功率、能耗、耗能情况等等,判断为能耗问题。一个是生产问题,比如产量、产品等等,生产问题需要识别用户提问的日期范围之后转化为格式化输出,以便调用生产系统API获取数据。除此之外就是通用问题。

重点测试了生产相关的产量问题的日期范围测试,分别调用过讯飞的generalv3,智普的glm-4-plus,openAI的gpt-4o,提问比如上周的产量怎么样,不论我怎么调整提示词,generalv3都识别不出“上周”的时间范围,相同提示词的情况下,gpt-4o表现最好,识别的准确率最高,智普的glm-4-plus也还可以。

春节前用deepseek-reasoner试了下,对这个简单问题的表现很不错,因为我的openAI的apikey已经到期了所以没有办法对比测试了,但是单独测试deepseek-reasoner,每次都可以准确识别上周、上个月等时间范围。

其实这个测试是为了对function calling做一个简单的准备,验证一下将来如果有相关场景的话,是否可以通过funcation calling使大模型和业务系统做一个对接。前期测试结果并不能反映出模型是否支持我的业务场景,因为效果不好的直接原因可能就是我的提示词使用不当,不断优化提示词后应该能解决,因为问题确实非常简单。

好的,进入正题。

我的笔记本电脑配置很低,没有gpu,所以没有办法选择参数量比较大的模型做本地化部署,先选一个最小的,主要目的是验证一下本地化部署的步骤。

部署内容:

  1. Ollama:Ollama是开源大模型部署或管理工具,提供了对大部分知名模型的支持,对外提供了openAI的api接口、以及聊天窗口
  2. DeepSeek R1 1.5b:选了一个最小的模型,模型文件的大小是1.1GB,关键是推理过程中对GPU没有要求,我16g内存、无显卡的笔记本电脑,可以无障碍运行。
  3. 本地知识库搭建:搭建本地rag环境,安装embedding模型实现本地知识库的搭建(这一步还在摸索中,尚未找到合适的embedding模型,所以本次内容不涉及)。
下载安装Ollama

到Ollama官网:https://ollama.com/download 下载:

在这里插入图片描述
直接点击download for windows下载,不需要注册就可以下载。需要点时间,我还是下载了好一会儿的。

下载之后点击OllamaSetup.exe安装,点击安装之后,没有给用户提供参与的机会,直接默认安装到了:

C:\Users\username\AppData\Local\Programs\Ollama

你可以挪地方,比如整体copy到d盘,但是需要设置环境变量,将安装路径加入到path中。

安装deepseek R1

Ollama官网中,点击左上角右侧的models,发现deepseek-r1出现在很显眼的位置:
在这里插入图片描述

打开,选择1.5b,复制安装连接:
在这里插入图片描述
安装之前,需要先配置下环境变量OLLAMA_MODELS,OLLAMA_MODELS是指定Ollama的模型安装位置的:
在这里插入图片描述
准备好之后,运行上一步copy的安装命令,开始安装:

ollama run deepseek-r1:1.5b

首次运行,ollama会下载deepseek-r1:
在这里插入图片描述
安装完成后直接启动,在命令行窗口就可以直接使用了。

聊天窗口

Ollama有集成的Open WebUI聊天窗口,网上好多安装教程,这儿就不说了,不是本次研究内容,这次我也没安装。

openAI API调用

很简单,参考文档:
Ollama openai api 调用

python代码:

from openai import OpenAIclient = OpenAI(base_url='http://localhost:11434/v1/',# required but ignoredapi_key='ollama',
)chat_completion = client.chat.completions.create(messages=[{'role': 'user','content': '你好,你是谁,请将一个关于小明的笑话',}],model='deepseek-r1:1.5b',
)
print(chat_completion.choices[0].message.content)

ollama本地安装后默认服务端口是11434,可以通过环境变量OLLAMA_HOST修改。

调试稍稍花了一点时间,是因为model没写对,刚开始写的deepseek-reasoner,调用报错404,之后命令行试了下:

C:\Users\zhang>ollama list
NAME                ID              SIZE      MODIFIED
deepseek-r1:1.5b    a42b25d8c10a    1.1 GB    32 minutes ago

修改model为deepseek-r1:1.5b之后就ok可,调用成功了,但是讲的这个小明的笑话很是操蛋:

<think>
好的,我现在需要帮用户生成一个小明的笑话。首先,我得回想一下小明是个什么样的角色。小明应该是一个可爱的动物,可能从故事里看到他是哪个动物呢?比如兔子、松鼠或者狗之类的。接下来,笑话的核心是什么?一般来说,小明的好奇和困惑会让他的情节有趣。我可以利用这一点来设计谜题或矛盾。让我想想,小明每天都在做什么呢?如果他住在苹果树上,或者他在 garden里,这样的环境可以给他带来乐趣 。比如,他可能想算出苹果的数量或者解决蚂蚁困的难题。接着,我要考虑如何制造一个谜题或者谜语,让小明感到困惑和不安。我可以编一个关于天气的问题,比如“谁 在你的车里?”因为这个答案会让他陷入迷宫般的思考,而不是立刻告诉你答案。然后,我需要确保笑话有趣且容易理解。要让小明感觉困惑而不觉得奇怪,这样他的反应才会是那副可爱的猫头鹰样子。同时,谜题不能太难,保持简单的逻辑就可以了。最后,我要确保整个笑话结构清晰,开头点出小明的特点,接着制造疑问,然后解释答案或者引导到后面的内容。这样既符合用户的指示,又能传达出有趣的笑点。
</think>好的,以下是一个关于小明的笑话:---今天早上,小明刚从花园跑回来,看到花园里有一只受伤的大树被风吹坏了。“哎呀!谁在你的车里?”小明兴奋地指着旁边的一辆黑色轿车。“啊,别急,你就是那只兔子!”小东赶紧冲他微笑,“它经常在你那里偷吃苹果,所以今天 you 害死你。”小明眨了下眼睛,看着旁边的车窗上积了一层薄雾。突然之间,一个温暖的阳光照亮了整辆车。“对不起,请给我一杯饮料?”小明突然开口问道。“不用了,这是我刚才在 garden 发现的一个秘密洞穴。”小东笑着摇摇头,“那里住了一只小蚂蚁,它每天都会 自己结成一堆大面包。”“原来是这样啊!”小明开心地大笑起来,然后从车窗里的阳光中看去。“哦?你什么颜色眼睛?”小明兴奋地问道。“黄色。这就是我,我的新朋友凯特!”小东补充道,“我知道你在 garden 里看到了我们刚才说的苹果,后来那 个苹果树上的苹果都落下来了。”听到这笑语声后,小明忍不住笑了起来,终于找到了内心的平静点!---这样一个可爱的猫头鹰可爱的角色, Plus 这个谜题会让他的笑翻!
PS D:\develop\python\chatBot> & "D:/Program Files/python/python.exe" d:/develop/python/chatBot/base/test.py
<think>
嗯,用户给了我这个请求:“你好,你是谁,请将一个关于小明的笑话。” 我应该先分析一下这个问题。看起来 像是想测试我的知识,可能是在寻求帮助或获取一些信息。首先,“你好,你是谁”这句话本身就是一个常见的问候语,通常不会涉及到笑话。如果我回应“我是DeepSeek-R1-Lite-Preview”,可能会让用户觉得我只是在回答他的名字请求,而不是提供内容。接下来是关于小明的笑话。小明是一个常见的名字,而且中文里有很多关于小孩子的谐音 shorten语,比如“哪 里有我”、“永远抱我对不起你”。如果用户需要一些经典或有趣的笑话,我可以列举一些例子或者建议他找一些 记忆中和这些名字相关的梗。考虑到用户只是想要“一个”关于小明的笑话,我不确定是否有必要提供太多。所以我可能会列出几个常见的笑话来满足他的需求,同时鼓励他多提更多内容,这样我们能够更接近你的实际意图。此外,我也需要考虑用户的其他潜在需求,比如也许他们希望我帮助解答其他类型的提问,或者在写作中使用这个信息。因此,在回复时保持开放和友好的态度是比较好的策略,让用户知道我可以随时回应任何问题,即使是关于笑话的情况。总结一下,我的思考步骤包括:分析用户的问题,判断是否满足问候,检查是否有遗漏的可能内容,然后决定提供合适的回应,鼓励用户提供更多所需的内容。这样的条理确保我能够有效地帮助用户。
</think>你好!我是DeepSeek-R1-Lite-Preview。如果您指的是一个关于小明的笑话,我可以为您提供一些经典的小说梗、动画或儿童领域的梗。比如:        1. **小明遇到大 trouble**:小明在数学题中总是错,最终老师用他爸爸教他的方法纠正了他。
2. **小明的自白**:小明每次都在学校里说话的时候不小心把自己说出来。
3. **小明的搞笑表情和打字机**:- 你看看那个破手机,冲你的笑点喊“开”?让他帮你写个字。
4. **小明小时候喜欢学编程**:- 爸爸问他会不会能算错分数,可他说只要不教别人就好了。
5. **小明的迷路**:小明在放学路上不小心跌了一跤,撞到树上摔在地上。如果您希望一个更具体或针对某个故事的小明梗,请告诉我!

不过这里可以看到deepseek R1作为推理模型的影子,他的回答里有一部分括起来的内容,应该就是他的推理过程,很像其他模型中你用提示词告诉他要用到思维链的回答方式。

下次尝试补充embeding模型的本地化部署,在ollama官网看到了这个:

在这里插入图片描述
这几天找一个靠谱的、资源消耗低的,先研究下。

Thanks!

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

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

相关文章

01.双Android容器解决方案

目录 写在前面 一&#xff0c;容器 1.1 容器的原理 1.1.1 Namespace 1.1.2 Cgroups&#xff08;Control Groups&#xff09; 1.1.3 联合文件系统&#xff08;Union File System&#xff09; 1.2 容器的应用 1.2.1 微服务架构 1.2.2 持续集成和持续部署&#xff08;CI/…

Python 绘图工具详解:使用 Matplotlib、Seaborn 和 Pyecharts 绘制散点图

目录 数据可视化1.使用 matplotlib 库matplotlib 库 2 .使用 seaborn 库seaborn 库 3 .使用 pyecharts库pyecharts库 注意1. 确保安装了所有必要的库2. 检查Jupyter Notebook的版本3. 使用render()方法保存为HTML文件4. 使用IFrame在Notebook中显示HTML文件5. 检查是否有其他输…

无人机集群新年祝福表演技术原理详解

无人机集群新年祝福表演技术是一项集飞行控制技术、智能协调和精密控制于一体的高科技表演形式。其技术原理主要涉及无人机硬件设备、软件系统以及表演协调等多个方面。以下是对该技术原理的详细解析&#xff1a; 一、无人机硬件设备 无人机集群表演的核心是无人机本身&#x…

贪吃蛇实现

1.资料来源 https://learn.microsoft.com/zh-cn/windows/console/getstdhandle 2.前言 简介 贪吃蛇是久负盛名的游戏&#xff0c;和俄罗斯方块、扫雷等游戏位列于经典游戏的行列。 《贪食蛇》中玩家控制一条不断移动的蛇&#xff0c;在屏幕上吃掉出现的食物。每吃掉一个食物…

计算机毕业设计Python动漫推荐系统 漫画推荐系统 动漫视频推荐系统 机器学习 bilibili动漫爬虫 数据可视化 数据分析 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

MyBatis-Plus笔记-快速入门

大家在日常开发中应该能发现&#xff0c;单表的CRUD功能代码重复度很高&#xff0c;也没有什么难度。而这部分代码量往往比较大&#xff0c;开发起来比较费时。 因此&#xff0c;目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是…

《OpenCV》——图像透视转换

图像透视转换简介 在 OpenCV 里&#xff0c;图像透视转换属于重要的几何变换&#xff0c;也被叫做投影变换。下面从原理、实现步骤、相关函数和应用场景几个方面为你详细介绍。 原理 实现步骤 选取对应点&#xff1a;要在源图像和目标图像上分别找出至少四个对应的点。这些对…

克隆OpenAI(基于openai API和streamlit)

utils.py&#xff1a; from langchain_openai import ChatOpenAI from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain import osdef get_chat_response(api_key,prompt,memory): # memory不能是函数的内部局部变量&…

用 HTML、CSS 和 JavaScript 实现抽奖转盘效果

顺序抽奖 前言 这段代码实现了一个简单的抽奖转盘效果。页面上有一个九宫格布局的抽奖区域&#xff0c;周围八个格子分别放置了不同的奖品名称&#xff0c;中间是一个 “开始抽奖” 的按钮。点击按钮后&#xff0c;抽奖区域的格子会快速滚动&#xff0c;颜色不断变化&#xf…

【Linux】使用管道实现一个简易版本的进程池

文章目录 使用管道实现一个简易版本的进程池流程图代码makefileTask.hppProcessPool.cc 程序流程&#xff1a; 使用管道实现一个简易版本的进程池 流程图 代码 makefile ProcessPool:ProcessPool.ccg -o $ $^ -g -stdc11 .PHONY:clean clean:rm -f ProcessPoolTask.hpp #pr…

Elasticsearch的索引生命周期管理

目录 说明零、参考一、ILM的基本概念二、ILM的实践步骤Elasticsearch ILM策略中的“最小年龄”是如何计算的&#xff1f;如何监控和调整Elasticsearch ILM策略的性能&#xff1f; 1. **监控性能**使用/_cat/thread_pool API基本请求格式请求特定线程池的信息响应内容 2. **调整…

MQTT知识

MQTT协议 MQTT 是一种基于发布/订阅模式的轻量级消息传输协议&#xff0c;专门针对低带宽和不稳定网络环境的物联网应用而设计&#xff0c;可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT 协议广泛应用于物联网、移动互联网、智能硬件、车联网、智慧城市、远程医疗、…

LabVIEW如何高频采集温度数据?

在LabVIEW中进行高频温度数据采集时&#xff0c;选择合适的传感器&#xff08;如热电偶或热电阻&#xff09;和采集硬件是关键。下面是一些建议&#xff0c;帮助实现高效的温度数据采集&#xff1a; 1. 传感器选择&#xff1a; 热电偶&#xff08;Thermocouple&#xff09;&am…

前端 | 深入理解Promise

1. 引言 JavaScript 是一种单线程语言&#xff0c;这意味着它一次仅能执行一个任务。为了处理异步操作&#xff0c;JavaScript 提供了回调函数&#xff0c;但是随着项目处理并发任务的增加&#xff0c;回调地狱 (Callback Hell) 使异步代码很难维护。为此&#xff0c;ES6带来了…

gesp(C++六级)(10)洛谷:P10722:[GESP202406 六级] 二叉树

gesp(C六级)&#xff08;10&#xff09;洛谷&#xff1a;P10722&#xff1a;[GESP202406 六级] 二叉树 题目描述 小杨有⼀棵包含 n n n 个节点的二叉树&#xff0c;且根节点的编号为 1 1 1。这棵二叉树任意⼀个节点要么是白色&#xff0c;要么是黑色。之后小杨会对这棵二叉树…

【UE】 APlayerState

APlayerState 定义和功能 APlayerState用于保存关于游戏玩家状态的信息&#xff0c;例如得分、玩家名称和其他统计数据。这些信息通常在多人游戏中被用来持续跟踪玩家的表现。设计理念 APlayerState的目的是提供一个存储和传输玩家特定信息的方法&#xff0c;这样即使玩家的控…

如何用微信小程序写春联

​ 生活没有模板,只需心灯一盏。 如果笑能让你释然,那就开怀一笑;如果哭能让你减压,那就让泪水流下来。如果沉默是金,那就不用解释;如果放下能更好地前行,就别再扛着。 一、引入 Vant UI 1、通过 npm 安装 npm i @vant/weapp -S --production​​ 2、修改 app.json …

C# Winform enter键怎么去关联button

1.关联按钮上的Key事件按钮上的keypress&#xff0c;keydown&#xff0c;keyup事件随便一个即可private void textBox1_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode Keys.Enter){this.textBox2.Focus();}}2.窗体上的事件private void textBox2_KeyPress(object sen…

FPGA 使用 CLOCK_DEDICATED_ROUTE 约束

使用 CLOCK_DEDICATED_ROUTE 约束 CLOCK_DEDICATED_ROUTE 约束通常在从一个时钟区域中的时钟缓存驱动到另一个时钟区域中的 MMCM 或 PLL 时使 用。默认情况下&#xff0c; CLOCK_DEDICATED_ROUTE 约束设置为 TRUE &#xff0c;并且缓存 /MMCM 或 PLL 对必须布局在相同…

Ollama+OpenWebUI部署本地大模型

OllamaOpenWebUI部署本地大模型 前言 Ollama是一个强大且易于使用的本地大模型推理框架&#xff0c;它专注于简化和优化大型语言模型&#xff08;LLMs&#xff09;在本地环境中的部署、管理和推理工作流。可以将Ollama理解为一个大模型推理框架的后端服务。 Ollama Ollama安…