WPS多维表格接入扣子大模型教程

在之前的帖子:多维表接入第三方AI平台 中,我将第三方大模型平台接入到了多维表格中。效果不错,但是玩起来枯燥乏味,缺少精细化管理能力。😒

相比之下,之前我一直关注的大模型平台:扣子coze 的可玩性要高很多,可以设置多bot、可以调用插件、工作流、知识库、有变量、长期记忆、文件盒子等等非常丰富的功能。原本想要创建出一个专属于自己行业的大模型,需要进行模型微调,其中涉及到超多数据量以及漫长的人工标注,但是扣子可以直接把文档扔进知识库里,回答的时候就可以调用,可以说非常贴合实际需要。😏

但是扣子本身的请求逻辑和先前帖子里的第三方AI平台不一样(甚至和自家的火山方舟都不一样),让我这个二半吊子敲了好几天代码。好在最后是跑起来了。无需多言,直接开始教程。👉

  1. 设置bot

在扣子中,有三个板块,左中右分别是“人设与回复逻辑(prompt提示词)”,“技能”和“预览与调试”。流程是先根据自己的想法在中间添加技能,然后编写左边的提示词(可以编辑一小部分,剩下的让AI生成),最后在右边问问题。

如果模型回答的不够好,有以下方法:

1、更改提示词,扣子的AI生成有两种模式,可以根据调试结果,把自己的想法再扔给AI重新生成

2、更改模型,选择模型时,有一个“模型对比调试”,点击后可以同时选择两个模型同时输出,对比下也能选出更好的模型

3、更改技能,比如更改知识库里的处理方式。我将文档分段策略从“自动分段”改为“按层级分段”后,大模型就能更好理解文档,最终可以更准确地调用知识库内容。当然,其他技能也可以根据需要进行调试。

全部齐活后,点击右上角的“发布”,发布平台只选择下面的API,最后再点一次右上角的发布,bot端就算OK了。

  1. 接入到多维表格

为什么花了这么长时间呢?就是因为扣子的逻辑和其他的不一样,其他的只需要一个请求,服务器会自动返回,相当于你点了菜,服务员做好了就端上来。但扣子需要三个请求,分别对应创建、查询状态、接收信息,相当于你得自己点菜,得自己去后厨看进度,进度好了还不能从后厨直接端菜,要去取菜区才行。

这里面还有各种小问题,什么参数得写到url里、轮询什么的,就不多说了,都是新手该走的坑。

在查看代码前,建议先看前一个帖子,因为本帖不会重复上一个帖子的内容。

整体逻辑是:按下按钮后,先进行初始请求,然后进行轮询,间隔2秒、共20次(注意,代码里没写超时了应该怎么办),当传回来的消息为完成时,进行最后一次请求,搞到大模型的输出内容,然后输出到单元格里。

点击查看:多维表接入第三方AI平台

const textid = Context.argv.id[0];
const text = Application.Sheets('数据表名称').RecordRange(textid, "@要处理的文本").Text;

// 发送初始请求
const initialResp = HTTP.fetch('https://api.coze.cn/v3/chat', {
  method: 'POST',
  body: JSON.stringify({
    bot_id: "7488942086679527464",//在bot发布后,再回到bot的编辑界面,最后一个斜杠后面的数字就是bot_id
    user_id: "123",//随便填,这个可以在扣子里的发布管理里看到
    additional_messages: [
      { "role": "user", "content": text },
    ],
  }),
  headers: {
    'Authorization': 'Bearer pat_2UrMJaG9CjTmCARYF1wS0kCJct4CxqIVuqgTxFClYkl7BeXt2oxxxxxxxxxxx',//替换成你自己的API
    'Content-Type': 'application/json'
  }
});

const initialData = initialResp.json();
const chatId = initialData.data.id;
const conversationId = initialData.data.conversation_id;
let attempts = 0;

// 使用初始请求返回的 chatId 和 conversationId


while (attempts < 20) {//一共进行2*20秒的轮询,如果你的bot反应时间长的话可以再加
  Time.sleep(2000);
  const statusResp = HTTP.fetch(`https://api.coze.cn/v3/chat/retrieve?chat_id=${chatId}&conversation_id=${conversationId}`, {
    headers: {
      'Authorization': 'Bearer pat_2UrMJaG9CjTmCARYF1wS0kCJct4CxqIVuqgTxFClYkl7xxxxxxxxxx',//替换成你自己的API
      'Content-Type': 'application/json',
    },
    method: 'GET'
  });

  const statusData = statusResp.json();
  console.log("处理中")
      Application.Sheets('数据表名称').RecordRange(textid,"@要处理的文本").Value = "处理中"

  if (statusData.data && statusData.data.status === "completed") {
    const finalResult = HTTP.fetch(`https://api.coze.cn/v3/chat/message/list?chat_id=${chatId}&conversation_id=${conversationId}`,{
            headers:{
      'Authorization': 'Bearer pat_2UrMJaG9CjTmCARYF1wS0kCJct4CxqIVuqgTxFClYkl7BeXt2xxxxxxxx',//替换成你自己的API
      'Content-Type': 'application/json',
      }
    })
    const output = finalResult.json().data[1].content
    console.info(output)
      Application.Sheets('数据表名称').RecordRange(textid,"@要输出的单元格").Value = output
    break;
  }

  attempts++;
}

河南省
浏览 122
1
4
分享
4 +1
1
1 +1
全部评论 1
 
暂时没看懂,先点个赞
· 广东省
回复