前言
為什么要在word中接入大模型呢?
個人覺得最大的意義就是不用來回切換與復制粘貼了吧。
今天分享一下昨天實踐的在word中接入大模型的教程。
在word中接入大模型最簡單的方式就是使用vba。
vba代碼要做的事,拆分一下就是:
- 獲取用戶選中的文本,未選擇彈窗提示。
- 向大模型API接口發送一個Post請求。
- 解析返回的json數據,獲取content的內容。
- 為了用戶體驗,打造假流式效果。
效果
實踐
第一步:獲取用戶選中的文本,未選擇彈窗提示。
vba代碼:
Sub GetSelectedText()Dim selectedText As StringIf Selection.Type = wdSelectionIP Then ' 如果是插入點(光標閃爍),則未選擇文本MsgBox "未選中任何文本!請先選擇文本。", vbExclamationElseselectedText = Selection.TextIf Trim(selectedText) = "" Then ' 再次檢查 Trim 后的文本是否為空,以防用戶只選擇了空格MsgBox "未選中任何文本!請先選擇文本。", vbExclamationElseMsgBox "選中的文本是: " & selectedTextEnd IfEnd If
End Sub
效果:
第二步:向大模型API接口發送一個Post請求。
在第一步中獲取的文本大概率會包含換行符,如果沒有去掉,在發送請求的時候會報錯,因此第一步的完整代碼還需要包括去除換行符的部分,完整代碼如下所示:
Dim selectedText As StringIf Selection.Type = wdSelectionIP Then ' 如果是插入點(光標閃爍),則未選擇文本MsgBox "未選中任何文本!請先選擇文本。", vbExclamationElseselectedText = Selection.TextIf Trim(selectedText) = "" Then ' 再次檢查 Trim 后的文本是否為空,以防用戶只選擇了空格MsgBox "未選中任何文本!請先選擇文本。", vbExclamationElse' **** 在這里添加刪除換行符的代碼 ****selectedText = Replace(selectedText, Chr(13), "") ' 刪除回車符 (CR)selectedText = Replace(selectedText, Chr(10), "") ' 刪除換行符 (LF)End IfEnd If
在vba中發送Post,可以使用MSXML2.XMLHTTP,代碼如下:
API = "https://api.siliconflow.cn/v1/chat/completions"inputText = selectedTextSendTxt = "{""model"": ""meta-llama/Llama-3.3-70B-Instruct"", ""messages"": [{""role"":""system"", ""content"":""你是一個word助手,直接輸出文本,不要用md格式。""}, {""role"":""user"", ""content"":""" & inputText & """}], ""stream"": false}"'MsgBox SendTxt, vbExclamation'Selection.TypeText Text:=SendTxtapi_key = "sk-xxx"Set 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
這里使用的是硅基流動的平臺,使用其它平臺需要修改的地方為API接口地址、模型名稱與對應的api_key。
第三步:解析返回的json數據,獲取content的內容。
為方便起見,我使用的是正則表達式進行content內容的提取。
代碼如下所示:
Dim regExp As Object
Set regExp = CreateObject("VBScript.RegExp")regExp.Pattern = """content"":""([^""]*)"""regExp.Global = TrueDim matches As Object
Set matches = regExp.Execute(response)Dim content As String
content = matches(0).SubMatches(0)
第四步:為了用戶體驗,打造假流式效果。
為了不覆蓋選中的內容,需要移動光標。然后為了用戶體驗,打造假流式效果。
代碼如下所示:
Selection.MoveDown Unit:=wdLine, Count:=1Selection.TypeParagraph ' 插入一個新段落,確保在下一行開始For i = 1 To Len(content)Dim char As Stringchar = Mid(content, i, 1)Selection.TypeText Text:=charDim startTime As SinglestartTime = TimerDo While Timer < startTime + 0.02DoEventsLoopNext i
直接使用我分享的插件
感興趣的朋友,可以根據我的分享,直接去寫一下。但是很多朋友對vba可能不感興趣,只是想在word中直接使用。
接下來我將手把手分享,如何使用我分享的插件。
首先關注公眾號“小銘同學的AI工具學習記錄”,發送“Word插件”,即可獲取word插件。
第一步:獲取大模型的API Key。
這里根據大家自己使用的大模型平臺而定。
如果沒有使用過,我比較推薦硅基流動這個平臺,新用戶注冊有14元永久額度,很多其它平臺額度都是有期限的。
邀請鏈接:https://cloud.siliconflow.cn/i/Ia3zOSCU。
注冊完成之后,點擊API密鑰,新建一個API密鑰。
模型名稱在模型廣場可以復制,比較推薦的是:deepseek-ai/DeepSeek-R1、deepseek-ai/DeepSeek-V3、meta-llama/Llama-3.3-70B-Instruct、Qwen/Qwen2.5-72B-Instruct-128K與Qwen/Qwen2.5-72B-Instruct。
第二步:在word中導入插件。
關注公眾號“小銘同學的AI工具學習記錄”,發送“Word插件”,即可獲取word插件。
下載下來,如下所示:
文件——》選項——》信任中心——》信任中心設置——》啟用所有宏——》確定。
文件——》選項——》自定義功能區——》勾選開發工具。
開發工具——》Visual Basic。
文件——》導入文件——》選擇剛剛下載的Word插件。
然后如果使用的是硅基流動,在這兩個文件的api_key位置填入自己的api_key即可,如果選擇其它平臺,如果兼容openai格式,改一下api地址、模型名稱然后填入自己的api_key即可。
點擊保存,會出現下面這個提示。
選擇否,然后啟用宏。
可以在不使用這個功能的時候,另存為docx就好了。
回到開發工具,新建一個分組。
選擇宏,添加到AI助手中。
現在word就出現了剛剛添加的插件:
第三步:使用插件
選中文本,再點擊選擇的功能即可。
AI助手是直接提問,AI論文擴寫助手是進行論文擴寫。
直接提問
AI論文擴寫
最后
如果你在實踐過程中,遇到了問題,也可以聯系我哦。