DeepSeek 接入 Word 完整教程

一、前期准备

1.1 注册并获取 API 密钥

  1. 访问 DeepSeek 平台:
    • 打开浏览器,访问 DeepSeek 官方网站(或您使用的相应平台)。
    • 注册并登录您的账户。
  2. 创建 API 密钥:
    • 在用户控制面板中,找到“API Keys”或“API 管理”选项。
    • 点击“创建 API Key”按钮,填写应用名称(例如 “Word 文案助手”)。
    • 系统将生成类似 sk-xxxxxxxxxxxxxxxxxxxx 格式的密钥,请将它复制并妥善保存,后续在 VBA 代码中需要使用此密钥。

二、配置 Word 环境

2.1 启用开发工具选项卡

  1. 在 Word 中点击【文件】>【选项】。
  2. 在“Word 选项”对话框中,选择【自定义功能区】。
  3. 在右侧列表中勾选【开发工具】,然后点击【确定】。
    这样在功能区上就会显示“开发工具”选项卡。

2.2 启用宏安全设置

  1. 在“开发工具”选项卡内,点击【宏安全性】或【信任中心】。
  2. 进入“信任中心设置”,在【宏设置】中选择“启用所有宏”并可勾选“信任对 VBA 工程对象模型的访问”。
    注意: 启用宏可能有安全风险,请在受信任的环境下运行。

三、编写 VBA 宏代码

3.1 打开 VBA 编辑器并插入模块

  1. 在“开发工具”选项卡中点击【Visual Basic】按钮(或使用快捷键 Alt+F11)。
  2. 在 VBA 编辑器中,右击当前工程(如 “Normal” 或当前文档名称),选择【插入】>【模块】。
    建议将此模块命名为 “DeepSeekModule”。

3.2 粘贴下面的完整代码

代码包含两个通用函数用于调用 DeepSeek API 的不同模型(如 deepseek-chat、deepseek-reasoner),以及两个宏分别处理用户选中文本并将结果插入文档。代码中每一部分均有详细注释说明各命令含义。

