本地Ollama部署DeepSeek R1模型接入Word

目录

1.本地部署DeepSeek-R1模型

2.接入Word

3.效果演示

4.问题反馈


上一篇文章办公新利器:DeepSeek+Word,让你的工作更高效-CSDN博客https://blog.csdn.net/qq_63708623/article/details/145418457?spm=1001.2014.3001.5501https://blog.csdn.net/qq_63708623/article/details/145418457?spm=1001.2014.3001.5501我们通过API key的方式,实现了DeepSeek与Word的有机结合,帮助我们提高办公效率。而DeepSeek由于近期服务器压力较大,暂时停止了API key的注册服务,那么要想实现DeepSeek与Word的结合,我们也可以通过本地部署的方式进行。

本地部署的优势如下:

1.响应速度快

本地处理减少网络传输,响应速度更快。且本地部署的稳定性更强,不受网络波动影响,确保服务持续可用。

2.数据隐私与安全

文本数据无需上传至外部服务器,降低了泄露风险。

3.完全免费

虽然DeepSeek的API key费用极低,但在高强度的办公场景下仍需要消耗一笔费用。本地部署模型能够做到完全免费,不花一分钱。

接下来,本文将讲述如何本地部署DeepSeek-R1模型,并将其集成到Word中。

1.本地部署DeepSeek-R1模型

访问ollama官网,点击download。Ollama

根据电脑系统选择相应的版本。点击下载。若下载速度过慢,可关注公众号并回复"ollama"领取安装包。

打开下载的安装包,点击"Install"

等待安装完成后,按win+r键,输入cmd调出命令行窗口。

输入

复制代码
ollama --version 

按下回车后出现版本号,即为安装成功。

我们选择推理能力更强的deepseek-r1模型进行本地部署。小编的笔记本显存为6G,因此选择最小的1.5b模型进行部署,如果显存更大的话,可以选择更大的模型。

在命令行窗口中输入:

复制代码
ollama run deepseek-r1:1.5b

按下回车,模型开始自动下载。

模型下载成功后,自动进入对话模式,我们可以在这里跟模型进行对话。

至此,恭喜你已经完成了deepseek-r1模型的本地部署。

2.接入Word

在进行接下来的操作之前,希望你已经阅读了这篇文章。

办公新利器:DeepSeek+Word,让你的工作更高效-CSDN博客https://blog.csdn.net/qq_63708623/article/details/145418457?spm=1001.2014.3001.5501https://blog.csdn.net/qq_63708623/article/details/145418457?spm=1001.2014.3001.5501

这篇文章讲的是如何利用API key来调用云端的大模型,而本文讲的是调用本地部署的模型,请按照这篇文章进行Word端所有的操作,但在复制代码时,替换为下面的代码:

