点击上方蓝色字“越山集” >右上角...>设为星标 ⭐
今天在看破局行动唯庸老师直播时,讲到扣子bot的发布平台支持飞书多维表格(其实是多维表格字段捷径)。看到它的使用方式,跟在本地Excel中通过函数方式调用AI很像。在线配置后,可白嫖扣子的大模型能力。
我有时会在本地Excel中调用大模型API,下面讲讲在Excel中调用AI大模型能力的实现方法,以及白嫖大模型方法。
Excel中使用AI大模型
如果你会用Excel里的函数,那就可以在Excel中调用API。
为什么要在Excel中调用API? 因为可以批量处理数据啊。场景包括但不限于:
信息抽取:从简历数据中提取用户的个人姓名,联系电话,毕业院校,简历关键字,一句话简介等; 语言翻译:将Excel表格中的中文说明翻译成不同的语言,便于跨国交流; 生成报告:根据Excel中的数据自动生成业务洞察报告或仪表板。 情感分析:分析客户反馈或评论的情感倾向,如正面、负面或中性。...
虽然现在WPS AI, Office Copilot也有AI能力了,但一来贵,二来没有大模型选择的自由。而通过AIExcel, 可以自由选择大模型,根据用量花费。如果上点心,很多模型厂商,比如智谱,经常会送API Token.
Excel中创建askai函数[可选]
本质上是在Excel中启用宏,通过添加宏代码,新建一个askai的函数。
这一步你可按照下面的提示操作,也可跳过,直接向我索要更新好的AIExcel文档。更新版支持月之暗面(KimiChat),智谱AI,通义千问,DeepSeek的API。百度,讯飞和腾讯的接口调用方式不支持HTTP的简单调用,所以没加进来。
这个过程就是在Excel中启用宏, 以下是详细步骤。
1. 启动Excel的VBA编辑器:
在Excel中,按下Alt+F11即可打开VBA编辑器。
或者从“开发工具”菜单选择“Visual Basic”进入。
如果你的菜单中没有“开发工具”选项,可以通过“文件”>“选项”>“自定义功能区”中勾选“开发工具”来添加它。
2. 插入新模块:
在VBA编辑器菜单中选择“插入”-“模块”,以添加一个新的模块。
3. 编写VBA代码:
在新模块中粘贴以下VBA代码。
此处我们定义了一个 askai 函数,用于发送提示词给对应的AI大模型,并接收其返回的输出。
Function askai(prompt As String) As String
' 声明变量
Dim url As String, apiKey As String
Dim response As Object, json As String, data As String
Dim ws As Worksheet
' 设置指向第一个工作表
Set ws = ThisWorkbook.Sheets(1)
' 从工作表的B1单元格获取API密钥
apiKey = ws.Range("B1").Value
' 检查API密钥是否为空
If apiKey = "" Then
MsgBox "请在Sheet1的B1单元格中填写apiKey", vbExclamation
askai = "Error: API key is missing"
Exit Function
End If
' 设置请求URL
url = "https://api.moonshot.cn/v1/chat/completions"
' 替换特殊字符,并构建要发送的JSON数据
Dim cleanPrompt As String
cleanPrompt = Replace(prompt, """", "\""") ' 转义双引号
cleanPrompt = Replace(cleanPrompt, vbCrLf, "\n") ' 替换Excel中的换行符为JSON中的\n
cleanPrompt = Replace(cleanPrompt, Chr(13), "\n") ' 替换回车符
cleanPrompt = Replace(cleanPrompt, Chr(10), "\n") ' 替换换行符
data = "{""model"":""moonshot-v1-8k""," & _
"""messages"":[{""role"":""user"",""content"":""" & cleanPrompt & """}]," & _
"""temperature"":0}"
' 初始化HTTP请求对象,并设置请求方法、URL和同步标志
Set response = CreateObject("MSXML2.ServerXMLHTTP")
response.Open "POST", url, False
' 设置请求头
response.setRequestHeader "Content-Type", "application/json"
response.setRequestHeader "Authorization", "Bearer " & apiKey
' 发送请求和数据
response.Send data
' 获取响应文本
json = response.responseText
' 解析JSON响应
Dim jsonObject As Object
Set jsonObject = JsonConverter.ParseJson(json)
' 从解析的JSON中提取所需内容并返回
On Error Resume Next
askai = jsonObject("choices")(1)("message")("content")
If Err.Number <> 0 Then
askai = "Error parsing response: " & json
End If
On Error GoTo 0
End Function
4. 导入Json解析依赖:
因为我们需要处理JSON数据,所以需要导入一个用于JSON解析的依赖。
可以从GitHub上下载相应的.bas文件 https://github.com/VBA-tools/VBA-JSON/blob/master/JsonConverter.bas,并通过“文件”-“导入文件”将其导入到项目中。
5. 设置引用:
在VBA编辑器中,选择“工具”-“引用”,并选中Microsoft Scripting Runtime,以便我们的代码能正常运行。6. 填入API Key:也就是前面生成的API Key,将它填到第一张工作表的B1单元格。
7. 在Excel中调用函数:
最后,在Excel表格中就可以直接调用 askai 函数,就像使用其他Excel函数一样,还可以通过拖动单元格角来批量处理数据。
随便在一个单元格输入 =askai("你好")
, 回车,如果有停顿一下,并返回结果,恭喜你,成功了。
保存文件时,选择支持宏的xlsm格式。
批量调用askai能力
现在我们这个Excel中有一个askai函数,你需要在第一张工作表的B1单元格,填入API Key。你也可以通过提示的链接获取其它厂商的API Key,然后将对应色块内的内容,复制到前三行。
只要能连网,就可以正常调用askai函数了。这个函数的输入就是prompt。而prompt可以在Excel里通过多列数据拼凑起来。
比如我需要提取自我介绍里的结构化信息,A列每一行就是一个完整的自我介绍,在B列,我拼凑准备prompt.
=CONCATENATE("请提取以下自我介绍中的个人信息,包括 昵称,城市,行业,5个个人关键词(列表),一句话介绍。 只输出Json格式。 自我介绍原文:", A2)
在C列,我填入=askai(B2)
, 回车,稍等片刻,askai的返回就出来了。
如何白嫖大模型
智谱的 glm-4-Flash 模型是免费的,从这里获取API Key https://open.bigmodel.cn/usercenter/apikeys
如果你需要,加我微信,发送暗号“Excel”, 我把支持4种大模型API的Excel发给你。
就酱,觉得有用的话,欢迎点赞点个“在看”。也欢迎加我好友, 交流, 围观, 学习。