本地Excel中调用AI大模型

文摘   2024-11-10 21:37   重庆  

点击上方蓝色字“越山集” >右上角...>设为星标 ⭐

今天在看破局行动唯庸老师直播时,讲到扣子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发给你。

就酱,觉得有用的话,欢迎点赞点个“在看”。也欢迎加我好友, 交流, 围观, 学习。


越山集
专注AI智能体,分享AI应用,探索和实践AI应用落地,我是越山,关注我,让AI为你打工。
 最新文章