在数据驱动决策的时代,快速从销售数据中提取关键信息并生成分析报告,是提升业务效率的重要手段。
本文将带你从零开始,搭建一个基于 Node.js 的简单工具,通过调用 OpenAI API 自动分析销售数据并生成定制化报告。
我们会逐步完成项目初始化、依赖安装、代码编写等步骤,并详解过程中涉及的异步编程、模板字符串等核心知识点,帮助你快速掌握 AI 辅助数据分析的实现思路。
第一步:创建文件夹
新建一个用于存放项目的文件夹(例如 ai-sales-analysis),建议路径中避免空格或特殊字符,方便后续终端操作。
第二步:右键打开终端
右键点击文件夹,选择「在终端中打开」(或通过 VS Code 打开文件夹后,使用 Ctrl + ~ 调出终端)。
第三步:输入下列命令
在终端中输入以下命令,快速初始化 Node.js 项目(自动生成 package.json 文件,-y 表示使用默认配置):
npm init -y
第四步:输入下面的命令:
输入以下命令,通过 pnpm 安装指定版本的 openai(OpenAI API 客户端)和 dotenv(环境变量管理工具):
pnpm i openai@4.71.0 dotenv@17.2.3
pnpm的性质:
pnpm 是一个快速、节省磁盘空间的现代 JavaScript 包管理工具,全称为 Performant npm(高性能 npm)。
它与 npm(Node.js 官方包管理器)、yarn 类似,主要用于安装、管理项目依赖(比如你命令中的 openai、dotenv 这些包),但在性能和磁盘利用上有显著优化:
- 采用 硬链接 + 符号链接 的方式存储依赖,避免重复安装相同版本的包,大幅节省磁盘空间。
- 安装速度通常比
npm和yarn更快,尤其在大型项目中优势明显。 - 支持 monorepo 项目结构,对多包管理更友好。
第五步:编写后端代码
在项目文件夹中创建 main.mjs 文件,写入以下代码(功能:调用 OpenAI API 分析销售数据并生成报告):
import OpenAI from 'openai';
import { config } from 'dotenv';
config({
path: '.env'
});
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL:'https://api.agicto.cn/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,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 main = async (reference_data, query) => {
// 制定一个身份, 找对人
// 模板字符串
// 多行
// 准确的描述任务,
//数据, 清楚说明+格式限定
// \n \n\n 边界效果
const prompt = `
You are an AI data analysis assistant that generates sales
reports based on the given sales data.
Here is the sales data:\n ${reference_data} \n\n
Please generate a report to answer the following question:\n
${query}
`
let response = await client.chat.completions.create({
model: "gpt-4o-mini",
messages: [
{
role: 'user',
content: prompt
}
],
max_tokens: 1024,
// 创意性
temperature: 0.1,
})
console.log(response.choices[0].message.content)
}
main(
saleData,
'根据上述销售数据,计算iphone13和iphone14的总销售额各是多少?'
);
补充说明:
- 需在项目根目录创建
.env文件,添加OPENAI_API_KEY=你的密钥(替换为实际可用的 OpenAI API 密钥)。 - 运行代码前确保已全局安装
pnpm(若未安装,可先执行npm install -g pnpm)。 - 执行代码:在终端输入
node main.mjs,即可看到 AI 生成的数据分析报告。
再加个异步编程,模板字符串的知识点:
const main = async (reference_data, query) => {
const prompt = `
You are an AI data analysis assistant that generates sales
reports based on the given sales data.
Here is the sales data:\n ${reference_data} \n\n
Please generate a report to answer the following question:\n
${query}
`
let response = await client.chat.completions.create({
model: "gpt-4o-mini",
messages: [
{
role: 'user',
content: prompt
}
],
max_tokens: 1024,
// 创意性
temperature: 0.1,
})
console.log(response.choices[0].message.content)
}
-
箭头函数(Arrow Function)
const main = async (reference_data, query) => { ... }用=>定义的函数,这里同时使用了async关键字,表明这是一个异步函数,内部可以使用await处理异步操作。 -
异步编程(Async/Await)
let response = await client.chat.completions.create({ ... })``await用于等待client.chat.completions.create这个异步操作(调用 OpenAI API)完成,避免了回调地狱,让异步代码更易读。 -
模板字符串(Template String) 用反引号(
)包裹的字符串const prompt =...,支持:- 多行文本(无需手动加
\n换行) - 变量 / 表达式嵌入(
${reference_data}、${query})这与你之前问的模板字符串特性完全对应,用于构造传给 AI 的提示词(Prompt)。
- 多行文本(无需手动加