word 一键审稿 deepseek 公文审稿大师
## 前言
在工作中,文稿审核至关重要。然而,这项工作往往枯燥乏味,尤其对于像我这样粗心大意的人来说,常常因疏忽检查而导致错误。最近,我痛定思痛,决定借助 AI 成为我的审稿助手,并在之前 Word 接入 DeepSeek 代码的基础上,进一步开发,新增了以下功能:
- 输出格式优化
- 审稿提示词优化
- 模型调用设置优化
代码的亮点是无需复制粘贴,即可在 word 中快速解决文稿审查问题。
输出格式优化
我们对输出格式进行了自定义,采用了仿宋字体、小四字号和首行缩进的格式。同时,去除了默认 Markdown 格式中的 #、*、-
等符号,并替换了空格,以确保在 Word 中输出的友好性。
提示词优化
根据我的审稿需求,我对提示词进行了调整,使其更符合实际工作场景。
1 |
|
模型调用设置优化
将 apiurl、modelname 、apykey 作为变量,方便大家调试。
效果演示
以下是一段常见的函件示例。
在 Word 中选中该段文字,点击“审稿大师”,即可生成审稿意见。
VBA 代码
1 |
|
代码解析
这段 VBA 代码是一个用于 Word 文档的宏,其主要作用是:
- 获取选中文本: 从 Word 文档中获取用户选中的文本内容。
- 调用 AI 润色接口: 将选中的文本发送到指定的 AI 接口(硅 flow),并附带一个润色提示词,要求 AI 对文本进行润色和审查。
- 处理 AI 响应: 接收 AI 返回的润色结果,并对结果进行简单的格式处理。
- 将润色结果插入文档: 将处理后的润色结果插入到 Word 文档中,位于原始选中文本的下方,并应用指定的正文样式。
下面是代码的详细解析和调试内容:
代码解析:
Sub Perform()
: 主过程,当宏运行时,从这里开始执行。- 变量声明:
selectedText As String
: 用于存储选中的文本。apiKey As String
: 用于存储 API 密钥。response As Object
: 用于存储 HTTP 请求的响应。re As String
: 用于存储完整的 API 响应文本。midString As String
: 用于存储从 API 响应中提取的内容部分。ans As String
: 用于存储最终的润色结果。polishPrompt As String
: 用于存储发送给 AI 的润色提示词。rng As Range
: 用于存储选中文本的范围。model_name As String
变量,存储调用模型名称
- 检查选中文本:
If Selection.Type <> wdSelectionNormal Then Exit Sub
: 确保用户选择了正常的文本范围。如果没有选择文本,则退出宏。
- 获取选中文本并移除回车符:
Set rng = Selection.Range
: 获取选中文本的范围。selectedText = rng.text
: 获取选中文本的内容。selectedText = Replace(selectedText, ChrW$(13), "")
: 移除选中文本中的回车符。
- API 配置:
apiKey = "sk-rvv"
: 重要: 这里需要替换成你自己的 API 密钥。Const URL As String = "https://api.siliconflow.cn/v1/chat/completions"
: 定义 API 的 URL。
- 设置润色提示词:
polishPrompt = ...
: 定义发送给 AI 的提示词,指示 AI 作为审稿专家,按照一定的优先级对文本进行审查和润色。
- 发送 API 请求:
Set response = CreateObject("MSXML2.XMLHTTP")
: 创建一个 XMLHTTP 对象,用于发送 HTTP 请求。With response ... End With
: 使用With
语句简化代码,设置 HTTP 请求的各种属性。.Open "POST", URL, False
: 以 POST 方式打开连接到指定的 URL。False
表示同步请求。.setRequestHeader "Content-Type", "application/json"
: 设置请求头,指定内容类型为 JSON。.setRequestHeader "Authorization", "Bearer " & apiKey
: 设置请求头,添加授权信息,使用 Bearer 令牌认证。.Send "{""model"":""" & model_name & """, ""messages"":[{""role"":""user"",""content"":""" & polishPrompt & selectedText & """}], ""temperature"":0.7}"
: 发送 JSON 格式的请求体,包含模型名称、用户角色和内容(提示词 + 选中文本)。temperature
参数控制生成文本的随机性。re = .responseText
: 获取 API 的响应文本。
- 解析响应:
midString = Mid(re, InStr(re, """content"":""") + 11)
: 从响应文本中提取content
字段的值。ans = Split(midString, """")(0)
: 将提取的字符串按"
分割,取第一个元素,得到最终的润色结果。ans = Replace(ans, "\n", vbNewLine)
: 将结果中的\n
替换为 VBA 的换行符vbNewLine
。
- 创建必要样式:
Call CreateDocumentStyles
: 调用CreateDocumentStyles
子过程,创建或获取名为 “BodyText” 的样式。
- 插入结果:
With rng ... End With
: 使用With
语句简化代码,对选中文本的范围进行操作。.Collapse wdCollapseEnd
: 将范围折叠到选中文本的末尾。.InsertAfter vbNewLine & vbNewLine
: 在选中文本后插入两个换行符。Set outputRange = .Duplicate
: 创建一个与原始范围相同的副本,用于插入润色结果。outputRange.text = ans
: 将润色结果插入到outputRange
中。Call CleanTextFormatting(outputRange)
: 调用CleanTextFormatting
子过程,清理文本格式并应用正文样式。outputRange.InsertAfter vbNewLine & vbNewLine
: 在润色结果后插入两个换行符。.End = outputRange.End
: 更新原始范围的结束位置。.Select
: 选中更新后的范围。Selection.Collapse wdCollapseEnd
: 将光标移动到选中文本的末尾。
- 清理:
Set response = Nothing
: 释放对象变量,防止内存泄漏。Set rng = Nothing
Set outputRange = Nothing
Private Sub CreateDocumentStyles()
: 创建或获取名为 “BodyText” 的样式。如果样式不存在,则创建一个新的样式,并设置字体、字号、缩进和行距。Private Sub CleanTextFormatting(rng As Range)
: 清理文本格式并应用正文样式。- 移除 Markdown 符号(
**
,*
,#
,-
)。 - 移除无序列表符号和其他常见无意义符号(如行首的
-
、-
、>
)。 - 移除空格
- 应用 “BodyText” 样式。
- 移除 Markdown 符号(
可调试内容:
- API 密钥: 确保将
apiKey = "sk-rvv"
替换为你自己的有效 API 密钥。这是代码能够正常运行的关键。 - API Endpoint: 确认
Const URL As String = "https://api.siliconflow.cn/v1/chat/completions"
这个 API 是硅基流动的 api ,根据自己的情况选择 api 接口 model_name
用的Qwen/Qwen2.5-7B-Instruct
,可以更换为Pro/deepseek-ai/DeepSeek-V3
,Pro/deepseek-ai/DeepSeek-R1
等收费模型,不过需要等待的时间更长,且 R 1 模型可能存在更多幻觉。- Prompt 优化: 根据实际润色效果,可优化
polishPrompt
,以获得更好的结果。
代码使用方法
宏的使用有很多方法,快捷键、放在功能区都行,这里以自定义功能区简单介绍。
添加开发工具
- 选项-信任中心-宏设置-启用所有宏-信任 vba
- 开启开发工具, 选项-自定义选项卡-勾选开发工具。
- Word 工具栏点击“开发工具”选项卡。
- 点击“Visual Basic”。
- 右键当前文稿下的“模块”,选择“插入模块”。
- 复制上述代码到新建的模块中,或者右键模块-导入 bas 文件。
自定义功能区调用宏
宏有多中调用方式,这里介绍选项卡调用。
- 点击“文件”->“选项”->“自定义功能区”。
- 选择“宏”,在右侧自定义功能区新建选项卡和组。
- 将宏添加至组中,重命名并更换图标。
注意事项
- 需要替换自己的 API 密钥。
- 不建议用推理模型,文稿审核相对比较简单,用推理模型反而慢了,容易卡顿。
- 可以根据自己的需要修改提示词。
- 运行转圈是正常的,需要等待结果生成。
希望这次润色能够帮助您更好地呈现您的工作成果。如果您有任何其他问题或需要进一步的修改,请随时告诉我。
word 一键审稿 deepseek 公文审稿大师
https://maoyu92.github.io/2025/03/12/06 人工智能/Word + deepseek:打造高效文稿审稿助手/