Deepseek介绍、本地部署及相关使用(工具与API调用)
Deepseek介绍、本地部署及相关使用(工具与API调用)
一、Deepseek介绍
1.1 DeepSeek R1
设计目标
DeepSeek R1专注于逻辑推理、问题解决和自我验证,通过强化学习(RL)提升推理能力,适用于需要深度分析和精确度的任务,如数学证明、代码生成和决策优化。
思维链
Deepseek R1可以通过多轮对话的形式来实现思维链。在与用户交流时,它不是简单地给出一个直接答案,而是像人类进行思考和讨论一样,逐步引导出最终结果。例如,当用户提出一个复杂的数学问题或逻辑问题时,Deepseek R1会先询问一些关键信息,或者给出一些初步的分析步骤,然后根据用户的反馈进一步深入推理,形成一个连贯的思维链条。
对于一些需要多步推理的问题,如 “如何优化一个深度学习模型在特定数据集上的准确率”,Deepseek R1可能会先询问数据集的特点、当前模型的架构和参数情况等,然后基于这些信息给出一系列逐步的建议,如先进行数据预处理的优化,再调整模型的超参数,最后考虑模型结构的改进等,每个步骤都相互关联,构成一个完整的思维链。
架构
- 参数规模:R1的参数规模在15亿到700亿之间,具体取决于版本。
- 训练方式:采用强化学习(RL)和监督微调(SFT)相结合的方式,通过试错学习任务,实现自主思考、自我验证和反思。
- 推理能力:R1擅长逻辑推理和复杂问题解决,能够输出“思维链”,增加透明度和可信度。
优点
- 逻辑推理能力强:R1在逻辑思维和数学推理方面表现出色,适合学术研究和教育应用。
- 开源特性:R1基于开源技术,支持本地部署,增强了数据安全性和隐私保护。
- 成本效益高:R1的开发成本相对较低,每百万输出令牌的价格仅为OpenAI的1/3。
缺点
- 响应速度慢:由于R1需要进行复杂的推理过程,其响应时间相对较长。
- 可读性差:在某些情况下,R1的输出可能缺乏可读性。
性能对齐 OpenAI-o1 正式版,DeepSeek-R1 在后训练阶段大规模使用了强化学习技术,在仅有极少标注数据的情况下,极大提升了模型推理能力。在数学、代码、自然语言推理等任务上,性能比肩 OpenAI o1 正式版。

1.2 DeepSeek V3
设计目标
DeepSeek V3是一款通用型语言模型,采用混合专家(MoE)架构,旨在高效处理大规模自然语言处理任务,如多语言翻译、内容生成和客户服务自动化。
架构
- 参数规模:V3拥有6710亿个参数,每个令牌激活370亿个。
- 训练方式:采用FP8混合精度训练框架,支持高质量训练、扩展序列长度和知识蒸馏三个阶段。
- 推理能力:V3通过动态路由机制优化计算成本,支持多任务处理和长文本处理。
优点
- 速度快:V3的响应速度较快,适合实时交互和快速内容生成。
- 多功能性:V3适用于多种应用场景,包括内容生成、多语言翻译和客户服务自动化。
- 高效性:V3的训练成本约为R1的六分之一,但性能接近GPT-4o和Claude 3.5-Samuel。
缺点
- 逻辑推理能力有限:V3在逻辑推理和复杂问题解决方面不如R1。
- 成本较高:尽管V3的训练成本较低,但其部署成本仍然较高,适合大型企业或研究机构。

