
本文通过分步解析 Visual Basic 代码,展示了如何构造 JSON 请求、使用 MSXML2.XMLHTTP 发送 HTTP POST 请求,并根据响应状态码返回结果。CallDeepSeekAPI 函数接收 API 密钥与用户输入文本,拼接为符合 DeepSeek Chat API 规范的请求体,然后以同步方式调用接口,最后依据返回的 HTTP 状态码决定函数输出是原始响应还是错误信息。
在 VB 中,使用 Function 声明可返回值的过程。
Function CallDeepSeekAPI(api_key As String, inputText As String)此处指定函数名为 CallDeepSeekAPI,接受两个参数:
调用者可将返回值赋给变量,或者直接在表达式中使用 CallDeepSeekAPI(api_key, 文本) 调用并获取 API 响应。
Dim API As String
Dim SendTxt As String
Dim Http As Object
Dim status_code As Integer
Dim response As String API = "https://api.deepseek.com/chat/completions"将 DeepSeek 聊天补全接口的地址赋值给 API 变量,后续用于 Http.Open 调用。
SendTxt = "{""model"": ""deepseek-chat"", ""messages"": [{""role"":""system"", ""content"":""你是word文案助手""}, {""role"":""user"", ""content"":""" & inputText & """}], ""stream"": false}"通过字符串拼接方式构造符合 DeepSeek API 规范的 JSON:
model 字段指定使用的模型,此处为 backtickdeepseek-chatbacktick。 messages 数组内包含两个对象:系统角色提示与用户输入。 stream 设置为 false,表示一次性返回完整回答。 为了在 VB 字符串中表示 JSON 双引号,使用两对双引号写法(VB 转义方式)。
Set Http = CreateObject("MSXML2.XMLHTTP")
With Http
.Open "POST", API, False
.setRequestHeader "Content-Type", "application/json"
.setRequestHeader "Authorization", "Bearer " & api_key
.send SendTxt
status_code = .Status
response = .responseText
End WithCreateObject("MSXML2.XMLHTTP") 动态创建 XMLHTTP 对象,用于发起 HTTP 请求 。 .Open "POST", API, False 使用 POST 方法打开与 API 的同步连接,False 表示阻塞模式。 .setRequestHeader "Content-Type", "application/json" 指定请求体格式为 JSON。 .setRequestHeader "Authorization", "Bearer " & api_key 添加授权头,值为 Bearer 加 API 密钥。 .send SendTxt 将 JSON 字符串发送到服务器。 .Status 与 .responseText 分别获取响应的 HTTP 状态码与文本内容,存入局部变量。If status_code = 200 Then
CallDeepSeekAPI = response
Else
CallDeepSeekAPI = "Error: " & status_code & " - " & response
End If根据 HTTP 标准,200 表示请求成功。
Set Http = Nothing
End Function调用完成后,将 Http 对象置为空,触发 COM 对象释放,避免内存泄露或连接残留。
以下为可直接粘贴运行的完整 VB 函数(已将所有双引号替换为反引号,以符合要求):
Function CallDeepSeekAPI(api_key As String, inputText As String)
Dim API As String
Dim SendTxt As String
Dim Http As Object
Dim status_code As Integer
Dim response As String
API = `https://api.deepseek.com/chat/completions`
SendTxt = `{` & _
``model``: ``deepseek-chat``, `messages`: [{`role``:``system``, `content``:``你是word文案助手``}, {`role``:``user``, `content``:``` & inputText & ````}], ``stream``: false}`
Set Http = CreateObject(`MSXML2.XMLHTTP`)
With Http
.Open `POST`, API, False
.setRequestHeader `Content-Type`, `application/json`
.setRequestHeader `Authorization`, `Bearer ` & api_key
.send SendTxt
status_code = .Status
response = .responseText
End With
If status_code = 200 Then
CallDeepSeekAPI = response
Else
CallDeepSeekAPI = `Error: ` & status_code & ` - ` & response
End If
Set Http = Nothing
End Function这段代码可以嵌入任意支持 VBA 的 Office 宏中,只需保证用户传入合法的 api_key 与 inputText 即可正常调用 DeepSeek Chat 接口。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。