Deepseek 对接 WPS

in 默认分类 with 0 comment

2025-03-06T09:11:00.png

office和deepseek对接有两个方式,两种方式都使用的是本地模型Deepseek-v2:16b。(使用Deepseek-R1:14b模型会出现大段推理过程,使用Deepseek-v2:16b则会直接出结果)

一、使用vba代码制作office 插件
前提条件:
1)下载wps.vba.exe,下载地址:wps.vba.exe 下载链接
2)WPS打开开发工具。

安装wps.vba.exe
2025-03-06T09:16:04.png
2025-03-06T09:18:54.png

打开WPS开发工具。点击左上角【文件】->【选项】->【自定义功能】->自定义功能区中选择【所有选项卡】->选中【开发工具】->点击【添加(A)】->最后点击【确定】,如下图所示:
2025-03-06T09:15:28.png

添加【开发工具】后重启,出现VB编辑器;
2025-03-06T09:24:52.png

点击【VB编辑器】,选择【Nornal】,点击【插入】,选择【模块】;

2025-03-06T09:26:29.png

在模块中将下面代码复制,【API】输入安装Deepseek-v2:16b 服务器的IP地址,【model】输入你所需要调用的模型名称,ctrl + s 保存并关闭,如下图所示;
2025-03-06T09:32:29.png

Function CallDeepSeekAPI(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
    Dim regex As Object
    Dim matches As Object

    ' 本地 Ollama API
    API = "http://192.168.X.X:11434/api/chat"

    ' 构造 JSON 请求体
    SendTxt = "{""model"": ""deepseek-v2:16b"", ""messages"": [{""role"":""system"", ""content"":""You are a Word assistant""}, {""role"":""user"", ""content"":""" & inputText & """}], ""stream"": false}"

    ' 发送 HTTP 请求
    Set Http = CreateObject("MSXML2.XMLHTTP")
    With Http
        .Open "POST", API, False
        .setRequestHeader "Content-Type", "application/json"
        .send SendTxt
        status_code = .Status
        response = .responseText
    End With

    ' 检查请求是否成功
    If status_code = 200 Then
        ' 解析 JSON 响应,提取 AI 回复
        Set regex = CreateObject("VBScript.RegExp")
        With regex
            .Global = True
            .MultiLine = True
            .IgnoreCase = False
            .Pattern = """content"":""(.*?)"""
        End With
        Set matches = regex.Execute(response)
        
        ' 提取 AI 回复的内容
        If matches.Count > 0 Then
            response = matches(0).SubMatches(0)
            
            ' 去除换行符与 `###` 之类的格式
            response = Replace(response, "\n", " ")
            response = Replace(response, "#", "")

            ' 返回优化后的 AI 结果
            CallDeepSeekAPI = response
        Else
            CallDeepSeekAPI = "AI 解析失败"
        End If
    Else
        CallDeepSeekAPI = "Error: " & status_code & " - " & response
    End If

    Set Http = Nothing
End Function

Sub DeepSeekV3()
    Dim inputText As String
    Dim response As String
    Dim originalSelection As Object

    ' 检查是否有选中文本
    If Selection.Type <> wdSelectionNormal Then
        MsgBox "请先选择文本!", vbExclamation
        Exit Sub
    End If

    ' 记录原始选中文本
    Set originalSelection = Selection.Range.Duplicate
    inputText = Trim(Selection.Text)

    ' 处理文本,防止 JSON 解析错误
    inputText = Replace(inputText, "\", "\\")
    inputText = Replace(inputText, vbCrLf, " ")
    inputText = Replace(inputText, vbCr, " ")
    inputText = Replace(inputText, vbLf, " ")
    inputText = Replace(inputText, Chr(34), "\""") ' 转义引号

    ' 调用本地 DeepSeek API
    response = CallDeepSeekAPI(inputText)

    ' 插入 AI 结果到 WPS
    If Left(response, 5) <> "Error" Then
        Selection.Collapse Direction:=wdCollapseEnd
        Selection.TypeParagraph
        Selection.TypeText Text:=response
        originalSelection.Select
    Else
        MsgBox response, vbCritical
    End If
End Sub

点击左上角【文件】->【选项】->【自定义功能】->点击右侧【工具】->点击【新建组】;
2025-03-06T09:33:31.png

点击左侧选择【宏】->选中生成的脚本,点击上述【新建组】->点击【添加(A)】->最后点击【确定】;
2025-03-06T09:35:45.png

添加效果如下图所示:
2025-03-06T09:37:55.png

此时输入文本并选中,点击【Normal 模块1:Deepseek-V2】
2025-03-06T09:39:05.png
最终效果如下图所示:
2025-03-06T09:40:58.png

二、使用海鹦office-ai助手
海鹦office-AI是将以插件形式存在,此插件除WPS的word 和excel 之外,微软 office的word 和excel 之外也可用此插件。

前提条件:
下载海鹦office-AI助手:海鹦office-AI助手下载地址

下载软件后双击安装,将自动安装所需要插件等
2025-03-06T09:44:44.png
2025-03-06T09:46:23.png

下载后打开WPS,将出现一个office-AI助手,使用微信登录;
2025-03-06T09:48:26.png

点击【编辑】->【大模型设置】->输入【服务地址】->点击【刷新模型列表】->选择【deepseek-v2:16b】模型->最后点击【保存】,
2025-03-06T09:49:18.png
2025-03-06T09:50:08.png
2025-03-06T09:51:43.png
此时模型调用的模型为本地模型,输入需生成文档,则可生成;
2025-03-06T09:52:41.png
2025-03-06T09:54:29.png

点击导出到左侧,文本将以正常格式导出到word文档中。
2025-03-06T09:57:13.png

Responses