vbscript 复制代码
Function CallDeepSeekAPI(api_key As String, inputText As String) As String
    Dim API As String
    Dim SendTxt As String
    Dim Http As Object
    Dim status_code As Integer
    Dim response As String
           
    '本地部署的大模型API地址
    API = "http://localhost:11434/api/chat"
    
    ' 修改请求体为与本地大模型相匹配的格式
    SendTxt = "{""model"": ""deepseek-r1:1.5b"", ""messages"": [{""role"":""user"", ""content"":""" & inputText & """}], ""stream"": false}"
           
    Set Http = CreateObject("MSXML2.XMLHTTP")
    With Http
        .Open "POST", API, False
        .setRequestHeader "Content-Type", "application/json"
        .setRequestHeader "Authorization", "Bearer " & api_key
        .send SendTxt    
        status_code = .Status
        response = .responseText
    End With
           
    ' 弹出窗口显示 API 响应(调试用)
    '
 MsgBox 
"API Response: "
 & response, vbInformation, 
"Debug Info"
           
    If status_code = 200 Then
        CallDeepSeekAPI = response
    Else
        CallDeepSeekAPI = "Error: " & status_code & " - " & response
    End If
           
    Set Http = Nothing
End Function
           
Sub DeepSeekV3()
    Dim api_key As String
    Dim inputText As String
    Dim response As String
    Dim regex As Object
    Dim matches As Object    
    Dim originalSelection As Object
           
    api_key = "pass"
    If api_key = "" Then
        MsgBox "Please enter the API key."
        Exit Sub
    ElseIf Selection.Type <> wdSelectionNormal Then
        MsgBox "Please select text."
        Exit Sub
    End If
           
    ' 保存原始选中的文本
    Set originalSelection = Selection.Range.Duplicate
           
    inputText = Replace(Replace(Replace(Replace(Replace(Selection.Text, "\", "\\"), vbCrLf, ""), vbCr, ""), vbLf, ""), Chr(34), "\""")
    response = CallDeepSeekAPI(api_key, inputText)
           
    If Left(response, 5) <> "Error" Then
        Set regex = CreateObject("VBScript.RegExp")
        
        '
 步骤
1
:提取大模型回复内容    
        With regex
            .Global = True
            .MultiLine = True
            .Pattern = """content"":\s*""([\s\S]*?)"""  ' 更稳健的提取逻辑
        End With
        If regex.Test(response) Then
            response = regex.Execute(response)(0).SubMatches(0)
            
            '
 步骤
2
:处理
Unicode
转义字符(如\u003c -> <)
            response = Replace(response, "\u003c", "<")
            response = Replace(response, "\u003e", ">")
            
            ' 步骤3:删除标签及其内容
            With regex
                .Global = True
                .MultiLine = True
                .IgnoreCase = True
                .Pattern = "[\s\S]*?"
            End With
            response = regex.Replace(response, "")
            
            '
 步骤
4
:转换\n为实际换行符    
            response = Replace(response, "\n", vbCrLf)
            
            ' 步骤5:移除Markdown格式
            With regex
                .Global = True
                .Pattern = "(#+\s*|\*\*|__|`|\*{1,2}|_{1,2}|~~|^>\s)"
                response = .Replace(response, "")
            End With
            response = regex.Replace(response, "")
           
            '
 取消选中原始文本
            Selection.Collapse Direction:=wdCollapseEnd
           
            ' 将内容插入到选中文字的下一行
            Selection.TypeParagraph '
 插入新行
            Selection.TypeText Text:=response
           
            ' 将光标移回原来选中文本的末尾
            originalSelection.Select
        Else
            MsgBox "Failed to parse API response.", vbExclamation
        End If    
    Else
        MsgBox response, vbCritical
    End If
End Sub

此代码在上一次代码的基础上进行了优化,对大模型md格式的输出进行了优化,去掉了md格式的修饰,只保留纯文本;在上一个版本中,大模型输出的"\n"会被当做文本显示,而此版本的代码直接将"\n"当作回车处理,结果更加美观。

替换代码后,即可实现本地大模型的Word调用。

3.效果演示

选中文本后,点击生成,即可看到大模型的回复。

4.问题反馈

此外,还有读者反应,会出现"配置完之后重启word配置的宏消失的问题",这个问题的解决办法如下:

点击 开发工具 -> 宏。

选中我们配置的DeepSeekV3,点击管理器。

选中左侧的模块1,点击复制,右侧将会出现模块1,最后点击关闭。

问题顺利解决,再次重启word后,不会出现宏消失的问题。

相关推荐
豐儀麟阁贵几秒前
8.2异常的抛出与捕捉
java·开发语言·python
权泽谦2 分钟前
PHP 版羊了个羊完整开发实战:逻辑解析 + 三消算法 + 全套接口(附源码)
开发语言·php
程序员西西6 分钟前
SpringBoot无感刷新Token实战指南
java·开发语言·前端·后端·计算机·程序员
人工智能训练13 分钟前
windows系统中的docker,xinference直接运行在容器目录和持载在宿主机目录中的区别
linux·服务器·人工智能·windows·ubuntu·docker·容器
Coding_Doggy19 分钟前
链盾shieldchiain | 团队功能、邀请成员、权限修改、移除成员、SpringSecurity、RBAC权限控制
java·开发语言·数据库
南蓝25 分钟前
【AI 日记】调用大模型的时候如何按照 sse 格式输出
前端·人工智能
robot_learner28 分钟前
11 月 AI 动态:多模态突破・智能体模型・开源浪潮・机器人仿真・AI 安全与主权 AI
人工智能·机器人·开源
f***241138 分钟前
java学习进阶之路,如果从一个菜鸟进阶成大神
java·开发语言·学习
88号技师43 分钟前
2025年9月一区SCI-孤行尺蠖觅食优化算法Solitary Inchworm Foraging-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
Yue丶越43 分钟前
【Python】基础语法入门(四)
linux·开发语言·python