Option Explicit'==========================
'【公共 API 调用函数】
'==========================
' 此函数用于向 DeepSeek API 发送请求,参数:
'   api_key   —— 您的 API 密钥
'   inputText —— 需要处理的文本(用户选中文本)
'   modelName —— 调用的模型名称,如 "deepseek-chat" 或 "deepseek-reasoner"
' 返回 API 的响应文本(JSON 格式),若出错则返回错误信息。
Private Function CallDeepSeekAPI(api_key As String, inputText As String, modelName As String) As StringDim API As StringDim SendTxt As StringDim Http As ObjectDim status_code As IntegerDim response As String' API 请求地址API = "https://api.deepseek.com/chat/completions"' 构建请求体(JSON 格式)' 注:系统角色提示设定为“你是 Word 文案助手”SendTxt = "{""model"": """ & modelName & """, " & _"""messages"": [{" & _"""role"":""system"", ""content"":""你是 Word 文案助手""}," & _" {""role"":""user"", ""content"":""" & inputText & """}" & _"], ""stream"": false}"' 使用 MSXML2.XMLHTTP 对象发送 HTTP 请求On Error GoTo ErrHandlerSet Http = CreateObject("MSXML2.XMLHTTP")With Http.Open "POST", API, False.setRequestHeader "Content-Type", "application/json".setRequestHeader "Authorization", "Bearer " & api_key.Send SendTxtstatus_code = .Statusresponse = .responseTextEnd With' 根据响应状态返回结果或错误信息If status_code = 200 ThenCallDeepSeekAPI = responseElseCallDeepSeekAPI = "Error: " & status_code & " - " & responseEnd IfExitPoint:Set Http = NothingExit FunctionErrHandler:CallDeepSeekAPI = "Error: " & Err.Number & " - " & Err.DescriptionResume ExitPoint
End Function'===============================
'【封装具体模型的调用函数】
'===============================
' 调用 deepseek-chat 模型
Function CallDeepSeekChatAPI(api_key As String, inputText As String) As StringCallDeepSeekChatAPI = CallDeepSeekAPI(api_key, inputText, "deepseek-chat")
End Function' 调用 deepseek-reasoner 模型
Function CallDeepSeekReasonerAPI(api_key As String, inputText As String) As StringCallDeepSeekReasonerAPI = CallDeepSeekAPI(api_key, inputText, "deepseek-reasoner")
End Function'=====================================
'【主宏:DeepSeek 使用 deepseek-chat 模型】
'=====================================
Sub DeepSeekChat()Dim api_key As StringDim inputText As StringDim response As StringDim regex As ObjectDim matches As ObjectDim originalSelection As Range' ============================'【设置 API 密钥】' ============================' 请替换下面的 "在此处替换为您的 API Key" 为您获取的 API 密钥api_key = "在此处替换为您的 API Key"' 检查 API 密钥及是否选中有效文本If api_key = "" ThenMsgBox "Please enter the API key.", vbCriticalExit SubElseIf Selection.Type <> wdSelectionNormal ThenMsgBox "请选择文本.", vbExclamationExit SubEnd If' ============================'【保存选中区域】' ============================' 保存当前选区,以便后续恢复光标位置Set originalSelection = Selection.Range.Duplicate' ============================'【获取并处理选中文本】' ============================inputText = Selection.Text' 对特殊字符进行转义处理inputText = Replace(inputText, "\", "\\")inputText = Replace(inputText, vbCrLf, "")inputText = Replace(inputText, vbCr, "")inputText = Replace(inputText, vbLf, "")inputText = Replace(inputText, Chr(34), "\""")inputText = Replace(inputText, Chr(39), "\'")' ============================'【调用 API 接口】' ============================response = CallDeepSeekChatAPI(api_key, inputText)' 检查返回信息,如果返回 “Error” 开头,则说明调用失败If Left(response, 5) = "Error" ThenMsgBox response, vbCriticalExit SubEnd If' ============================'【解析 API 返回的 JSON 数据】' ============================' 使用正则表达式提取 JSON 中 "content" 字段的值Set regex = CreateObject("VBScript.RegExp")With regex.Global = True.MultiLine = True.IgnoreCase = False.Pattern = """content"":""(.*?)"""End WithSet matches = regex.Execute(response)If matches.Count > 0 Thenresponse = matches(0).SubMatches(0)' 将换行符转换成 Word 支持的换行标识response = Replace(response, "\n", vbCrLf)' 若有特殊符号,根据需要去除,例如 * 或 #response = Replace(response, "*", "")response = Replace(response, "#", "")' ============================'【将返回内容插入文档】' ============================' 将光标移动到当前选区末尾,插入新段落并输出生成文本Selection.Collapse Direction:=wdCollapseEndSelection.TypeParagraphSelection.TypeText Text:=response' 恢复原始选区(可选)originalSelection.SelectElseMsgBox "Failed to parse API response.", vbExclamationEnd If
End Sub'=====================================
'【主宏:DeepSeek 使用 deepseek-reasoner 模型】
'=====================================
Sub DeepSeekReasoner()Dim api_key As StringDim inputText As StringDim response As StringDim regex As ObjectDim matches As ObjectDim originalSelection As Range' ============================'【设置 API 密钥】' ============================' 请替换下面的 "在此处替换为您的 API Key" 为您的 API 密钥api_key = "在此处替换为您的 API Key"' 检查 API 密钥及是否选中有效文本If api_key = "" ThenMsgBox "Please enter the API key.", vbCriticalExit SubElseIf Selection.Type <> wdSelectionNormal ThenMsgBox "请选择文本.", vbExclamationExit SubEnd If' ============================'【保存选中区域】' ============================Set originalSelection = Selection.Range.Duplicate' ============================'【获取并处理选中文本】' ============================inputText = Selection.TextinputText = Replace(inputText, "\", "\\")inputText = Replace(inputText, vbCrLf, "")inputText = Replace(inputText, vbCr, "")inputText = Replace(inputText, vbLf, "")inputText = Replace(inputText, Chr(34), "\""")inputText = Replace(inputText, Chr(39), "\'")' ============================'【调用 API 接口】' ============================response = CallDeepSeekReasonerAPI(api_key, inputText)' 检查返回信息,如果返回 “Error” 开头,则说明调用失败If Left(response, 5) = "Error" ThenMsgBox response, vbCriticalExit SubEnd If' ============================'【解析 API 返回的 JSON 数据】' ============================Set regex = CreateObject("VBScript.RegExp")With regex.Global = True.MultiLine = True.IgnoreCase = False.Pattern = """content"":""(.*?)"""End WithSet matches = regex.Execute(response)If matches.Count > 0 Thenresponse = matches(0).SubMatches(0)response = Replace(response, "\n", vbCrLf)response = Replace(response, "*", "")response = Replace(response, "#", "")' ============================'【将返回内容插入文档】' ============================Selection.Collapse Direction:=wdCollapseEndSelection.TypeParagraphSelection.TypeText Text:=response' 恢复原选区(可选)originalSelection.SelectElseMsgBox "Failed to parse API response.", vbExclamationEnd If
End Sub

