前言
在数据洪流席卷的数字化时代,信息不再仅仅是累积的数字堆砌,而是蕴藏着待发掘的无限价值与洞见。随着人工智能技术的飞速跃进,特别是自然语言处理(NLP)领域的突破,我们正站在一个前所未有的转折点上——迎来了GPT-4o这一里程碑式的发展。GPT-4o,作为人工智能语言模型的最新迭代,不仅在文本生成和理解上达到了前所未有的高度,更在数据分析领域展现了其非凡的能力,将复杂的数据解析转化为直观、可操作的智慧结晶。接下来让我们通过对苹果手机的销售数据分析来体验GPT-4o的魅力吧~
正文
准备工作:
- 将文件初始化为后端项目,在终端输入:
npm init -y
- 安装需要用到的依赖包:
npm i openai
npm i dotenv
安装成功时可以在package.json文件夹看见:
openai
用来实现API交互模式,进行多轮对话的交互。
dotenv
帮助管理和使用环境变量,通过新建.env文件来存放OPENAI_KEY和BASE_URL。
创建一个main.mjs文件,.mjs后缀的文件是es6的(module),通过import来引入依赖包,通过require引入是node的默认模块化系统(commonJS)
main.mjs
- 通过
import语句引入了OpenAI和dotenv这两个模块 - 使用
dotenv.config({ path: '.env' })加载.env文件中的环境变量 - 初始化OpenAI客户端,从
.env文件读取到的OPENAI_KEY和BASE_URL创建了一个新的OpenAI客户端实例client(BASE_URL=https://api.302.ai/v1,OPENAI_KEY=sk-xxxxxxxx使用自己的key) - 销售数据:定义了一个名为
saleData的字符串变量,其中包含了示例销售数据。数据格式为CSV风格,列出了不同日期、产品、销量、单价和总收入。 - 定义了一个异步函数
getSaleReport,接受销售数据和查询问题作为参数:
- 函数内部构建了一个prompt(提示信息),它首先介绍了自己是一个用于生成销售报告的AI助手,然后提供了销售数据,并提出了需要回答的问题(即传入的查询参数
data) - 使用
client.chat.completions.create方法调用OpenAI API,指定了模型为gpt-3.5-turbo,并设置了temperature为0.0以获得更确定、更直接的答案,传递给API的messages是一个对象数组,包含一个用户消息,内容即为构建的prompt。 - 函数最后返回API响应中第一个选择的内容,即生成的报告答案。
// require commonJS node 默认模块化系统
// es6 module
import OpenAI from 'openai';
import dotenv from 'dotenv';
dotenv.config({
path:'.env'
})
const client = new OpenAI({
apiKey: process.env.OPENAI_KEY,
baseURL: process.env.BASE_URL
})
const saleData = `
销售数据:
日期,产品,销量,单价,总收入
2023-01-01,iPhone 13,100,6000,600000
2023-01-01,iPhone 14,50,8000,400000
2023-01-02,iPhone 13,80,6000,480000
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 getSaleReport = async (data, query) => {
const prompt = `
You are an AI assistant that generates sales report
base on the given data.
Here is the sale data:\n
${data}\n\n
Please generate a report to answer the following question:\n
${query}
`
let response = await client.chat.completions.create({
model: 'gpt-3.5-turbo',
temperature: 0.0,
messages:[{
role: 'user',
content: prompt
}]
})
return response.choices[0].message.content
}
console.log( await getSaleReport(saleData,
'根据上述销售数据,计算iphone 13和iphone 14的总销量各是多少?'))
console.log( await getSaleReport(saleData,
'根据上述销售数据,哪个产品的总收入更高,高多少?'))
结语
总之,GPT-4o开启了数据分析的新纪元,它既是挑战也是机遇。我们期待着更多的探索者加入这一旅程,共同塑造一个由智能数据分析驱动的美好未来。在这个数据无处不在的时代,让我们携手前行,用智慧点亮数据的每一个角落。