多维表接入第三方AI平台(以硅基流动举例)

前言:在官方没有正式推出AI算力平台前,使用第三方AI算力平台可以提前搭建框架,展现未来多维表格所能达成的效果。

AI算力平台基本都会使用API的形式进行交互操作,随原理相同,但操作起来对于零基础人员来说仍有困难。例如笔者在尝试由@邻家小哥 所展示的接入deepseek官网API代码的时候,它们已经暂停充值API余额(现已恢复),于是使用第三方算力平台进行代替,但代码不能简单复用,只能逐步纠错,好在最后成功运行。

本次尝试的硅基流动仅仅是其中的一家AI算力平台,华为云、阿里云、腾讯云等等都有对应的算力平台服务,根据需求可以自行选择,这里只介绍接入第三方的基本思路。

再次感谢@邻家小哥提供的代码思路。

  1. 效果

https://kdocs.cn/l/cpJVIXiOfQNL

请注意:笔者的API余额仅支持大概100张照片(或一万次文本)的分析。虽然免费使用,但仅供学习,请不要滥用。

共分两张表:TLM测试 和 VLM 测试,一个是文本Text,一个是视觉Visual。

  1. 构建js代码

第一步,找到右上角的脚本-AirScript脚本-新建脚本(以后要找的时候就点击“管理脚本”,直接点击已经建好的脚本会运行它),然后,将示例代码删除。

我们以TLM为例,逐步分析代码:

const text_id = Context.argv.id[0]
const text1 = Application.Sheets('TLM测试').RecordRange(text_id,"@问题").Text
const text = "你是一名专业的翻译老师,你只翻译单词,不会输出任何解释,请翻译:" +text1

//请求 API
const url = 'https://api.siliconflow.cn/v1/chat/completions'
const apiKey = "sk-darottdejporyoewkzqfxyeclbyyfhsdajhpwgeideedtzgk"
const data = {
    model:"Pro/deepseek-ai/DeepSeek-V3",
    messages:[
        {"role": "user", "content": text},
    ],
  };
  const resp = HTTP.fetch(url, {
    method: 'POST',
    body: JSON.stringify(data),
    headers: {
      'Authorization': `Bearer ${apiKey}`,
      'Content-Type': 'application/json'
    }
  })
  const resptext= resp.json().choices[0].message.content
  Application.Sheets('TLM测试').RecordRange(text_id,"@deepseek回复").Value = resptext

console.log(resptext)

以上是完整代码,你也可以在刚才分享的链接里找到。但要注意,现在的代码是“活代码”,直接复制粘贴是无法使用的。需要修改其中的一些内容:

第二行:将“TLM测试”改为要操作的数据表名称,将@问题改为要输入的字段(别少了@)

第三行:这是提问模板,可以根据自己的要求更改,原理和公式字段类似,不做过多解释。

第六行:请求的网址,需要在各个平台的API手册去找,硅基流动的地址和代码里的一样。

第七行:将API KEY 改为自己的,如何申请需要去对应的第三方平台询问。以硅基流动举例,如下图:

第九行:model,这里可以更改大模型,只要平台里有的,复制过来名字就可以用。

第二十三行:与第二行类似,第一个要改的是数据表的名字,第二个是回答区。

修改完毕后,粘贴到你的多维表脚本里。

三、添加服务授权与自动化流程

如图,点击服务授权,然后添加网络API,之后先运行一次,确认授权(不管错误代码,先授权了再说)

授权完后,新建一个按钮字段,设置“点击后执行Air Script脚本”,然后在自动化流程里的“执行airscript脚本”步骤里,找到右边的“脚本入参”,如下图般填写。

其中,双引号和冒号要用半角,“记录ID”要在右边的蓝色加号里找

最后点击右上角的“保存并启用”。构建就算完成了。

最后的最后,点击按钮,就可以让大模型开始工作了。要注意,只要回复框里没内容,那就是失败了,自行尝试解决,或者在帖子下留言都可以。

另外,VLM的思路类似,只是增加了一个需要操作的图片地址字段。代码如下,自然也可以在示例链接里找到:

const textid = Context.argv.id[0]
const value = Application.Sheets('VLM测试').RecordRange(textid,"@图片和附件").Value
const mid1 = value.Value
const imgurl = mid1[0].LinkUrl
const question = Application.Sheets('VLM测试').RecordRange(textid,"@问题").Text

const options = {
  method: 'POST',
  headers: {
    Authorization: 'Bearer sk-darottdejporyoewkzqfxyeclbyyfhsdajhpwgeideedtzgk',
    'Content-Type': 'application/json'
  },
  body:JSON.stringify({
    model: "Qwen/Qwen2-VL-72B-Instruct",
    messages: [
      {
        role: "user",
        content: [
          {
            type: "image_url",
            image_url: {
              url: imgurl, // 将 imgurl 插入到这里
              detail: "auto",
              text: "tell me what you have seen in this picture,more detailed the better"
            }
          }
        ]
      },
]
  })};

const resp = HTTP.fetch('https://api.siliconflow.cn/v1/chat/completions', options)
const resptext = resp.json().choices[0].message.content

console.log(resptext)


Application.Sheets('VLM测试').RecordRange(textid,"@回答").Value = resptext
河南省
浏览 460
1
5
分享
5 +1
2
1 +1
全部评论 2
 
王禹成

创作者俱乐部成员

点赞
· 浙江省
回复
 
膜拜大神
· 河南省
回复