本文介绍了如何通过Ollama本地部署DeepSeek并接入Excel。
学习的内容来自以下两篇文章,十分感谢创作者的无私分享:
https://www.cnblogs.com/qubernet/p/18702147 https://blog.csdn.net/Python_cocola/article/details/145572074
1.下载Ollama
前往Ollama官网下载安装包,官方提供了三种安装包:macOS、Linux、Windows,可以按需下载。此处以Windows系统安装流程为例。
2.通过cmd安装Ollama
⭐step1.在开始菜单搜索CMD,右键"命令提示符"选择"以管理员身份运行"
⭐step2.假设OllamaSetup.exe文件被存储在C:\Ollama目录下,执行以下命令以定位到安装包所在目录:
cd C:\Ollama
假设D:\Ollama为期望的安装目录,键入以下命令:
OllamaSetup.exe /DIR="D:\Ollama"
⭐step3.执行上述命令后,会弹出OllamaSetup.exe安装窗口,点击Install按钮
*安装完成后在任务栏中退出Ollama,如下图所示右键Ollama图标后点击Quit Ollama
3.验证Ollama
⭐step1.以管理员身份运行CMD并进入Ollama所在目录,键入ollama -v,界面如下图所示代表Ollama已安装成功:
c:\>cd C:\Ollama
C:\Ollama>ollama -v
Warning could not connect to a running Ollama Instance
Warning Client version is 0.5.11
⭐step2.键入ollama -h可以查看Ollama其他操作命令:
4.配置环境变量
⭐step1.右键"此电脑"选择"属性",点击"高级系统设置"
点击"环境变量"
⭐step2.通过"新建"按钮,新增一个用户变量。变量名为:OLLAMA_MODELS;变量值为期望的模型存储位置如:C:\Ollama\Models。设置完成后点击"确定"以保存
5.下载DeepSeek -r1
⭐step1.打开Ollama官网,点击上方导航栏中的Models,选择deepseek -r1
在下拉列表中选择需要的版本,复制下拉框右侧的命令,如下图中就是ollama run deepseek -r1
⭐step2.用管理员权限打开CMD,将上一步中复制的命令粘贴至此,进行执行
当所有安装进度条都加载到100%时,代表下载已经完成。可以输入一些AI指令进行尝试
6.Excel VBA编辑器
⭐step1.点击上方工具栏中的"文件",选择"选项"。在Excel选项窗口中选择"自定义功能区",在右侧勾选上"开发工具"
⭐step2.利用快捷键Alt+F11打开VBA编辑器。如下图右击后选择"插入"-->"模块"
⭐step3.在右侧代码区粘贴以下代码
Public Function CallLLM(strUserQry As String)
Dim question As String
Dim response As String
Dim p_url As String
Dim p_apiKey As String
Dim http As Object
Dim content As String
Dim startPos As Long
Dim endPos As Long
question = strUserQry
p_url = Trim(Range("pmodelurl").Cells(1, 1).Value)
p_apiKey = Trim(Range("pmodelapikey").Cells(1, 1).Value)
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", p_url, False
http.setRequestHeader "Content-Type", "application/json"
http.setRequestHeader "Authorization", "Bearer " & p_apiKey
Dim requestBody As String
requestBody = "{""model"":""" & Trim(Range("pmodelname").Cells(1, 1).Value) & """,""messages"":[{""role"":""user"",""content"":""" & question & """}]}"
http.send requestBody
Dim strContent As String
If http.Status = 200 Then
response = http.responseText
startPos = InStr(response, """content"":""") + Len("""content"":""")
endPos = InStr(startPos, response, """},")
content = Mid(response, startPos, endPos - startPos)
strContent = ConvertUnicodeToText(content)
Else
strContent = "Error: " & http.Status & " - " & http.statusText
End If
CallLLM = strContent
End Function
Function ConvertUnicodeToText(ByVal mixedText As String) As String
Dim regex As Object
Dim matches As Object
Dim match As Object
Dim unicodeCode As String
Dim convertedText As String
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = "\\u([0-9A-Fa-f]{4})"
regex.Global = True
Set matches = regex.Execute(mixedText)
convertedText = ""
Dim i As Long
For i = 0 To matches.Count - 1
Set match = matches(i)
unicodeCode = match.SubMatches(0)
convertedText = convertedText & ChrW("&H" & unicodeCode)
If i < matches.Count - 1 Then
Dim startPos As Long
Dim endPos As Long
startPos = match.FirstIndex + match.Length
endPos = matches(i + 1).FirstIndex
convertedText = convertedText & Mid(mixedText, startPos + 1, endPos - startPos)
Else
convertedText = convertedText & Mid(mixedText, match.FirstIndex + match.Length)
End If
Next i
If convertedText = "" Then
ConvertUnicodeToText = Replace(mixedText, "\n", vbCrLf)
Else
ConvertUnicodeToText = Replace(convertedText, "\n", vbCrLf)
End If
End Function
⭐step4.回到Excel中的Sheet1,在上方工具栏中选择"公式"-->"名称管理器"分类下的"定义名称"
如下图将问题部分命名为"puserquery",将回答区命名为"pllmanswer"
⭐step5.新增一个名为Settings的sheet。
如下图将模型地址部分命名为"pmodelurl",模型名称命名为"pmodelname",API KEY命名为"pmodelapikey"。
⭐step6.填写Settings表中的参数
i. 模型地址。
填写:http://localhost:11434/v1/chat/completions
ii. 模型名称。
在CMD中键入ollama list查看对应版本,以下图为例模型名称应填写为:deepseek-r1:1.5b
iii. API KEY
在DeepSeek官网申请API KEY,复制生成的key粘贴到Excel中
⭐step7.新建宏
i.在工具栏中选择"开发工具",点击"宏安全性"
启用所有宏,并允许访问
ii."开发工具"-->"插入"-->"表单控件"中的"按钮"
iii.点击Sheet1中的某个单元格,调出"指定宏"窗口,选择"新建"
iv.在代码区输入如下代码:
Range("pllmanswer").Cells(1, 1).Value = CallLLM(Trim(Range("puserquery").Cells(1, 1).Value))
7.使用DeepSeek
回到Sheet1,在问题区键入内容,点击按钮即可在回答区生成回答。
*保存文件时,应选择"Excel启用宏的工作簿"