听我的,用gpt替你做简单数据分析!

515 阅读4分钟

AI前景

关注AI的小伙伴都知道,AI技术在最近取得了显著的进展和发展,不仅在技术上不断创新,还在应用场景和政策支持方面得到了拓展和强化。未来,随着技术的不断进步和应用场景的不断拓展,AI将会为更多领域带来更多的变革和价值。2024年作为我们的ai元年,你不跟随大部队的步伐,抓紧学起来吗?

开始分析

话不多说,我们直接开始吧。首先,你需要把openai的包导入,如果你不记得,这里有AIGC学习分享(二):openAI(API接口)它来了! - 掘金 (juejin.cn)

还是老样子,先创建你的项目文件, 在终端输入: npm init -y 进行项目初始化

  • npm 是node 的 package management 包管理器
  • init 初始化 -y 快速访问

我们会发现该文件下多了一个package-json

image.png

然后再输入:npm i openai

  • 这个就是chatgpt AIGC包
  • i 是 install的简写
  • openai 第三方的AI模块
  • 下载到本地的node_modules 目录下

在项目文件内创建main.mjs 代替main.js称为主入口

mjs是JavaScript内es6的特性,.mjs 文件后缀通常指的是使用 ECMAScript 模块(ES 模块)语法编写的 JavaScript 源代码文件。

这种文件格式在 Node.js 环境中特别常见,用来区分那些使用 ES6 模块导入 (import) 和导出 (export) 语句的文件,与传统的 .js 文件形成对比,后者默认使用 CommonJS 规范,其中模块导入和导出分别通过 require()module.exports 实现。

module模块化它是一个复杂程序的构成部分,函数、类、都可以放在一个独立文件内,调用他们一起工作,使用module。

我们在文件内使用import,从openai的库内导入一个名为OpenAI的软件开发包,

image.png 然后用es6的字符串模板写入csv 格式数据,其数据是由逗号隔开,

import OpenAI from "openai" 
import {add, getSaleReport} from './common.mjs'
const client = new OpenAI({
    apiKey:'your apiKey',
    baseURL:'https://api.302.ai/v1'
})
const saleData = `
    销售数据:
    日期,产品,销量,单价,总收入
    2023-01-01,iphone 13,100,6000,600000
    2023-01-01,iphone 14,50,8000,400000
    2023-01-02,iphone 13,80,8000,640000
    2023-01-02,iphone 14,60,8000,480000
    2023-01-03,iphone 13,120,5800,696000
    2023-01-03,iphone 14,80,7800,624000
`
// const res = await getSaleReport(saleData,
//     "根据上述销售数据计算iPhone 13和iPhone 14的总销量各是多少");
// console.log(res);

const res = await getSaleReport(client,saleData,"根据上述销售数据,哪个产品的收入更高,高多少?")
console.log(res)

然后,我们再将getSaleReport方法进行封装,把他放到另外一个文件内,主要还是使用module模块化将方法放在一个common.mjs文件下,让他们一起工作。

在前面我们导入这个文件的函数,最后别忘了在这个文件内,给这些方法加上export导出哦,毕竟exportimport是一对,你怎能忍心将其拆散!

image.png

/**
 * @func 销售数据分析
 * @param {*} saleData 
 * @param {*} query 问题
 * @returns 数据分析的结果
 * @author llj 2024-6-21
 */
 export const getSaleReport = async (client,saleData,query)=>{
    const prompt = `
        You are a professional data analyst.
        Here is the sale data \n${saleData} \n \n
        Please generate a report to answer the following question:\n
        ${query}
    `;
    let response = await client.completions.create({
        model: 'gpt-3.5-turbo-instruct',
        prompt,
        temperature: 0,   // llm的自由度 数据分析  须严格
        n: 1,    // 只生成一次
        // 控制花销的 openai 账单 靠token
        max_tokens: 1000,
    })
    console.log(response.choices)
    return response.choices[0].text;
}

在封装的函数内,需要写一个固定的promp,也可以不固定,按需求给定prompt,指明它是一个数据分析专家,通过给出的数据,需要做出怎样的分析等等。

其实openai的接口很简单 主要是通过大模型的model,他有不同的模型,适应不同的场景,gpt-3.5-turbo-instruct 是由 OpenAI 提供的一个模型变体,它是基于 GPT-3.5 Turbo 架构的,在这种特定的场景下,或许更合适做一点数据分析。

image.png

最后我们也是得到了大模型分析的结果。是不是觉得很神奇呢?下次我将使用aigc进行一个实战小训练哦,敬请期待吧!