###1.3 区别总结
| 特性 | DeepSeek R1 | DeepSeek V3 |
|---|---|---|
| 设计目标 | 逻辑推理、问题解决 | 大规模自然语言处理 |
| 架构 | 强化学习(RL)和监督微调(SFT) | 混合专家(MoE)架构 |
| 参数规模 | 15亿到700亿 | 6710亿 |
| 训练方式 | 强化学习(RL)和监督微调(SFT) | FP8混合精度训练 |
| 推理能力 | 强调逻辑推理和复杂问题解决 | 快速响应和多功能性 |
| 应用场景 | 学术研究、教育应用、数学证明 | 内容生成、多语言翻译、客户服务自动化 |
| 成本效益 | 开源、成本效益高 | 训练成本低,但部署成本高 |
1.4 结论
DeepSeek R1和V3各有优势和适用场景。R1更适合需要深度推理和精确度的任务,如学术研究和教育应用;而V3则适用于需要快速响应和多功能性的场景,如内容生成和客户服务自动化。用户应根据具体需求选择合适的模型。
二、Deepseek本地部署及交互
2.1 Windows本地部署及交互
2.1.1 安装Ollama
1.打开浏览器,登录https://ollama.com/ ,点击Download for Windows


2.下载完成后,直接双击安装程序进行安装。
3.安装好后,按下快捷键 win+R,在弹出的命令框中输入 cmd,然后点击确定,打开命令提示符窗口。
4.在光标后面输入 ollama -v,然后回车。如果显示 ollama 版本号,比如 0.5.7,那就证明 ollama 安装成功了。

🔴 备注:Deepseek本身作为模型,需要Ollama这样的平台来管理模型版本、处理计算资源分配,或者提供Web服务接口。比如,用户可能通过Ollama的命令行来拉取Deepseek的模型文件,然后启动服务,让其他应用可以通过API访问这个模型。
2.2.2 下载Deepseek模型
1.电脑配置要求,如图:
我电脑为:3050 16G内存+512GB固态硬盘,所以以:Deepseek-R1-7B来演示
#7b 代表 70 亿参数,14b 代表 140 亿参数,参数越多,模型越大,效果理论上也会更好,但对电脑配置要求也更高

2.打开网址https://ollama.com/library/deepseek-r1 ,进入 ollama 里的 deepseek - R1 模型页面,并赋值命令:ollama run deepseek-r1:7b

3.打开cmd 黑色窗口,把复制的ollama run deepseek-r1:7b命令粘贴到光标后,接着按回车,等待模型下载完成。下载完成后,就可以在命令窗口直接向 DeepSeek 提问了。

2.2 Linux本地部署及交互
1.打开浏览器,登录https://ollama.com/ ,点击Download for Linux

2.复制命令到Linux的控制台,一键安装:curl -fsSL https://ollama.com/install.sh | sh
3.权限配置:sudo usermod -aG ollama $USER
启动服务:systemctl start ollama
验证安装:ollama --version。出现“ollama version is 0.5.7”则成功。
4.运行:ollama run deepseek-r1:7b,进行对话,如图:

2.3 交互平台
2.3.1 在线网页版交互(对电脑配置无要求)
1.方法一:输入网址https://chat.deepseek.com/,直接进行交互,但由于最近服务器的资源紧张,经常出现服务器繁忙,所以可以尝试 下面的方法。
2.方法二:网页搜收‘秘塔’,输入地址:metaso.cn。它是直接接入Deepseek R1满血版的AI搜索引擎。
2.方法三:注册硅基流动,打开API密钥管理界面,创建新的API,然后下载Cherry Studio客户端,将API引入授权,就可以用Deepseek R1 大模型了。这个方法可以用到满血R1模型。

2.3.2 本地部署+配置Chatbox AI (离线)
1.下载chatbox ai客户端,网址:https://chatboxai.app/zh

2.打开Chatbox AI后,在设置中进行相关调用配置,如图:

3.运行前,需要提前在命令行中输入:ollama run deepseek-r1:7b,保证http://127.0.0.1:11434 (与ollama的正常连接),才能 使用Chatbox AI对话。

三、Deepseek的相关使用
3.1 Deepseek+VSCode+Cline/Continue(实现AI编程小助手)
3.1.1 方法一:Deepseek+VSCode+Cline
1.在Deepseek官网获取API密钥
2.下载VSCode,在点击左侧扩展图标,搜索Cline插件,安装
3.完成后,左侧出现一个小机器人的图标,如图:

