搭载AI之后的表格插件又有哪些新的改变

搭载,ai,之后,表格,插件,哪些,改变 · 浏览次数 : 268

小编点评

**摘要** 本文介绍了ChatGPT插件中“Function calling”功能的更新,该功能允许OpenAI model根据系统中函数的描述生成外部系统可以直接使用的结构化的 JSON参数,从而简化数据透视表的建立。 **功能介绍** * 使用Function calling,OpenAI模型可以根据你对系统中functions的描述来生成外部系统可以直接使用的结构化的 JSON参数。 * 通过Function calling,OpenAI模型可以根据你对系统中functions的描述来生成外部系统可以直接使用的结构化的 JSON参数,从而简化数据透视表的建立。 * 功能调用支持多种数据类型,包括字符串、数字、列表和对象。 **解决问题** * ChatGPT插件的一个明显问题是返回的结果格式可能插件也无法进行分析使用,因为该结果格式可能与后续的操作无法继续执行。 * 由于Function calling是基于语言模型的,其性能受模型训练和数据集的限制。 **结论** Function calling功能可以有效解决ChatGPT插件中“返回的结果格式可能插件也无法进行分析使用”的问题,简化数据透视表的建立。该功能提供了新的交互方式,使OpenAI 模型可以更方便地与系统进行数据分析。

正文

摘要:本文由葡萄城技术团队于博客园原创并首发。葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

《大火的ChatGPT与SpreadJS结合会有哪些意想不到的效果》一文中提到ChatGPT插件的一个明显的问题,那就是“返回的结果格式可能插件也无法进行分析使用,从而是使得后续的操作无法继续执行”。造成这个问题原因与ChatGPT的技术原理有一定的关系。

模型预言的限制:ChatGPT是基于语言模型的,其性能受模型训练和数据集的限制。对于复杂的问题可能并不能准确返回结果,同时返回的结果格式可能插件也无法分析使用。

但随着6月13日发布Chat Completions API 的function calling能力,这个问题得到了很好的解决。此次更新带来了新的模型,更大的内容,更低的价格,而Function calling更是带来了革命性的互动方式。

通过Function calling,OpenAI model可以根据你对系统中functions的描述来生成外部系统可以直接使用的结构化的JSON参数,这样GPT就可以更好的和外部系统结合。

以前文中“建议的数据透视表”为例,对于提供的表格数据,text-davinci-003 model会返回建议的文本内容:

"text": "\n\n行:销售人员\n列:品牌\n值:销售额\n\n通过这样设置可以分析出每个销售人员销售的不同品牌的总销售额。"

虽然有换行等符号可以解析所需要的行列值,但是稳定性十分不确定,程序很难直接使用。

通过使用Function calling,数据透视表的建立就会变得非常简单。还是以OpenAI官方提供的nodejs支持为例。

  1. 在对话中加入functions描述

  2. 1.  let messages = [
    2.  {"role": "user", "content": "最后的JSON数据第一行是数据字段,创建有分析意义的数据透视表\\n" + JSON.stringify(data)}
    3.  ]
    4.  let functions = [{
    5.  "name": "pivot_talbe_analyze",
    6.  "description": "对数据创建数据透视表,返回数据透视表结果",
    7.  "parameters": {
    8.  "type": "object",
    9.  "properties": {
    10.  "rowFieldName": {
    11.  "type": "string",
    12.  "description": "行字段名称"
    13.  },
    14.  "columnFieldName": {
    15.  "type": "string",
    16.  "description": "列段名称"
    17.  },
    18.  "dataFieldName": {
    19.  "type": "string",
    20.  "description": "值字段名称"
    21.  },
    22.  },
    23.  },
    24.  "required": ["rowFieldName", "dataFieldName"]
    25.  }]
    26.  
    27.  var response = openai.createChatCompletion({
    28.  "model": "gpt-3.5-turbo-0613",
    29.  "messages": messages,
    30.  "functions": functions,
    31.  "functions_call": {"name": "pivot_talbe_analyze"}
    32.  });
    

一次对话可以有多个function描述,每个function描述包含名称,描述,方法参数(描述规则是JSON Schema),以及那些parameter是必选的。

对于选择区域创建数据透视表,需要提供行、列、值三个维度的字段名称,因此需要rowFieldName、columnFieldName和dataFieldName三个paramenter。

另外,可以通过function_call设置选择function的模式,当functions字段不为空时默认为“auto”,示例中指定了function pivot_talbe_analyze。

完成调用直接返回了function name 和parameters中的三个参数:

{name: 'pivot_talbe_analyze', arguments: '{\\n "rowFieldName": "销售人员",\\n "columnFieldName": "品牌",\\n "dataFieldName": "销售额"\\n}'}
  1. 使用GPT返回结果并创建透视表

通过返回的function name 和parameters可以直接调用系统中的对应方法创建的透视表了。

let args = JSON.parse(completion.data.choices[0].message.function_call.arguments)

let pivotTable = sheet.pivotTables.add("PivotTable", "Table1", 2, 7, GC.Spread.Pivot.PivotTableLayoutType.outline, GC.Spread.Pivot.PivotTableThemes.medium2);

pivotTable.add(args.rowFieldName, args.rowFieldName, GC.Spread.Pivot.PivotTableFieldType.rowField);

if(args.columnFieldName)

pivotTable.add(args.columnFieldName, args.columnFieldName, GC.Spread.Pivot.PivotTableFieldType.columnField);

pivotTable.add(args.dataFieldName, "求和项:" + args.dataFieldName, GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);

