Files
ai-assistant-travel/docs/Prompt提示词设计文档.md

476 lines
22 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 旅行商品发布 AI 助手 · Prompt 提示词设计文档
> 适用场景:旅行行业商品发布页右侧嵌入式 AI 助手(对应 Demo:`ai-assistant-travel/index.html`)
> 文档目的:沉淀 Demo 中各工具背后的提示词设计思路,形成可直接对接真实大模型(LLM)的 Prompt 规范
> 版本:v1.0 · 2026-08-22
---
## 一、总体设计原则
整套 Prompt 体系围绕五条原则设计,所有工具提示词均遵循:
| # | 原则 | 说明 | Demo 中的体现 |
|---|------|------|--------------|
| 1 | **模块化能力拆分** | 不做一个"大而全"的对话机器人,而是按表单模块拆成 8 个独立能力,每个能力一个专用 Prompt | 快捷区 8 个按钮,各自独立生成逻辑 |
| 2 | **上下文感知(Context Injection)** | 每次生成前先读取页面表单状态,将结构化上下文注入 Prompt | `readForm()` 读取目的地/天数/类型/人群,注入 `ctx` |
| 3 | **结构化输出(生成即数据)** | 要求 LLM 输出结构化内容(列表/字段/逐日数组),而非纯文本,使结果可直接回填表单 | 行程输出 `[{title, desc}]` 数组、价格输出团期行数据 |
| 4 | **生成 + 解释并行** | 每个结果附带"为什么这样写"的依据标签,增强商家信任感 | 每个生成卡片底部的 tip-pill(如"低于均价 5%,排序更优") |
| 5 | **人在环路(Human-in-the-loop)** | AI 只生成草稿,商家确认/微调后填入;提供"换一版"降低单次生成压力 | 所有卡片带「⚡一键填入」+「🔄换一版」双按钮 |
---
## 二、系统级 Prompt(System Prompt)
所有工具共享一个系统级角色设定,作为每次请求的第一段:
```text
你是「旅智小助」,一个旅行电商平台商家后台的商品发布 AI 助手,专注于帮商家高效撰写和优化旅游商品信息。
【角色定位】
- 你熟悉旅游电商的商品发布规范、搜索排序规则、广告法合规要求
- 你了解不同旅行人群(亲子/蜜月/银发/摄影/深度游)的决策痛点
- 你的目标是帮商家在 30 秒内完成高质量发品,同时提升商品的点击率与转化率
【能力边界】
- 只处理与商品发布相关的内容:标题、介绍、详情、配图、行程、价格、SEO、合规
- 不承诺你没有数据支撑的结论;涉及市场数据时明确说明为"估算/参考"
- 生成内容遵守《广告法》:不使用"最""第一""国家级"等极限词与违禁表述
【输出规范】
- 默认输出简体中文,语气专业、简洁、贴近电商运营习惯
- 结构化任务必须按指定格式输出(见各工具的格式约定)
- 每次生成附 1-3 条简短的设计依据(如"含目的地+天数+类型,利于搜索")
```
**设计要点**:
- **角色 + 场景双重限定**:不只说"你是助手",而是绑定"商家后台 + 商品发布"场景,收敛输出风格;
- **能力边界前置**:把拒答规则(不做无关事、不用极限词)写进系统级,避免每个子 Prompt 重复;
- **"附设计依据"** 是信任感设计——让商家理解 AI 为什么这样写,也降低"AI 黑箱"的抵触。
---
## 三、上下文注入设计(Context Injection)
### 3.1 上下文变量定义
每次调用工具前,前端从表单读取并组装以下上下文:
```json
{
"dest": "云南(昆明/大理/丽江)", // 目的地
"days": "6天5晚", // 行程天数
"type": "跟团游", // 商品类型
"theme": "亲子家庭", // 适合人群标签
"title": "", // 已填写的标题(如有)
"history": { // 偏好学习沉淀(见第七章)
"count": 3,
"styleWord": "亲子家庭友好·您的惯用话术",
"prefs": ["云南路线偏好:6天5晚跟团游", "纯玩无购物话术偏好", "平季低于市场5%定价策略"]
}
}
```
### 3.2 注入模板
```text
【当前表单上下文】
目的地:{dest}
行程天数:{days}
商品类型:{type}
适合人群:{theme}
已填写标题:{title}(如为空则忽略)
请严格基于以上上下文生成内容,不要虚构与目的地不符的景点、餐饮、酒店。
```
**设计要点**:
- **变量是"约束"不是"参考"**:明确要求"不要虚构与目的地不符的内容",这是旅游行业最核心的质量红线(张冠李戴的行程是差评根源);
- **空值兜底**:上下文缺失时 Prompt 中显式标注"未填写",引导 LLM 先给建议或用默认值,而非编造;
- **上下文即产品逻辑**:Demo 中切换"云南/海南"生成完全不同的行程,落地上就是这段上下文注入在起作用。
---
## 四、八大工具 Prompt 详解
### 4.1 商品标题生成
**设计意图**:标题是搜索排序与点击率的第一要素,一次给 3 个差异化方案供选择,而非一个"标准答案"。
```text
请为以下旅游商品生成 3 个高点击率的商品标题。
【表单上下文】{ctx}
【标题公式(三选一差异化)】
方案1(信任型):【纯玩无购物】{目的地}{天数}精品{类型}·5A景区全含·{人群}首选
方案2(卖点型):{目的地}{天数}深度{类型}|一价全含0自费·住特色酒店
方案3(体验型):【{人群}必选】{目的地}{天数}{类型}·随走随停·金牌向导·赠体验
【硬性要求】
1. 每个标题 ≤ 40 字(平台限制),必须包含:目的地 + 天数 + 商品类型(利于搜索命中)
2. 三案侧重不同:信任保障 / 价格卖点 / 体验亮点,不要同质化
3. 不得使用极限词;「5A」「金牌」等需有资质支撑的表述加上前置条件
4. 每个标题后附一行 ≤15 字的点击率依据
【输出格式】
1. {标题}|依据:{依据}
2. {标题}|依据:{依据}
3. {标题}|依据:{依据}
```
**结构化输出约定**:前端将 3 个标题解析为数组,"一键填入"按钮循环切换方案(Demo 中 `generated.title.used` 递增取模),无需重新生成。
**设计依据标签示例**:`含目的地+天数+类型,利于搜索`、`「无购物」为平台高转化词`。
---
### 4.2 详细介绍(列表页卖点摘要)
**设计意图**:详细介绍展示在列表页,核心任务是在 150-300 字内打消用户决策疑虑。采用固定四段式框架。
```text
请为以下旅游商品生成列表页"详细介绍",围绕 {theme} 人群的决策痛点撰写。
【表单上下文】{ctx}
【四段式框架(每段一行)】
① 身份定位 + 核心承诺:{目的地}{天数}{类型}·{人群}优选,全程 0 购物 0 自费,门票一价全含
② 住宿亮点:精选 N 晚高分酒店,写具体住宿特色(如"大理海景房+丽江古城客栈")
③ 特色体验:3 个左右具象体验点(可参与的活动、代表性餐食),强调 {theme} 人群的获得感
④ 服务承诺:行程透明无隐形消费、24h 管家、未成团提前 3 天全额退款
【硬性要求】
1. 总字数 150-300 字(列表页最佳展示长度)
2. 每段以换行分隔,不加序号
3. 退款/赔付等承诺必须与平台标准政策一致,不得加码
4. 体验点必须真实存在于该目的地的常规行程中
【输出格式】直接输出四段文案(纯文本,换行分段),末尾另起一行输出"字数:N"
```
**设计要点**:四段式(亮点—住宿—体验—承诺)对应旅游用户决策漏斗:先建立信任 → 消除住宿疑虑 → 激发向往 → 兜底风险。
---
### 4.3 商品详情(富文本图文)
**设计意图**:详情页内容量大,Prompt 按"模块化小标题 + 要点列表 + 配图占位"生成结构化 HTML,直接写入富文本编辑器。
```text
请为以下旅游商品生成详情页图文内容(HTML 格式)。
【表单上下文】{ctx}
【固定结构(h3 小标题 + ul 要点列表)】
🌟 行程亮点(3 条:核心承诺 / 经典 IP 清单 / {theme}专属节奏,含每日行车时长控制)
🏨 住宿安排(2 条:具体住宿配置 / 提前公布酒店名单等保障性表述)
🍜 舌尖体验(目的地代表性餐食,写具体菜名)
🛡️ 服务保障(2 条:导游与管家服务 / 退款保障)
[配图占位](末尾输出一个占位块,标注建议插入:行程地图 / 实拍酒店 / 餐饮实拍)
【硬性要求】
1. 输出合法 HTML 片段,仅使用 h3 / ul / li / b 标签,不使用 style 与 script
2. 每条要点 ≤ 30 字,使用短句
3. 数字类承诺(行车时长、酒店晚数)必须与 {days} 匹配
4. 配图占位使用 <div class="img-slot"> 格式,与「配图建议」清单一一呼应
【输出格式】HTML 片段,可直接注入富文本编辑器
```
**设计要点**:输出限定 HTML 标签白名单,是**安全约束**(防注入)与**渲染兼容**的双重要求;配图占位与配图工具联动,形成模块间呼应。
---
### 4.4 配图建议(拍摄脚本)
**设计意图**:不是生成图片,而是生成"拍什么"的脚本清单——商家多数缺的不是图,而是知道哪几张图转化率高。
```text
请为以下旅游商品生成 6 张商品图的拍摄清单(按转化率贡献排序)。
【表单上下文】{ctx}
【固定清单结构】
1. 主图:{目的地}全景横版大图(必须含地标元素)
2. 详情图:酒店实拍·房间内饰
3. 详情图:核心景区打卡机位
4. 详情图:特色餐食实拍
5. 详情图:{theme}互动瞬间抓拍(有人物、有情绪)
6. 详情图:行程地图示意
【硬性要求】
1. 每张标注用途(主图/详情图)与构图建议(≤12 字)
2. 顺序即优先级:商家时间有限时按序补拍
3. 末尾附 1-2 条实拍建议(如"实拍图>精修图,差评更少")
【输出格式】JSON 数组:[{"label": "图片说明", "use": "主图|详情", "tip": "构图建议"}]
```
**结构化输出约定**:JSON 数组驱动前端"按清单添加图片",每张带 `AI 建议` 角标与人工上传图区分。
---
### 4.5 行程编辑(逐日规划)
**设计意图**:行程是旅游商品差异化核心,也是商家最费时的模块。Prompt 强制逐日结构化输出,且嵌入"节奏控制"规则。
```text
请为以下旅游商品生成 {days} 的逐日行程。
【表单上下文】{ctx}
【行程设计规则】
1. D1 与最后一天只做接驳(接站/送站/自由活动),不安排紧张行程——降低差评率
2. 中段每日行车 ≤ 3.5 小时({theme} 人群节奏),"不赶路不早起"
3. 每日 title 格式:"核心地点 → 核心地点"或"主题·补充说明",≤ 15 字
4. 每日 desc 40-80 字:上午/下午/晚间节奏,含 1 个记忆点(看日落/歌舞表演等)
5. 行程路线需符合该目的地的真实地理动线(如云南:昆明→石林→楚雄→大理→丽江)
【输出格式】JSON 数组,长度必须等于天数:
[{"title": "当日主题", "desc": "当日安排描述"}]
```
**设计要点**:
- **天数硬约束**:`长度必须等于天数` 写进 Prompt,配合前端校验(Demo 中 `.slice(0, parseInt(ctx.days))`);
- **地理动线真实**:这是旅游行程 Prompt 最关键的领域知识注入点,落地时建议在 Prompt 中附目的地动线参考表,或由 RAG 检索标准线路库;
- **节奏规则来自运营经验**(D1/D6 只接驳、行车时长上限),是"AI 不如老运营"的地方,必须显式写进规则。
---
### 4.6 价格库存(团期与定价)
**设计意图**:定价是最敏感的决策,AI 不替商家拍板,而是给"市场参考区间 + 推荐定价 + 策略解释",决策权留给商家。
```text
请基于近 30 天市场成交数据,为以下旅游商品生成团期排期与定价建议。
【表单上下文】{ctx}
【生成规则】
1. 生成 5 个团期:2 个近期平季团 + 2 个节假日档期(如国庆)+ 1 个节后团
2. 定价结构:
- 平季团期定于市场均价下方约 5%(利于搜索排序与点击)
- 节假日档期按供需上浮,库存放大(预计售罄率 ≥ 80%)
- 儿童价约为成人价 65%-70%
3. 每个团期含:出发日期 / 成人价 / 儿童价 / 库存(5-25 区间)
4. 输出前先给 3 行定价依据:市场区间 / 推荐定价及理由 / 促销策略(如"首月立减 ¥300 冲新品榜")
【重要声明】市场数据为估算参考,请以平台实际成交数据校准。库存低于 6 的团期给出补库存建议。
【输出格式】JSON:{"analysis": ["市场区间…","推荐定价…","策略…"], "rows": [{"date":"YYYY-MM-DD","adult":N,"child":N,"stock":N}]}
```
**设计要点**:
- **免责前置**:明确"估算参考",避免商家把 AI 估算当成交数据(法律与信任双风险);
- **策略可解释**:不只给数字,给"为什么低于均价 5%",让商家可判断采纳度;
- Demo 中库存 <6 自动标橙(`stock-low`),是结构化输出 + 前端校验的联动体现。
---
### 4.7 SEO 关键词
**设计意图**:让商品被搜到。关键词组合逻辑固定:目的地词 × 天数词 × 类型词 × 人群词 × 意图词。
```text
请为以下旅游商品提取 6 个搜索关键词,按预估搜索热度降序排列。
【表单上下文】{ctx}
【关键词组合公式(按热度降序)】
1. {目的地}+旅游(目的地大词,热度最高)
2. {目的地}+{天数}(精准需求词)
3. {类型}(品类词)
4. {人群}+旅游(人群词)
5. {目的地}+纯玩无购物(意图词,高转化)
6. {目的地}+自由行攻略(攻略词,长尾引流)
【硬性要求】每个词附月均搜索指数(估算值),关键词自然融入标题与详细介绍,不堆砌。
【输出格式】JSON:[{"kw": "关键词", "heat": 指数}]
```
---
### 4.8 合规检查
**设计意图**:这是唯一"非生成"型工具——输入是已填表单,输出是风险扫描报告。Prompt 采用规则清单模式,输出固定三态。
```text
请对以下商品信息进行「广告法 + 平台规则」双重合规扫描。
【待检内容】
标题:{title}
详细介绍:{intro}
商品详情:{detail}
图片说明:{images}
【扫描规则清单】
1. 广告法极限词:「最」「第一」「唯一」「国家级」「顶级」「极品」等 → ❌ 必须修改
2. 资质类表述:「金牌」「5A」「官方认证」等 → ⚠️ 需补充资质证明材料方可使用
3. 承诺类表述:「全额退款」「赔付」「保证」等 → ⚠️ 需与平台退改政策页一致,不得自行加码
4. 平台规范:主图尺寸(≥800×600)、文字遮挡、虚假宣传风险 → ℹ️ 提示项
【输出格式】逐条输出,每条三态之一:
✅ 通过:{模块}:{说明}
⚠️ 建议:{模块}:{问题描述} → {修改建议}
ℹ️ 提示:{说明}
最后输出汇总:极限词风险数 / 待补充项数 / 审核通过率预估
```
**设计要点**:三态分级(必须改 / 建议改 / 知悉)比"全红警告"更可执行;极限词清单在落地时应做成**前置词表 + 正则快筛 + LLM 复核**双层,正则拦截确定性风险,LLM 处理语义风险(如变体写法)。
---
## 五、一键发品 · 编排 Prompt(Pipeline)
### 5.1 编排设计
一键发品不是一个大 Prompt,而是 **6 个工具 Prompt 的顺序编排**:
```text
[配置收集] → 用户选 4 项(目的地/天数/类型/人群)
↓
[上下文同步] → 写回左侧表单,统一 ctx
↓
[串行生成] 标题 → 介绍 → 详情 → 配图 → 行程 → 价格库存
· 每步复用对应工具的 Prompt + 共享 ctx
· 前序产物作为后续输入(如行程结果注入详情/配图的上下文)
↓
[静默填入] silentBatch 模式:逐模块写入表单,不逐条打扰
↓
[偏好沉淀] 记录本次选择,更新成长等级
```
### 5.2 编排系统 Prompt(增量)
在一键发品模式下,System Prompt 追加一段:
```text
当前为「一键发品」批量模式。请按以下规则执行:
1. 按顺序完成 6 个模块生成,每个模块遵循各自工具的格式约定
2. 后序模块必须与前序模块保持一致:详情中的住宿/餐食须与介绍呼应,
配图清单须覆盖详情中的配图占位,行程天数必须严格等于设定天数
3. 各模块间不自相矛盾(如介绍写"海景房",详情不能写"普通标间")
4. 生成完成后输出一段 ≤ 80 字的总结,说明各模块已就绪与待商家确认的重点
```
**设计要点**:**跨模块一致性**是编排模式的核心增量——单工具各自生成容易出现"介绍承诺 A、详情写 B"的矛盾,必须在编排层显式约束。
---
## 六、自由对话 · 意图路由 Prompt
用户在对话框自由输入时,先做意图分类,再路由到对应工具。
### 6.1 Demo 实现(关键词路由)
```js
const canned = [
{ k: ['标题', '名字'], f: () => quickAction('title') },
{ k: ['介绍', '卖点'], f: () => quickAction('intro') },
{ k: ['图', '配图', '拍摄'], f: () => quickAction('image') },
{ k: ['行程', '规划', '路线'], f: () => quickAction('itinerary') },
{ k: ['价', '定价', '库存', '团期', '多少钱'], f: () => quickAction('price') },
// ...
];
```
### 6.2 落地版意图路由 Prompt
```text
用户在商品发布页的 AI 助手中输入了一句话,请判断意图并路由。
【可选意图】
title / intro / detail / image / itinerary / price / seo / check(对应 8 个工具)
chat_smalltalk(闲聊或与发品无关)
chat_guidance(询问"怎么发品/怎么用助手"等操作指引)
【用户输入】"{text}"
【当前表单上下文】{ctx}
【输出格式】仅输出 JSON:{"intent": "意图标识", "args": {"抽取出的参数": "值"}}
例:输入"帮我生成亲子三亚自由行的标题和配图"
→ {"intent": "title", "args": {"theme": "亲子家庭", "dest": "海南(三亚)", "type": "自由行", "extra": ["image"]}}
注意:参数抽取结果需回写表单上下文后再调用工具;多个意图时按 extra 依次执行。
```
**设计要点**:意图分类用**低温度小模型**(或直接 embedding 匹配)即可,无需大模型;参数抽取的价值在于"说一句话顺带改了表单上下文"。
---
## 七、偏好学习与个性化(越用越好用)
### 7.1 三层个性化注入
这是"越用越好用"的核心 Prompt 机制——同一工具的 Prompt 根据使用历史分三档注入:
| 成长等级 | 触发条件 | 注入的个性化 Prompt |
|---------|---------|-------------------|
| Lv.1 通用模板 | 0-2 次 | 无个性化,使用标准工具 Prompt |
| Lv.2 风格匹配 | 3-9 次 | `【商家风格偏好】该商家惯用"{styleWord}"话术,生成内容贴合其历史风格` |
| Lv.3 爆款复刻 | 10+ 次 | `【历史爆款参考】该商家历史爆款商品结构:{结构摘要},定价策略:{策略},请优先复用该结构` |
### 7.2 偏好沉淀 Prompt(发品完成后触发)
```text
请从本次发品记录中提炼可复用的商家偏好,供下次生成注入。
【本次记录】
商品配置:{dest}·{days}·{type}·{theme}
生成内容摘要:{各模块生成结果的摘要}
商家采纳行为:{是否直接采纳/换过几版/手动改了哪些字段}
【提炼规则】
1. 输出 3-5 条偏好,每条 ≤ 20 字,格式:"维度:偏好描述"
2. 维度限定:路线偏好 / 人群文案风格 / 话术偏好 / 定价策略 / 促销习惯
3. 只提炼有复用价值的信息,不复述本次内容本身
4. 商家手动修改过的字段权重最高(这是最强的偏好信号)
【输出格式】JSON 数组:["维度:偏好描述", ...]
```
### 7.3 设计要点
- **偏好信号优先级**:手动修改 > 换版次数 > 直接采纳——商家改了什么,比 AI 生成了什么更能代表真实偏好;
- **偏好可解释、可管理**:落地时偏好清单应对商家可见可删(Demo 完成页展示"本次沉淀 N 条偏好"),避免"AI 悄悄记我东西"的负感;
- **Prompt 层面实现**:偏好注入就是一段附加上下文,不改工具 Prompt 本体,随时可回退到 Lv.1。
---
## 八、通用工程建议(落地参数)
| 事项 | 建议 |
|------|------|
| **模型温度** | 标题/介绍 0.8(求创意);行程/价格 0.3(求准确);合规检查 0.1(求稳定);意图路由 0 |
| **输出解析** | 结构化工具一律要求 JSON 输出 + 前端 schema 校验,解析失败自动降级为纯文本卡片展示 |
| **流式输出** | 介绍/详情类长文本走 SSE 流式渲染;行程/价格等结构化数据整体返回后渲染表格 |
| **Few-shot** | 标题、介绍两个高频工具建议内置 2-3 组"上下文 → 优质输出"示例(取自平台真实高转化商品,脱敏后) |
| **安全护栏** | ① HTML 标签白名单(4.3)② 极限词正则前置快筛(4.8)③ 行程地理动线校验(4.5,可用目的地-景点映射表校验) |
| **缓存策略** | 同一 ctx 下的生成结果可短缓存(10 分钟),"换一版"强制绕过缓存 |
| **成本控制** | 8 个工具按需调用;一键发品 6 连发时前序产物注入后序(如行程喂给配图),减少重复生成 |
| **免责声明** | 价格类输出必须带"估算参考"声明;对话底部常驻"内容由 AI 生成,请核对后发布" |
---
## 九、Prompt 资产清单(速查)
| 工具 | Prompt 类型 | 输出格式 | 温度 | 个性化注入 |
|------|------------|---------|------|-----------|
| 商品标题 | 生成(3 方案) | 数组 + 依据 | 0.8 | ✅ Lv.2+ |
| 详细介绍 | 生成(四段式) | 纯文本 4 段 | 0.8 | ✅ Lv.2+ |
| 商品详情 | 生成(结构化) | HTML 片段 | 0.6 | ✅ Lv.2+ |
| 配图建议 | 生成(清单) | JSON 数组 | 0.7 | ✅ Lv.2+ |
| 行程编辑 | 生成(逐日) | JSON 数组 | 0.3 | ✅ Lv.3 |
| 价格库存 | 分析 + 生成 | JSON(分析+行) | 0.3 | ✅ Lv.3 |
| SEO 关键词 | 生成(组合公式) | JSON 数组 | 0.5 | — |
| 合规检查 | 规则扫描 | 三态报告 | 0.1 | — |
| 一键发品 | 编排(6 步串行) | 各工具格式 | 各自 | ✅ 全档 |
| 意图路由 | 分类 + 抽取 | JSON | 0 | — |
| 偏好沉淀 | 提炼 | JSON 数组 | 0.2 | — |
---
*本文档随 Demo 演进持续更新。对接真实 LLM 时,建议将各工具 Prompt 模板化存入配置中心,与前端代码解耦,便于单独调优与 A/B 测试。*