之前跟大家分享了,如何調(diào)用Deepseek的API制作ExcelAI函數(shù),但是不少粉絲都反饋體驗(yàn)不好,主要還是反饋的結(jié)果太慢,數(shù)據(jù)量一大,就能不行了。
今天解決的方法來了,就是調(diào)用豆包的API,結(jié)果基本都是秒出,做到了跟常規(guī)函數(shù)幾乎一樣的速度,真的太爽了
一、找到豆包
想要調(diào)用豆包的API就需要通過火山引擎調(diào)用,這個就不再贅述了,之前都發(fā)過視頻了的,大家可以搜一下,注冊就是手機(jī)號注冊,然后實(shí)名認(rèn)證就可以調(diào)用API了
來到首頁后,我們需要在右側(cè)點(diǎn)擊【模型廣場】有的找到【Doubao-1.5-lite-32k】然后點(diǎn)擊【查看詳情】
為什么要選擇【Doubao-1.5-lite-32k】這個模型呢,因?yàn)檫@個是輕量化的模型,主打低延遲,速度更快,我們使用ExcelAI函數(shù)的體驗(yàn)也會更好
二、調(diào)用API
點(diǎn)擊【查看詳情】后會來到一個新的窗口,我們需要在當(dāng)前的窗口中找到【推理】之后就會在右側(cè)看到一個窗口,如下截圖,我們獲取三處關(guān)鍵的數(shù)據(jù)
1.API KEY】這個需要自己創(chuàng)建下
2.【url它就是API】的地址,已經(jīng)在下圖標(biāo)注,記得全部復(fù)制
3.【Model】它就是模型的ID
獲取上方的三個關(guān)鍵數(shù)據(jù)后,就能做API的調(diào)用了
三、更改代碼
當(dāng)前的代碼我們需要修改3處,也正好對應(yīng)我們上一步獲取的三處,大家記得一定要全部替換下才能正確調(diào)用API,修改后使用這個AI函數(shù)了,下面是它的參數(shù)
=ExcelAI(需要處理的單元格,”你的需求”)
1.【你的API替換為】豆包的API KEY
2.【模型的URL地址】替換為豆包的url
3.【模型的ID】替換為豆包的模型ID
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)
' 解析響應(yīng)內(nèi)容
If Left(response, 5) ="Error"Then
ExcelAI = response
Else
ExcelAI = ParseContent(response)
End If
Exit Function
ErrorHandler:
ExcelAI ="Runtime Error: "& Err.Description
End 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秒超時(shí)控制
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 If
End 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 = str
End Function
' 智能解析響應(yīng)內(nèi)容
Private Function ParseContent(json As String) As String
Dim regex As Object, matches As Object
Set regex = CreateObject("VBScript.RegExp")
' 增強(qiáng)版正則表達(dá)式
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 If
End Function
以上就是今天分享的全部內(nèi)容,大家可以試一下~
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.