获取SpreadJS透视表结果如下:

let ptRange = pivotTable.getRange().content;

let ptData = sheet.getArray(ptRange.row, ptRange.col, ptRange.rowCount, ptRange.colCount);

1.  给GPT反馈公式调用结果

messages.push(completion.data.choices[0].message)

messages.push({"role": "function", "name": "pivot_talbe_analyze", "content": JSON.stringify({pivotTable: ptData})})

response = openai.createChatCompletion({

"model": "gpt-3.5-turbo-0613",

"messages": messages,

"functions": functions,

function_call: "none"

});

response.then(function(completion){

let desc = completion.data.choices[0].message.content;

GC.Spread.Sheets.Designer.showMessageBox(desc, "分析结果", GC.Spread.Sheets.Designer.MessageBoxIcon.info)

});

将历史和获取到的透视表信息添加到messages中,这里message rule多了function类型,content就是调用function的返回结果。

调用时function_call设置none,不要使用function calling, GPT根据上下文返回了如下信息:

{role: 'assistant', content: '以下是创建的数据透视表:\n\n\`\`\`\n[\n ["求和项:销售额", "品牌", null, null…\n]\n\`\`\`\n\n该数据透视表按照销售人员和品牌对销售额进行了汇总,可以更方便地进行数据分析和比较。'}

接下来可以发送新的请求让GPT对数据做进一步的分析处理,当然对于一些系统操作,我们做到步骤2就可以了。

总结一下,通过Function calling,自身系统和openai model互动更加简便,耦合的更加紧密,系统通过互动的方式向ChatGPT model发起请求,model可以智能选择需要调用的系统function,进一步提升了系统的创造性。

不过还是需要提醒,对于调用系统数据更新删除的方法,还是要做好确认再去执行。

扩展链接:

随笔-当ChatGPT遇见SpreadJS

POI打开Excel文件遇到out of memory的解决实践

与搭载AI之后的表格插件又有哪些新的改变相似的内容:

搭载AI之后的表格插件又有哪些新的改变

摘要:本文由葡萄城技术团队于博客园原创并首发。葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 在[《大火的ChatGPT与SpreadJS结合会有哪些意想不到的效果》](https://www.grapecity.com.cn/blogs/chatgpt-meets-spreadjs

无需搭建环境,零门槛带你体验Open-Sora文生视频应用

本文分享自华为云社区《Open-Sora 文生视频原来在AI Gallery上也能体验了》,作者:码上开花_Lancer。 体验链接:Open-Sora 文生视频案例体验 不久前,OpenAI Sora 凭借其惊人的视频生成效果迅速走红,在一堆文本转视频模型中脱颖而出,成为全球关注的焦点。之后,Co

最新扣子(Coze)实战案例:扣子卡片的制作及使用,完全免费教程

‍♂️ 大家好,我是斜杠君,手把手教你搭建扣子AI应用。 ☘️ 本文是《AI应用开发系列教程之扣子(Coze)实战教程》,完全免费学习。 关注斜杠君,可获取完整版教程。 如果想学习AI应用搭建,请关注公众号,及时获取最新免费教程。 最近,有很多同学问扣子中的卡片有什么用?怎么很少用到,那今

AI作画本地搭建

前言 Novel AI (简称NAI)是一个线上的深度学习小说续写平台,而 NAI Diffusion 是 NAI 在2022年10月3日推出的基于 Stable Diffusion 算法的自动生成二次元图片的服务 在线版 NovelAI官网:https://novelai.net/ 进入官网,在首

ChatGPT搭建AI网站实战

1.概述 ChatGPT是一款基于GPT-3.5架构的大型语言模型,它能够进行自然语言处理和生成对话等任务。作为一款智能化的聊天机器人,ChatGPT有着广泛的应用场景,如在线客服、智能助手、个性化推荐等。今天笔者给大家分享一下如何使用ChatGPT的API模型快速搭建一个AI网站。 2.内容 在实

保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

在本文中,我们将以chatglm-6b为例详细介绍GPU云主机搭建AI大语言模型的过程,并使用Flask构建前端界面与该模型进行对话。

开源免费的文件投喂与问答工具,构建你的第二大脑

利用AI帮你读文章、利用AI帮你分析非结构化数据,这些最为潮流的AI辅助工具,相信很多读者都在各种媒体上看到过了。但还是有不少人并没有真正的使用过,这里有很多原因导致,具体就不细说了,懂的都懂。 今天TJ就给大家推荐一个你可以在线使用,也可以自己搭建的AI辅助工具:[**Quivr**](https

智能工作流:Spring AI高效批量化提示访问方案

集用SpringAI搭建系统,依靠线程池\负载均衡等技术进行请求优化,用于解决科研&开发过程中对GPT接口进行批量化接口请求中出现的问题。大语言模型接口以OpenAI的GPT 3.5为例,JDK版本为17。

【AI应用开发全流程】使用AscendCL开发板完成模型推理

从模型推理需要的开发板环境搭建到执行推理,本文主要是为大家介绍从Ascend910训练到Ascend310推理的昇腾开发全流程。

快来玩AI画图!StableDiffusion模型搭建与使用入门~

前言 最近AI很火🔥,先是AI画图,然后就ChatGPT,后者我已经用了一段时间了,用来写作文挺不错的,但OpenAI屏蔽了中国IP,加上用户太多啥的,用起来没那么爽,但没办法全球只此一家,只能捏着鼻子用。而AI画图就不一样了,全是开源的,自己部署一下可以玩个爽~ 正好我们这有台2080Ti的工作