4.配置Cline:
点击机器人图标
点击齿轮图标进行设置
输入Deepseek的API Key
选择模型:deepseek-chat,点击Done按钮
5.Cline开发项目。由于deepseek的API调用需要充值,现在官方停止了业务,所以无法调用,如图:

3.1.2 方法二:本地部署的Deepseek+VSCode+Continue
1.下载VSCode,并在VSCOde中安装插件Continue
2.配置Continue:
点击Continue图标
点击齿轮打开config文件,进行model的添加,例如:
{
"model": "deepseek-r1:7b",
"title": "deepseek-r1:7b",
"provider": "ollama"
}
保存配置后,就可以进行交互。
3.缺点:因为本地的deepseek-r1:7b都是蒸馏模型,所以deepseek模型的性能不足。
🔴Deepseek+IDEA+CodeGPT,辅助编程。
3.2 硅基流动+Cherry Studio+知识库
*上文在2.3.1处,介绍了注册硅基流动与Cherry Studio的方法*
1.配置Cherry Studio
在Cherry Studio中找到知识库
进入后,选择模型BAAI/bge-m3,名称可自定义
添加各种知识链接,在相应的每一项中,如下图:

2.配置完成后,在聊天框中就可以,选中“知识库”,提出问题或者Prompt。
3.3 Deepseek+WPS(实现高效办公)
3.3.1 office AI与wps
1.官网下载office AI插件,网址:http://office-ai.cn
2.安装插件,打开WPS就可以在右上方看到Office AI。
(第一次可能没有,需要按照提示在‘文件’---’选项‘---’信任中心‘---勾选’启用第三方COM加载选项’)
3.点击Office AI,打开窗口,在设置中,配置如图选项:
(调用硅基流动,因为Deepseek停止了充值,无法调用API)

4.在对话窗口就可以进行交互,如图:

3.3.2 API调用与Excel
1.在Excel中,有些统计问题或者数据处理需要用到VBA编程,若是在VBA编程中接入Deepseek的API,会使处理更加便捷。
2.若是小白不懂VBA编程,也可以用。只需要将需求向Deepseek大模型提出,就可生成相应代码。
3.API调用逻辑如图:
(依旧是用的硅基流动中对Deepseek的调用)

