本地安装ollama离线部署的deepseek接入Excel
时间: 2025-04-18 15:48:39 浏览: 59
### 本地离线部署 DeepSeek 并接入 Excel 的方法
#### 准备工作
为了实现 DeepSeek 模型在本地环境下的离线部署并与 Excel 对接,需先完成必要的准备工作。对于个人用户来说,如果对数据安全性无特殊需求,则建议采用更便捷的方式——通过官方 API 实现功能[^1]。
然而,在追求更高灵活性的情况下,可以考虑按照如下方式操作:
#### 配置 GGUF 模型加载
首先,需要安装 `llama_cpp` 库来支持 DeepSeek 模型的加载与运行。具体做法是从指定路径读取预训练好的 DeepSeek 模型文件,并设置相应的参数以优化性能表现。以下是 Python 代码片段用于初始化模型实例:
```python
from llama_cpp import Llama
# 加载DeepSeek模型
deepseek = Llama(
model_path=r"D:\my_deepseek_project\models\deepseek\DeepSeek-R1-Distill-Qwen-1B5-Q8_0.gguf",
n_ctx=2048,
n_gpu_layers=20 # 根据显存大小调整此数值
)
```
这段代码展示了如何利用 `Llama` 类创建一个名为 `deepseek` 的对象,该对象代表已加载完毕的 DeepSeek 模型实例[^2]。
#### 创建 RESTful Web Service
为了让 Excel 能够调用这个深度学习模型的服务接口,通常的做法是构建一个简单的 HTTP Server 或者 Flask/Django 等轻量级框架的应用程序作为中介层。这样做的好处是可以轻松地将复杂的机器学习逻辑封装起来,只暴露给前端应用所需的输入输出格式即可。
假设已经搭建好了一个基于 FastAPI 的服务端项目结构,那么可以在其中定义一个新的路由处理函数负责接收来自客户端的数据请求并将之传递给之前建立好的 `deepseek` 模型进行推理计算;之后再把预测结果返回给调用方。
```python
import uvicorn
from fastapi import FastAPI, Request
app = FastAPI()
@app.post("/predict/")
async def predict(request: Request):
data = await request.json()
input_text = data.get('input', '')
output = deepseek(input_text)
return {"prediction": str(output)}
if __name__ == "__main__":
uvicorn.run(app, host="localhost", port=8000)
```
上述脚本实现了基本的功能:监听 `/predict/` URL 下 POST 请求中的 JSON 数据体部分,提取出待分析文本字段后交给 `deepseek()` 方法执行推断任务,最后形成响应消息发送回去。
#### 将 DeepSeek 整合至 Excel 中
有了上面提到的服务端组件以后,现在就可以着手准备将其集成到 Microsoft Office Excel 当中去了。这里推荐使用 Power Query 或 VBA 宏编程两种途径之一来进行开发实践。
##### 使用 Power Query 方案
Power Query 是一种强大的 ETL 工具插件,允许用户直接从外部资源获取实时更新的信息流。针对当前场景而言,可以通过编写自定义 M 查询语句连接远程服务器上的 API 接口从而实现实时交互效果。
打开 Excel 文件 -> 导航栏选择【数据】-> 【新建查询】>【空白查询】;
接着切换到高级编辑器模式粘贴以下模板代码(记得替换实际地址):
```m
let
Source = Json.Document(Web.Contents("http://localhost:8000/predict/", [Content=Text.ToBinary("{""input"": ""your text here""}")])),
prediction = Source[prediction]
in
prediction
```
保存更改并关闭窗口,此时应该能够在右侧窗格看到新添加的数据源项了!
##### 利用 VBA 编写宏命令
另一种更为灵活的选择就是借助 Visual Basic for Applications (VBA),它提供了丰富的库函数集使得开发者能够自由定制各种复杂业务流程而无需依赖第三方软件包的支持。下面给出一段示范性的 VBA 代码用来发起异步网络请求以及解析JSON字符串内容。
进入 Developer Tab -> Insert Module 插入新的模块单元;
复制粘贴下列 VBScript 代码进去:
```vba
Sub CallApiAndShowResult()
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
Dim url As String
url = "http://localhost:8000/predict/"
Dim payload As String
payload = "{""input"": """ & Range("A1").Value & """}"
http.Open "POST", url, False
http.setRequestHeader "Content-Type", "application/json"
http.send (payload)
If http.Status = 200 Then
MsgBox ("Prediction Result:" & vbCrLf & http.responseText)
Else
MsgBox ("Error occurred while calling the service.")
End If
End Sub
```
以上述方式编写的子过程可以直接绑定按钮控件触发事件或者由其他地方间接调用执行。
阅读全文
相关推荐


