3.3 保存代码

  • 完成粘贴后,保存 VBA 代码,关闭 VBA 编辑器。

四、将宏添加到 Word 自定义功能区(按钮)

为了方便使用,我们可以将写好的宏添加到 Word 的功能区中,具体步骤如下:

  1. 打开 Word 的“选项”界面:
    点击【文件】>【选项】。
  2. 自定义功能区:
    选择【自定义功能区】,在右侧列表中新建一个选项卡(例如命名为 “DeepSeek 助手”)或在“开发工具”中添加一个新分组(例如 “DeepSeek 工具”)。
  3. 添加宏命令:
    在左侧选择“宏”类别,找到刚才创建的宏(如 DeepSeekChatDeepSeekReasoner),将其添加到新建的分组中。你可对按钮名称进行修改,并设置图标以便于识别。
  4. 点击“确定”:
    自定义完成后,在功能区中即可看到新添加的按钮,点击即可快速触发相应的宏命令。

五、使用说明与调试

5.1 测试调用 DeepSeek

  1. 准备测试文本:
    • 在 Word 文档中输入一段文本,例如:“请优化下面这段介绍语…”或其他待处理文本。
    • 用鼠标选中这段文本。
  2. 运行宏命令:
    • 可以通过“开发工具”选项卡中点击“宏”按钮,选择 DeepSeekChat(或 DeepSeekReasoner)后点击“运行”。
    • 或者直接点击自定义功能区中的按钮执行。
  3. 查看输出结果:
    • 程序会调用 DeepSeek API,对选中文本进行处理(如改写、润色或续写)。
    • 处理结果会以新段落的形式插入到选中文本之后,同时原选区可选性恢复。

5.2 错误排查

  • API Key 检查:
    确保在代码中已替换为您真实的 API 密钥,否则程序会弹出提示要求输入 API Key。
  • 网络连接:
    确保计算机可以正常访问 https://api.deepseek.com,防火墙或代理设置不影响 HTTP 请求。
  • 宏安全设置:
    若程序提示“请选择文本”或不能运行宏,请检查当前是否有有效文本选中,以及宏安全设置是否正确配置。

5.3 进阶扩展建议

  • 多模型选择:
    根据需求,可以增加界面选择不同模型(如“文案助手”与“推理分析”)对应的宏,分别调用 CallDeepSeekChatAPICallDeepSeekReasonerAPI
  • JSON 解析优化:
    对于复杂返回数据,建议引入 VBA JSON 库(例如 VBA-JSON),提高解析正确率。
  • 日志记录:
    添加日志记录功能(例如写入文本文件),便于调试和后续维护。

总结

本文详细介绍了如何将 DeepSeek 接入到 Microsoft Word 中的完整流程。通过以下步骤实现:

  1. API 密钥获取和环境配置:注册 DeepSeek 并获取 API Key;在 Word 中启用开发工具和宏设置。
  2. VBA 代码编写:将深度处理 API 封装为公共函数,并分别编写调用 deepseek-chat 和 deepseek-reasoner 模型的宏。代码中详细注释了每一步的作用。
  3. 自定义功能区集成:将编写好的宏添加到 Word 的自定义选项卡中,通过按钮轻松运行。
  4. 测试与调试:选中待处理文本,运行宏,查看处理结果,针对错误进行排查。

