作為Excel 的高級用戶,我今天與大家分享如何在Excel中快速接入DeepSeek大模型的方法。
當然,只要你的模型調(diào)用是符合OpenAPI規(guī)范的,都可以用同樣的方法從Excel文件中來調(diào)用。
先上一個最后的效果圖。
有了這個Excel 文件后,在文件的“Settings” sheet中配置后,用戶在問題格(黑色格)中輸入問題,點擊“發(fā)送”按鈕,依據(jù)你的模型運行速度,就可以很快在大模型回答格(淡藍色格)中看到答案。基本工作原理是Excel是支持使用VBA語言編程的。在這個Excel文件里面我用VBA寫了一個程序。這個程序來讀以下“settings” sheet中的模型地址和設(shè)置,然后根據(jù)地址來向大模型服務(wù)發(fā)送請求。 這個大模型服務(wù)可以是你本地部署的ollama,也可以是你注冊的其它大模型云端服務(wù)。云端服務(wù)需要從服務(wù)商獲得API KEY,并設(shè)置在Settings sheet中的相應格子中,本地部署的不用API KEY,你就隨便寫一個就好。模式一。全部程序都在本地,無需聯(lián)網(wǎng)。模型一需要本地部署ollama,教程在前面我的微信號中。模式二。 你的Excel 去調(diào)用遠程的云端大模型服務(wù),需要去找個大模型云端服務(wù)商進行注冊,并獲得地址和API Key本文主要是介紹如何構(gòu)建這個deepseekdemo.xlsm Excel 文件。 具體構(gòu)建這個Excel文件只需要五步,就可以在文件中調(diào)用Deepseek 模型了!步驟1. 打開Excel 的開發(fā)工具窗口。 步驟4. 在worksheet “Settings” 中設(shè)置模型地址和模型名稱參數(shù)。 步驟5. 創(chuàng)建發(fā)送按鈕。保存Excel完成五個步驟后,回到第一個Sheet,輸入你的問題,就可以看到前面的效果了。
步驟1. 打開Excel 的開發(fā)工具窗口。 1.1 打開Excel,如果看不到“開發(fā)者工具”菜單 按下Alt + F11
直接打開VBA編輯器。2.1 在上圖的紅色圈子中右點鼠標插入Excel VBA 模塊。2.2 你可以先把模塊1名字改成:modLLM。 然后在右邊窗口copy進下面VBA程序。Public Function CallLLM(strUserQry As String)
Dim question As String
Dim response As String
Dim p_url As String
Dim p_apiKey As String
Dim http As Object
Dim content As String
Dim startPos As Long
Dim endPos As Long
question = strUserQry
p_url = Trim(Range("pmodelurl").Cells(1, 1).Value)
p_apiKey = Trim(Range("pmodelapikey").Cells(1, 1).Value)
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", p_url, False
http.setRequestHeader "Content-Type", "application/json"
http.setRequestHeader "Authorization", "Bearer " & p_apiKey
Dim requestBody As String
requestBody = "{""model"":""" & Trim(Range("pmodelname").Cells(1, 1).Value) & """,""messages"":[{""role"":""user"",""content"":""" & question & """}]}"
http.send requestBody
Dim strContent As String
If http.Status = 200 Then
response = http.responseText
startPos = InStr(response, """content"":""") + Len("""content"":""")
endPos = InStr(startPos, response, """},")
content = Mid(response, startPos, endPos - startPos)
strContent = ConvertUnicodeToText(content)
Else
strContent = "Error: " & http.Status & " - " & http.statusText
End If
CallLLM = strContent
End Function
Function ConvertUnicodeToText(ByVal mixedText As String) As String
Dim regex As Object
Dim matches As Object
Dim match As Object
Dim unicodeCode As String
Dim convertedText As String
' 創(chuàng)建正則表達式對象
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = "\\u([0-9A-Fa-f]{4})"
regex.Global = True
' 執(zhí)行正則表達式匹配
Set matches = regex.Execute(mixedText)
convertedText = ""
Dim i As Long
For i = 0 To matches.Count - 1
Set match = matches(i)
unicodeCode = match.SubMatches(0)
' 將Unicode編碼轉(zhuǎn)換為字符
convertedText = convertedText & ChrW("&H" & unicodeCode)
' 保留匹配之間的原始文本
If i < matches.Count - 1 Then
Dim startPos As Long
Dim endPos As Long
startPos = match.FirstIndex + match.Length
endPos = matches(i + 1).FirstIndex
convertedText = convertedText & Mid(mixedText, startPos + 1, endPos - startPos)
Else
' 最后一個匹配之后的所有文本
convertedText = convertedText & Mid(mixedText, match.FirstIndex + match.Length)
End If
Next i
' 如果沒有匹配到任何Unicode編碼,則直接返回原始文本
If convertedText = "" Then
ConvertUnicodeToText = Replace(mixedText, "\n", vbCrLf)
Else
ConvertUnicodeToText = Replace(convertedText, "\n", vbCrLf)
End If
End Function
這時窗口應該是這樣的:
關(guān)閉,保存VBA程序窗口。 回到Excel界面。
步驟3. 設(shè)置range 名稱
因為我在程序中使用了命名的Range,需要先設(shè)置幾個Range 名字。 3.1 增加一個“Settings”的sheet。 名字一定要叫“Settings"3.2. 在settings zhong,輸入以下三行信息(黑色背景)。 把這三個cell分別命名成“Named Range” 名稱為:pmodelurl, pmodelname,pmodelapikey不知道什么叫“Named Range", 去查Excel 文檔。 3.3. 回到Sheet1, 在Sheet1中按照下面布局輸入。3.4 然后將問題部分命名”Named Range“ 名字為: puserquery. 把大模型回答cell命名為:pllmanswer. 命名完成后,在下圖位置下拉可以看到這幾個“Named Range”步驟4. 在worksheet “Settings” 中設(shè)置模型地址和模型名稱參數(shù)。 點擊“Settings” sheet, 保證這三個參數(shù)是正確的。
? 模式一。 本地部署ollama的,這里你只需要改一個地方:模型名稱改到你的ollama支持的模型名稱。 模型名字一定要匹配ollama的。 那你可以輸入哪些具體模型名字呢?在命令行,輸入:ollama list模式二。使用云端大模型服務(wù)的, 你需要從云服務(wù)商獲得模型地址和模型API key,和支持的模型名稱。輸入這三個。 步驟5. 創(chuàng)建發(fā)送按鈕。保存Excel5.1 在sheet1 中,找到”開發(fā)者工具“菜單,點擊添加按鈕。 鼠標變成十字星,選擇在C2 cell位置畫一下,就會彈出這樣的宏窗口。 5.2 點擊“新建”。 出現(xiàn)宏編輯窗口。 Range("pllmanswer").Cells(1, 1).Value = CallLLM(Trim(Range("puserquery").Cells(1, 1).Value))
5.4 關(guān)閉VBA代碼編輯回到Excel Sheet1, 保存。 注意:一定要選擇“xlsm” 格式保存!!。 否則VBA代碼不會保存。現(xiàn)在大功告成了, 你可以輸入問題,等待大模型回答了。
閱讀原文:原文鏈接
該文章在 2025/2/12 9:13:13 編輯過