今天跟大家分享下我們?nèi)绾巫远x一個ExcelAI函數(shù),幫助我們解決各種問題,操作也非常的簡單,只需選擇單元格,然后提出對應的要求即可,具體的效果如下圖所示。 ![]() 一、關于卡的問題 之前將過如何將Deepseek嵌入的Excel表格,不少粉絲反饋太卡了,卡并不是代碼卡,而是DeepSeek用的人太多,API調(diào)用的比較慢,如果你感覺卡,可以從云服商那里調(diào)取deepseek或者別的大模型,今天我們就是在火山調(diào)用的豆包的大模型,速度也比較快了 ![]() 二、調(diào)用別的模型 我們就以火山引擎為例,跟大家簡單的演示下,關鍵需要或許三個參數(shù):KEY、模型的URL以及模型ID,這些在調(diào)用的時候有提示的,根據(jù)操作來一步一步的操作即可,具體如下圖所示 ![]() 三、更改代碼 下面的代碼我需要更改3處,具體操作如下所示,大家可直接粘貼代碼的時候修改下 Const API_KEY As String = "你的API" Const API_URL As String = "模型的URL地址" BuildSafeInput = "{""model"":""模型的ID"",""messages"" Function ExcelAI(TargetCell As Range, Question As String) As Variant On Error GoTo ErrorHandler Const API_KEY As String = "你的API" ' 需替換有效密鑰 Const API_URL As String = "模型的URL地址" ' 構(gòu)建安全請求 Dim safeInput As String safeInput = BuildSafeInput(TargetCell.Text, Question) ' 發(fā)送API請求 Dim response As String response = PostRequest(API_KEY, API_URL, safeInput) ' 解析響應內(nèi)容 If Left(response, 5) = "Error" Then ExcelAI = response Else ExcelAI = ParseContent(response) End If Exit FunctionErrorHandler: ExcelAI = "Runtime Error: " & Err.DescriptionEnd Function' 構(gòu)建安全輸入內(nèi)容Private Function BuildSafeInput(Context As String, Question As String) As String Dim sysMsg As String If Len(Context) > 0 Then sysMsg = "{""role"":""system"",""content"":""上下文:" & EscapeJSON(Context) & """}," End If BuildSafeInput = "{""model"":""模型的ID"",""messages"":[" & _ sysMsg & "{""role"":""user"",""content"":""" & EscapeJSON(Question) & """}]}"End Function' 發(fā)送POST請求Private Function PostRequest(apiKey As String, url As String, payload As String) As String Dim http As Object Set http = CreateObject("MSXML2.XMLHTTP") On Error Resume Next With http .Open "POST", url, False .setRequestHeader "Content-Type", "application/json" .setRequestHeader "Authorization", "Bearer " & apiKey .send payload If Err.Number <> 0 Then PostRequest = "Error: HTTP Request Failed" Exit Function End If ' 增加10秒超時控制 Dim startTime As Double startTime = Timer Do While .readyState < 4 And Timer - startTime < 10 DoEvents Loop End With If http.Status = 200 Then PostRequest = http.responseText Else PostRequest = "Error " & http.Status & ": " & http.statusText End IfEnd Function' JSON特殊字符轉(zhuǎn)義Private Function EscapeJSON(str As String) As String str = Replace(str, "\", "\\") str = Replace(str, """", "\""") str = Replace(str, vbCr, "\r") str = Replace(str, vbLf, "\n") str = Replace(str, vbTab, "\t") EscapeJSON = strEnd Function' 智能解析響應內(nèi)容Private Function ParseContent(json As String) As String Dim regex As Object, matches As Object Set regex = CreateObject("VBScript.RegExp") ' 增強版正則表達式 With regex .Pattern = """content"":\s*""((?:\\""|[\s\S])*?)""" .Global = False .MultiLine = True .IgnoreCase = True End With Set matches = regex.Execute(json) If matches.Count > 0 Then Dim rawText As String rawText = matches(0).SubMatches(0) ' 反轉(zhuǎn)義處理 rawText = Replace(rawText, "\""", """") rawText = Replace(rawText, "\\", "\") rawText = Replace(rawText, "\n", vbCrLf) rawText = Replace(rawText, "\r", vbCr) rawText = Replace(rawText, "\t", vbTab) ParseContent = rawText Else ' 錯誤信息提取 Dim errMatch As Object regex.Pattern = """message"":\s*""(.*?)""" Set errMatch = regex.Execute(json) If errMatch.Count > 0 Then ParseContent = "API Error: " & errMatch(0).SubMatches(0) Else ParseContent = "Invalid Response" End If End IfEnd Function 四、復制代碼 打開Excel點擊【開發(fā)工具】最左側(cè)點擊VB的編輯窗口,然后在右側(cè)點擊窗口,找到【模塊】插入模塊后將代碼直接粘貼到右側(cè)的空白區(qū)域即可,一定需要記得將上面的三處做一下修改,才能正確的調(diào)用到這個模型,至此就設置完畢了 用法:=ExcelAI(單元格,”你需要的結(jié)果”) ![]() |
|