通过此完整教程,您可以轻松将 DeepSeek 的智能功能集成到 Word 文档中,实现高效自动化写作、润色、翻译等功能。如果后续有更多需求或需要改进,您可以基于该基础代码进行进一步扩展和优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/901466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

驱动开发硬核特训 · Day 7:深入掌握 Linux 驱动资源管理机制(Resource Management)

&#x1f50d; B站相应的视屏教程&#xff1a; &#x1f4cc; 内核&#xff1a;博文视频 - 总线驱动模型实战全解析 —— 以 PCA9450 PMIC 为例 敬请关注&#xff0c;记得标为原始粉丝。 &#x1f6a9; 在 Linux 驱动开发中&#xff0c;资源管理机制决定了驱动的稳定性与可靠性…

什么是TensorFlow?

TensorFlow 是由 Google Brain 团队开发的开源机器学习框架&#xff0c;被广泛应用于深度学习和人工智能领域。它的基本概念包括&#xff1a; 1. 张量&#xff08;Tensor&#xff09;&#xff1a;在 TensorFlow 中&#xff0c;数据以张量的形式进行处理。张量是多维数组的泛化…

【ChCore Lab 01】Bomb Lab 拆炸弹实验(ARM汇编逆向工程)

文章目录 1. 前言2. 实验代码版本问题3. 关于使用问题4. 宏观分析5. read_line 函数介绍6. phase_0 函数6.1. read_int 函数6.2. 回到 phase_0 函数继续分析6.3. 验证结果 7. phase_1 函数7.2. 验证结果 8. phase_2 函数8.1. read_8_numbers 函数8.2. 回到 phase_2 函数继续分析…

《Vue Router实战教程》20.路由懒加载

欢迎观看《Vue Router 实战&#xff08;第4版&#xff09;》视频课程 路由懒加载 当打包构建应用时&#xff0c;JavaScript 包会变得非常大&#xff0c;影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块&#xff0c;然后当路由被访问的时候才加载对应组件&am…

docker 多主机容器组网

一、服务器A 1、初始化Swarm集群&#xff08;管理节点&#xff09; docker swarm init --advertise-addr 主节点ip 2、获取工作节点​​加入Swarm集群所需的Token 和完整命令 docker swarm join-token worker 3、创建Overlay网络 docker network create -d overlay --subnet…

rancher 解决拉取dashboard-shell镜像失败的问题

问题背景 在 Kubernetes 集群中部署 Rancher 后&#xff0c;点击右上角的 "Shell" 按钮时&#xff0c;Rancher 会动态创建一个 dashboard-shell-xxxxx Pod&#xff0c;用于提供 Web 终端功能。然而&#xff0c;由于默认镜像 rancher/shell:v0.1.21 托管在 Docker Hu…

OpenCV day2

Matplotlib相关知识 Matplotlib相关操作&#xff1a; import numpy as np from matplotlib import pyplot as pltx np.linspace(0, 2 * np.pi, 100) y1 np.sin(x) y2 np.cos(x)# 使用红色虚线&#xff0c;圆点标记&#xff0c;线宽1.5&#xff0c;标记大小为6绘制sin plt.p…

【网络安全】通过 JS 寻找接口实现权限突破

未经许可,不得转载。 本文所述所有风险点均已修复。 文章目录 引言正文引言 以下些漏洞已被起亚方面修复;起亚方面确认,这些漏洞从未被恶意利用过。 2024年6月11日,我们发现起亚汽车存在一系列严重安全漏洞,攻击者仅凭车牌号即可远程控制车辆的核心功能。该攻击不需要接触…

LabVIEW 发电机励磁系统监测与诊断

在现代工业体系中&#xff0c;发电机作为关键的电能转换设备&#xff0c;其稳定运行对于电力供应的可靠性起着决定性作用。而励磁系统作为发电机的核心控制部分&#xff0c;直接影响着发电机的性能和电力系统的稳定性。一旦励磁系统出现故障&#xff0c;可能引发发电机电压波动…

MacOS红队常用攻击命令

MacOS红队常用攻击命令 1.自动化武器2.系统信息3.服务 & 内核信息4.快捷命令5.网络相关6.brew相关 / 软件包相关7.高权限命令8.创建一个管理员权限的后门用户 1.自动化武器 1、linPEAS LinPEAS 是一个脚本&#xff0c;用于在 Linux/Unix/MacOS 主机上搜索提权路径 2、me…

