PROMPT2. 商品信息解析系统
提示词工程题 · 答案是一段提示词(Prompt),由大模型评测,不含可运行代码。
题目描述
交易平台要上线一个新的后端服务,用于解析用户填写得乱七八糟的商品标题。 你需要写一个 Prompt,把用户的输入转换成规定的 JSON 格式。
输入格式
一段用户描述(商品标题)。
输出格式
{
"storage": "string,如 256GB,单位为 GB",
"is_device": "boolean,是手机填 true,否则 false",
"warning": "boolean,信息缺失的话填 true"
}
示例
示例 1
输入:
出的红米note12tpro,五一二的内存
输出:
{"storage": "512GB", "is_device": true, "warning": false}
说明: 「五一二」是中文数字 512,加上单位 GB;是手机 → true;信息完整 → false。
示例 2
输入:
出一台没有保修的苹果16手机
输出:
{"storage": "", "is_device": true, "warning": true}
说明: 没提容量 → storage 为空字符串;是手机 → true;关键信息缺失 → warning 为 true。
示例 3
输入:
华为手机入耳式耳机,9成新
输出:
{"storage": "", "is_device": false, "warning": true}
说明: 耳机不是整机 → is_device 为 false;同样缺容量 → warning 为 true。
提示词方案
你是商品信息解析助手。请把用户发布的商品标题解析成 JSON。
# 任务
从文本中提取:存储容量、是否为整机设备、信息是否缺失。
# 字段规则
- storage:存储容量,统一换算成 GB 并写成字符串,例如 "256GB"、"512GB"。
* 中文数字也要认:「五一二」表示 512,所以「五一二的内存」→ "512GB"。
* 1TB 按 1024GB 处理。
* 文本里没有提到容量时,输出空字符串 ""。
- is_device:这是手机、平板、电脑等整机设备时输出 true;
耳机、充电器、贴膜等配件或非整机时输出 false。
- warning:关键信息(最重要的是存储容量)缺失时为 true,信息完整时为 false。
# 输出格式(严格 JSON,不要代码块,不要解释)
{"storage": "string", "is_device": true 或 false, "warning": true 或 false}
# 输入
{{input}}
设计思路
第一步:把「模糊描述」翻译成固定字段
商品标题是自由文本,但下游服务需要的是结构化数据。 提示词的第一件事就是把三个字段的含义、类型、取值范围写清楚, 让模型知道「要抽什么」。
第二步:为每个字段给出边界案例
- storage:难点在「中文数字」和单位换算。
明确写出「五一二 = 512」「1TB = 1024GB」,并规定缺失时输出空串,
避免模型自行猜测或输出
null。 - is_device:关键在于区分「整机」与「配件」。 手机是整机,耳机不是 —— 用几个例子把这个边界钉死。
第三步:定义 warning 的语义
warning 不是「有没有保修」,而是关键信息是否缺失。
如果不在提示词里点明「最重要的是存储容量」,
模型可能会因为「没提保修」而误判。
第四步:统一输出格式
规定严格的 JSON、不要代码块、不要解释,
并且字段一律用双引号、布尔值用 true / false(而不是 True)。
易错点总结
1. 中文数字没处理
「五一二」不是字符串,而是 512。提示词里必须显式给出这个映射规则。
2. warning 判据不明确
不说清「缺什么才算缺」,模型可能把「没提保修」也当成缺失, 导致示例 1 被误判为 warning 为 true。
3. 布尔值写成 Python 风格
模型可能输出 True / False(首字母大写),JSON 解析会失败。
提示词要写明用小写 true / false。
4. 缺失字段处理不一致
有的模型会给 null、有的给 "未知"。规定统一用空字符串 ""。
扩展思考
- 可以增加
price、condition(成色)等字段,思路完全相同:先定契约、再给边界例。 - 对完全无法解析的输入,可以再加一个
parse_failed标记,便于上游告警。