4.打开Excel,按住‘Alt’+‘F11’,在工具一栏中选中如图所示(2个)工具:
!
5.点击‘插入’---‘模块’,‘模块’---‘导入文件’,选择‘JsonConverter.bas’文件(用于在 VBA 项目中解析和生成 JSON 数据,使得开 发者能够轻松地在 Excel、Access 等 Office 应用程序中处理 JSON 格式的数据)
🔴示例(将信息整理为表格):
信息:
请按照采购日期、商品、单价、重量整理数据,其他无需多言。
采购记录表 详细信息
2025/2/10 香蕉买了5kg,3元一斤
2025/2/11 羊肉买了2kg,35元一斤
2025/2/13 西红柿买了3kg,2元一斤
2025/2/14 猪头肉、菠菜、香橙各买了一斤花了30元,猪头肉15元一斤,菠菜5元一斤
VBA代码:
Sub CallDeepSeekAPI()
Dim http As Object
Dim apiUrl As String
Dim apiKey As String
Dim requestBody As String
Dim response As String
Dim wsOutput As Worksheet
Dim wsInput As Worksheet
Dim i As Integer
' 设置 API 信息
apiUrl = "https://api.siliconflow.cn/v1/chat/completions"
apiKey = "sk-pkdzbyytdrcqveopxtyoelohtgtrwnovoovlawvomxglcbpb"
' 创建 HTTP 对象并设置超时
Set http = CreateObject("MSXML2.ServerXMLHTTP")
http.setTimeouts 30000, 30000, 60000, 60000
' 获取输入数据
Set wsInput = ThisWorkbook.Sheets("Sheet1")
Dim question As String
question = "请按照采购日期、商品、单价(元/斤)、重量(斤)整理以下数据,直接返回表格内容(用|分隔),不要包含标题行和分隔线,单价和重量必须为数字:" & vbCrLf
' 构建输入问题
For i = 2 To 6
If wsInput.Cells(i, 1).Value <> "" Or wsInput.Cells(i, 2).Value <> "" Then
question = question & wsInput.Cells(i, 1).Value & " " & wsInput.Cells(i, 2).Value & vbCrLf
End If
Next i
' 处理特殊字符
Dim sanitizedContent As String
sanitizedContent = Replace(question, "\", "\\")
sanitizedContent = Replace(sanitizedContent, """", "\""")
sanitizedContent = Replace(sanitizedContent, vbCr, "\r")
sanitizedContent = Replace(sanitizedContent, vbLf, "\n")
sanitizedContent = Replace(sanitizedContent, vbTab, "\t")
' 构建请求体
requestBody = "{""model"": ""deepseek-ai/DeepSeek-V3"", ""messages"": [{""role"": ""user"", ""content"": """ & sanitizedContent & """}], ""temperature"": 0}"
' 发送请求并处理错误
On Error Resume Next
http.Open "POST", apiUrl, False
http.setRequestHeader "Content-Type", "application/json"
http.setRequestHeader "Authorization", "Bearer " & apiKey
http.send requestBody
If Err.Number <> 0 Then
MsgBox "请求错误: " & Err.Description, vbCritical
Exit Sub
End If
On Error GoTo 0
' 解析响应
response = http.responseText
Dim parsedResponse As Dictionary
Set parsedResponse = JsonConverter.ParseJson(response)
' 检查有效响应
If parsedResponse Is Nothing Or Not parsedResponse.Exists("choices") Then
MsgBox "API响应异常", vbExclamation
Exit Sub
End If
If parsedResponse("choices").Count = 0 Then
MsgBox "未返回有效数据", vbExclamation
Exit Sub
End If
' 提取并处理返回内容
Dim rawData As String
rawData = parsedResponse("choices")(1)("message")("content")
' 设置输出工作表
Set wsOutput = ThisWorkbook.Sheets("Sheet2")
If wsOutput Is Nothing Then
Set wsOutput = ThisWorkbook.Sheets.Add
wsOutput.Name = "Sheet2"
End If
wsOutput.Cells.Clear
' 写入升级版表头(增加总价列)
wsOutput.Range("A1:E1") = Array("采购日期", "商品", "单价(元/斤)", "重量(斤)", "总价")
' 处理数据行
Dim dataLines() As String
dataLines = Split(rawData, vbCrLf)
Dim rowIndex As Long
rowIndex = 2
For i = 0 To UBound(dataLines)
Dim currentLine As String
currentLine = Trim(dataLines(i))
' 跳过空行、分隔线和标题行
If currentLine <> "" And Not Left(currentLine, 1) = "-" And Not currentLine Like "*采购日期*" Then
Dim cells() As String
cells = Split(currentLine, "|")
' 清理并验证数据列
If UBound(cells) >= 3 Then
' 特殊处理日期列
wsOutput.Cells(rowIndex, 1).NumberFormat = "@"
wsOutput.Cells(rowIndex, 1).Value = Trim(cells(0))
wsOutput.Cells(rowIndex, 2).Value = Trim(cells(1))
' 数值清洗并验证
Dim unitPrice As Double, weight As Double
If IsNumeric(Trim(cells(2))) Then
unitPrice = CDbl(Trim(cells(2)))
Else
unitPrice = ExtractNumber(Trim(cells(2)))
End If
If IsNumeric(Trim(cells(3))) Then
weight = CDbl(Trim(cells(3)))
Else
weight = ExtractNumber(Trim(cells(3)))
End If
' 写入计算列
wsOutput.Cells(rowIndex, 3).Value = unitPrice
wsOutput.Cells(rowIndex, 4).Value = weight
wsOutput.Cells(rowIndex, 5).Value = unitPrice * weight
' 设置数字格式
wsOutput.Cells(rowIndex, 3).NumberFormat = "0.00"
wsOutput.Cells(rowIndex, 4).NumberFormat = "0"
wsOutput.Cells(rowIndex, 5).NumberFormat = "0.00"
rowIndex = rowIndex + 1
End If
End If
Next i
' 自动调整列宽
wsOutput.Columns("A:E").AutoFit
MsgBox "数据处理完成,共写入 " & rowIndex - 2 & " 行数据", vbInformation
End Sub
' 辅助函数:从字符串提取数字
Function ExtractNumber(str As String) As Double
Static regex As Object
If regex Is Nothing Then
Set regex = CreateObject("VBScript.RegExp")
regex.Global = True
regex.Pattern = "(\-?\d+\.?\d*)" ' 匹配整数/小数,支持负数
End If
Dim matches As Object
Set matches = regex.Execute(str)
If matches.Count > 0 Then
ExtractNumber = CDbl(matches(0))
Else
ExtractNumber = 0
End If
End Function

6.按住‘Alt’+'F8',点击运行

3.4 Deepseek+Kimi (PPT生成大师)
1.打开deepseek官网,与其对话生成PPT内容大纲。
2.复制大纲,打开Kimi,找到PPT生成助手。
3.粘贴内容,一键生成PPT,可二次修改。
四、拓展:(其他)大模型的API调用
🔴示例:GLM-4V-Flash
- 所属公司:智谱 AI。
- 功能特点:能精准描述图像,对图片进行分类和情感分析,还能进行视觉推理,回答关于图片的问题,支持 26 种语言。
- 使用方式1:提供免费的 API 接口,支持用户上传图片 URL 或 Base64 编码图片获取详细的图像描述,用户可将图片进行 Base64 编码后,通过 API 接口进行单图片分析。
GLM-4V-Flash 大模型API调用,处理分析本地图片,实现思路:
1. 整体架构概述
系统由服务器端和客户端两部分组成。服务器端负责与硬件(火焰传感器和蜂鸣器)交互,检测火焰状态并控制蜂鸣器,同时与客户端进行网络通信;客户端负责视频采集、图片保存、调用 AI 模型进行图片分析以及 UI 显示和日志记录。
2. 实现步骤
#服务器端
硬件交互:
通过 GPIO 接口读取火焰传感器的状态,判断是否检测到火焰。
根据火焰检测结果,控制蜂鸣器的开关,当检测到火焰时开启蜂鸣器报警。
网络通信:
创建 TCP 套接字并监听指定端口,等待客户端连接。
接收客户端发送的指令(如检查火焰状态、控制蜂鸣器等),并根据指令进行相应操作。
定期向客户端发送包,包含火焰传感器的状态信息。在发送的消息中添加特定前缀(如 ALARM:、NORMAL:、ERROR:),以便客户端准确识别消息类型。
#客户端
视频采集与图片保存:
使用 OpenCV 库打开摄像头,持续采集视频帧。
每隔固定时间(如 5 秒)截取一帧视频,将其保存为图片文件到指定目录。
网络通信:
创建 TCP 套接字并连接到服务器。
向服务器发送指令(如检查火焰状态、控制蜂鸣器等),并接收服务器返回的消息。
根据服务器消息的前缀判断消息类型,若为 ALARM 类型,表示检测到火焰,触发 AI 图片分析流程。
#AI 图片分析:
导入智谱 AI 的 Python SDK,并使用有效的 API Key 初始化客户端。
当需要进行图片分析时,读取最新保存的图片文件,将其转换为 Base64 编码。
调用智谱 AI 的 glm - 4v - flash 模型,发送包含 Base64 编码图片和文本提示(如 “请分析这个图片是否包含火情,只回答是或否”)的请求。
处理 API 响应,根据模型的回复判断图片中是否包含火情,并生成相应的结果文本。
为了确保可靠性,设置了重试机制,若 API 调用失败,最多重试 3 次,每次重试间隔 2 秒。
#UI 显示与日志记录:
使用 Tkinter 库创建图形用户界面(GUI),包含视频显示区域、警告信息显示区域和操作控制栏。
根据服务器消息和 AI 分析结果更新警告信息显示区域的文本内容。
将每次图片分析的结果记录到日志文件中,方便后续查看和分析。
#交互流程
服务器端启动,开始监听客户端连接,并定期检测火焰传感器状态。
客户端启动,连接到服务器,同时开启摄像头进行视频采集。
客户端每隔一段时间保存一张图片,并等待服务器消息。
当客户端向服务器发送检查火焰状态的指令,或服务器通过心跳包告知客户端检测到火焰(ALARM 消息)时,客户端触发 AI 图片分析流程。
客户端调用智谱 AI 模型对最新保存的图片进行分析,并将分析结果与服务器的报警信息合并显示在警告信息区域,同时记录到日志文件中。
用户可以通过操作控制栏上的按钮向服务器发送指令,如控制蜂鸣器开关。
3. API调用实现图片处理分析
客户端代码里添加了对AI的调用,智谱 AI 大模型主要在analyze_picture 函数中被使用,该函数的作用是分析单张图片,判断图片中是否包含火情。(对相应模型的API接口文档需知:)
#导入必要的库和初始化客户端
from zhipuai import ZhipuAI
API_KEY = "YOUR_APIKEY" //API密钥
client = ZhipuAI(api_key=API_KEY)
#(analyze_picture)函数中调用智谱 AI 模型
# 分析单张图片
def analyze_picture(img_path):
"""
分析单张图片,通过 API 调用获取图片内容描述
:param img_path: 图片的完整路径
:return: 图片描述文本
"""
# 读取图片并转换为 base64 编码
with open(img_path, 'rb') as img_file:
img_base = base64.b64encode(img_file.read()).decode('utf-8')
max_retries = 3 # 最大重试次数
retries = 0
while retries < max_retries:
try:
response = client.chat.completions.create(
model="glm-4v-flash",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{img_base}"
}
},
{
"type": "text",
"text": "请分析这个图片是否包含火情,只回答是或否"
}
]
}
],
timeout=10 # 设置超时时间为 10 秒
)
# 修改此处,通过属性访问获取内容
analysis_result = response.choices[0].message.content
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
if "是" in analysis_result:
result_text = f"时间: {current_time}, 检测到了火情,是否拨打 119?"
else:
result_text = f"时间: {current_time}, 未检测到火情。"
return result_text
except Exception as e:
retries += 1
print(f"第 {retries} 次调用 API 出错: {str(e)},重试中...")
time.sleep(2) # 等待 2 秒后重试
result_text = f"调用 API 出错: 经过 {max_retries} 次重试仍失败。"
return result_text
#在 (process_image)函数中调用 (analyze_picture)
#处理图片的函数,包括保存、分析和更新 UI
def process_image(image_path, image_name, frame):
try:
cv2.imwrite(image_path, cv2.cvtColor(frame, cv2.COLOR_RGB2BGR))
print(f"图片 {image_name} 保存成功。")
# 获取图片分析结果
result = analyze_picture(image_path)
# 更新警告信息
def update_warning_label():
warning_label.config(text=result)
# 将分析结果追加到日志文件
log_fire_event(image_name, result)
root.after(0, update_warning_label)
except Exception as e:
print(f"保存图片或调用 API 时出错: {str(e)}")
在 `process_image` 函数中,当图片保存成功后,会调用 `analyze_picture` 函数对图片进行分析,然后把分析结果更新到警告信息显示区域,并且记录到日志文件中。
综上所述,代码主要在 `analyze_picture` 函数里使用智谱 AI 大模型来分析图片是否包含火情,而这个函数会在 `process_image` 函数中被调用。
4. 测试
#运行代码

#保存的图片以及记录的日志文件


#在其中,00:26:57到00:27:07,我用用打火机对准了摄像头,出现了火灾检测警告信息。
🔴Deepseek-R1 API接口调用:(https://api-docs.deepseek.com/zh-cn/)
🔴硅基流动中大模型的API接口调用:(https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions)
更多推荐


所有评论(0)