【数据结构_8】栈和队列

一、反向输出链表元素 Ⅰ使用递归进行反向输出 package stack; public class Test2 {static class Node{public String val;public Node next;//构造方法public Node(String val) {this.val val;this.next null;}}//利用递归来反向输出链表public static void reverse(Nod…

Java 正则表达式综合实战:URL 匹配与源码解析

在 Web 应用开发中&#xff0c;我们经常需要对 URL 进行格式验证。今天我们结合 Java 的 Pattern 和 Matcher 类&#xff0c;深入理解正则表达式在实际应用中的强大功能&#xff0c;并剖析一段实际的 Java 示例源码。 package com.RegExpInfo;import java.util.regex.Matcher; …

虾分发平台平台优势

平台优势 高效与成本优化 一键分发与自动化工具减少人工操作&#xff0c;加速测试周期&#xff1b;免费分发流量和透明价格套餐降低中小团队开支。 安全与合规 自研CDN与封装技术平衡性能与安全性&#xff0c;适配复杂分发场景&#xff1b;全球CDN网络加速保障极速下载。 服务…

c语言学习16——内存函数

内存函数 一、memcpy使用和模拟实现1.1参数1.2 使用1.3 模拟实现 二、memmove使用和模拟实现2.1 参数2.2 使用2.3 模拟实现 三、memset使用3.1 参数3.2 使用 四、memcmp使用4.1 参数4.2 使用 一、memcpy使用和模拟实现 1.1参数 因为内存中不知道存的是什么类型的地址&#xff…

TLA:用于接触-丰富操作的触觉-语言-动作模型

25年3月来自三星中国研发中心、中科院自动化所和北京智源的论文“TLA: Tactile-Language-Action Model for Contact-Rich Manipulation”。 视觉-语言模型已取得显著进展。然而&#xff0c;在语言条件下进行机器人操作以应对接触-密集型任务方面&#xff0c;仍未得到充分探索&…

【JavaEE】SpringBoot 统一功能处理

目录 一、拦截器1.1 使用1.1 定义拦截器1.2 注册配置拦截器 1.2 拦截器详解1.2.1 拦截路径1.2.2 拦截器执⾏流程 1.3 适配器模式 二、统一数据返回格式2.1 简单用法2.2 问题及解决 三、统一异常处理 一、拦截器 拦截器&#xff1a;拦截器是Spring框架提供的核⼼功能之⼀&#…

【前端实战】使用 BroadcastChannel API 实现跨标签页通信

一、引言 在现代 Web 应用开发中&#xff0c;我们常常会遇到需要在不同浏览器标签页之间进行通信的需求。例如&#xff0c;在一个电商应用中&#xff0c;用户在一个标签页中添加商品到购物车&#xff0c;希望在其他标签页中也能实时显示购物车的更新信息。传统的实现方式可能会…

微信小程序 - [渲染层错误] Uncaught TypeError: Cannot read property ‘D‘ of undefined

问题&#xff1a;[渲染层错误] Uncaught TypeError: Cannot read property D of undefined 解决&#xff1a; 该错误可能还是小程序的渲染模式有关系&#xff0c;查看app.json中是否有如下配置&#xff0c;删除即可&#xff0c;或者降低小程序调试基础库版本。

【MySQL高级】事务,存储引擎,索引(一)

Mysql高级 DQL查询语句 反引号 模糊查询避免%出现在开头,会造成索引失效 order by排序先后 表名列名都需要用${}&#xff0c;他们不能带’’ 去重统计数量 null的运算 分组函数会自动忽略null&#xff0c;不用对null进行处理 截取子串substr&#xff08;字段&#xff0c;下标…

面试篇 - GPT-1(Generative Pre-Training 1)

GPT-1&#xff08;Generative Pre-Training 1&#xff09; ⭐模型结构 Transformer only-decoder&#xff1a;GPT-1模型使用了一个12层的Transformer解码器。具体细节与标准的Transformer相同&#xff0c;但位置编码是可训练的。 注意力机制&#xff1a; 原始Transformer的解…