用 Prompt Engineering 驱动 AI 自动生成销售分析报告
在本篇实战笔记中,我将带你从零开始,使用 OpenAI API 构建一个能自动分析销售数据并生成专业报告的 AI 助手。
这不仅是一次简单的 API 调用练习,更是对 Prompt Engineering(提示工程) 核心理念的深入实践——如何通过精心设计的指令,引导大模型输出高质量、结构化、可落地的业务洞察。
一、项目背景与目标
设想这样一个场景:每天都有大量销售数据产生,但人工汇总、分析、撰写报告既耗时又容易出错。
我们希望借助 AI 的能力,自动完成以下任务:
- 按产品统计总销售额;
- 识别销量变化趋势;
- 判断不同定价或促销策略的实际效果。
最终目标是:输入原始数据 + 一个问题,AI 输出一份简洁、准确、有业务价值的自然语言报告。
二、技术实现准备
我们使用 JavaScript(Node.js 环境)调用 OpenAI 兼容接口,并通过环境变量管理密钥。
import OpenAI from 'openai';
import { config } from 'dotenv';
// 加载 .env 文件中的环境变量
config({ path: '.env' });
// 初始化 OpenAI 客户端(兼容 AGICTO 平台)
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: 'https://api.agicto.cn/v1' // 使用国内代理加速访问
});
说明:
dotenv用于安全加载 API 密钥;baseURL指向 AGICTO 提供的 OpenAI 兼容接口,提升国内访问稳定性。
三、数据准备与 Prompt 设计
1. 销售数据(CSV 格式)
我们将数据以字符串形式嵌入代码,便于演示:
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
`;
注意:虽然实际项目中数据可能来自数据库或文件,但此处用字符串模拟,聚焦 Prompt 本身。
2. 核心函数:动态构建 Prompt 并调用模型
const main = async (reference_data, query) => {
const prompt = `
你是一名专业的销售数据分析助手,请基于以下销售数据,回答用户提出的问题。
【销售数据】
${reference_data}
【用户问题】
${query}
请用中文撰写一份简洁、准确、有逻辑的分析报告,包含必要的计算过程和结论。
`;
const 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);
};
关键设计点:
- 明确角色(“专业销售数据分析助手”);
- 用分隔符(如【】)清晰划分数据、任务与输出要求;
- 强调“包含计算过程”,避免模型直接给出结论而缺乏依据。
四、测试用例与效果验证
测试 1:计算总销售额
main(saleData, '根据上述销售数据,计算 iPhone 13 和 iPhone 14 的总销售额各是多少?');
✅ 预期输出示例:
iPhone 13 总销售额为 1,776,000 元,iPhone 14 为 1,504,000 元。
(附详细加总过程)
测试 2:评估销售策略有效性
main(saleData, '根据上面的销售数据,哪一种销售策略更有效?请结合价格、销量和收入进行分析。');
✅ 预期输出示例:
尽管 iPhone 14 单价更高,但 iPhone 13 在降价后(5800 元)销量显著提升(120 台),单日收入反超 iPhone 14。
表明适度降价可有效刺激需求,提升整体营收。
💡 实际运行中,模型能准确识别“1月3日 iPhone 13 降价”这一关键事件,并据此推断策略效果。
运行结果示例图:
五、Prompt Engineering 的五大关键原则
通过本项目,我们可以提炼出高质量 Prompt 的设计方法论:
| 原则 | 说明 | 本例体现 |
|---|---|---|
| 1. 角色设定清晰 | 告诉模型“你是谁” | “你是一名专业的销售数据分析助手” |
| 2. 上下文结构化 | 用空行、标题、符号分隔不同信息块 | 使用【销售数据】【用户问题】等标签 |
| 3. 指令具体明确 | 避免模糊请求,直接提问 | “计算总销售额”而非“帮我看看数据” |
| 4. 输出格式引导 | 指定语言、长度、是否含计算过程 | “用中文撰写……包含必要的计算过程” |
| 5. 控制随机性 | 低 temperature 保证一致性 | temperature: 0.1 |
✨ 经验总结:
Prompt 不是“问问题”,而是“设计任务”。
一个优秀的 Prompt,本质上是一份给 AI 的微型工作说明书。
六、总结与延伸思考
这个看似简单的例子,揭示了大模型落地的核心逻辑:
- 模型能力 ≠ 实际效果:再强的模型,也需要精准的指令才能发挥价值;
- Prompt 是人机协作的桥梁:它决定了 AI 是“诗人”还是“分析师”;
- 可复用性是工程化的起点:通过模板化
${data} + ${query},我们已具备构建自动化报告系统的雏形。
📌 最后送你一句话:
“写好 Prompt,不是让 AI 更聪明,而是让你更会指挥它。”
后续可拓展方向
- 支持 Excel/CSV 文件上传解析;
- 集成到企业微信/钉钉机器人,实现日报自动推送;
- 结合可视化库(如 Chart.js)生成图文报告;
- 添加多轮对话能力,支持追问(如“为什么 iPhone 13 销量突增?”)。