本地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后,不会出现宏消失的问题。

相关推荐
秦禹辰21 小时前
宝塔面板安装MySQL数据库并通过内网穿透工具实现公网远程访问
开发语言·后端·golang
mit6.82421 小时前
[网络入侵AI检测] 模型性能评估与报告
人工智能
黄焖鸡能干四碗21 小时前
智慧教育,智慧校园,智慧安防学校建设解决方案(PPT+WORD)
java·大数据·开发语言·数据库·人工智能
IMER SIMPLE21 小时前
人工智能-python-深度学习-经典网络模型-LeNets5
人工智能·python·深度学习
文 丰21 小时前
【openEuler 24.03 LTS SP2】真实实验部署ollama0.11.6+deepseekR1:1.5b+open-webUI
centos·deepseek
却道天凉_好个秋21 小时前
深度学习(五):过拟合、欠拟合与代价函数
人工智能·深度学习·过拟合·欠拟合·代价函数
亚马逊云开发者21 小时前
Strands Agents SDK 助力翰德 Hudson 实现智能招聘新突破
人工智能
张较瘦_21 小时前
[论文阅读] 人工智能 + 软件工程 | 大模型破局跨平台测试!LLMRR让iOS/安卓/鸿蒙脚本无缝迁移
论文阅读·人工智能·ios
一只乔哇噻1 天前
java后端工程师进修ing(研一版 || day41)
java·开发语言·学习·算法
IMER SIMPLE1 天前
人工智能-python-深度学习-神经网络-GoogLeNet
人工智能·python·深度学习