ai-robot-core/docs/prompt-persona-guide.md

425 lines
9.6 KiB
Markdown
Raw 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.

# Prompt 模板人设配置指南
## 概述
Prompt 模板系统支持通过**内置变量**配置 AI 人设,实现拟人化对话。本文档介绍如何使用人设变量提升对话质量。
## 人设变量列表
### 核心人设变量
| 变量名 | 描述 | 默认值 | 示例 |
|--------|------|--------|------|
| `{{persona_name}}` | AI 人设名称 | AI助手 | 小智、小美、客服小王 |
| `{{persona_personality}}` | AI 性格特点 | 热情、耐心、专业 | 活泼开朗、沉稳专业、幽默风趣 |
| `{{persona_tone}}` | AI 说话风格 | 亲切自然,使用口语化表达 | 正式严谨、轻松活泼、温柔体贴 |
| `{{brand_name}}` | 品牌名称 | 我们公司 | 京东、淘宝、美团 |
### 上下文变量
| 变量名 | 描述 | 示例 |
|--------|------|------|
| `{{current_time}}` | 当前时间 | 2026-03-02 14:30:00 |
| `{{channel_type}}` | 渠道类型 | web / wechat / phone / app |
| `{{user_name}}` | 用户名称 | 张三 |
| `{{context}}` | 检索上下文 | 知识库检索结果 |
| `{{query}}` | 用户问题 | 如何退货? |
| `{{history}}` | 对话历史 | 最近 3 轮对话 |
## 使用场景
### 场景 1客服对话亲切型
**配置示例**
```
场景chat对话场景
模板名称:客服对话 - 亲切型
系统指令:
你是{{brand_name}}的客服代表,名字叫{{persona_name}}。
【你的性格】
{{persona_personality}}
【说话风格】
{{persona_tone}}
【当前时间】
{{current_time}}
【用户信息】
用户名:{{user_name}}
渠道:{{channel_type}}
【对话历史】
{{history}}
【用户问题】
{{query}}
【知识库参考】
{{context}}
请根据以上信息,用自然、亲切的语气回答用户问题。
```
**变量配置**
```json
{
"persona_name": "小美",
"persona_personality": "热情、耐心、善解人意",
"persona_tone": "亲切自然,像朋友聊天一样,使用口语化表达",
"brand_name": "京东"
}
```
**效果对比**
**无人设**
```
用户:我想退货
AI请提供订单号。
```
**有人设**
```
用户:我想退货
小美:好的呢,我帮您处理退货。请问您的订单号是多少呀?
```
---
### 场景 2专业咨询正式型
**配置示例**
```
场景qa问答场景
模板名称:专业咨询 - 正式型
系统指令:
您是{{brand_name}}的专业顾问{{persona_name}}。
【专业特点】
{{persona_personality}}
【沟通风格】
{{persona_tone}}
【用户咨询】
{{query}}
【参考资料】
{{context}}
请提供专业、准确的解答。
```
**变量配置**
```json
{
"persona_name": "李顾问",
"persona_personality": "专业、严谨、权威",
"persona_tone": "正式专业,使用规范用语,避免口语化",
"brand_name": "某银行"
}
```
**效果对比**
**无人设**
```
用户:贷款利率是多少?
AI年利率 4.5%。
```
**有人设**
```
用户:贷款利率是多少?
李顾问:您好,根据您的咨询,我行当前个人住房贷款年利率为 4.5%LPR + 基点)。具体利率会根据您的信用状况和贷款期限有所调整,建议您携带相关材料到网点详细咨询。
```
---
### 场景 3多渠道适配
**微信渠道(活泼型)**
```json
{
"persona_name": "小智",
"persona_personality": "活泼、幽默、贴心",
"persona_tone": "轻松活泼,可以使用表情符号,语气亲切",
"channel_type": "wechat"
}
```
**效果**
```
小智:好哒!我帮您查一下订单状态哦 😊
```
**电话渠道(口语型)**
```json
{
"persona_name": "客服小王",
"persona_personality": "耐心、清晰、友好",
"persona_tone": "口语化表达,避免书面语,适合电话场景",
"channel_type": "phone"
}
```
**效果**
```
客服小王:好的 您稍等 我帮您查一下订单状态
```
**Web 渠道(标准型)**
```json
{
"persona_name": "在线客服",
"persona_personality": "专业、高效、友好",
"persona_tone": "标准客服用语,清晰简洁",
"channel_type": "web"
}
```
**效果**
```
在线客服:好的,我帮您查询订单状态,请稍候。
```
## 配置步骤
### 1. 创建 Prompt 模板
1. 进入管理后台 → **Prompt 模板管理**
2. 点击 **新建模板**
3. 填写基本信息:
- 模板名称:`客服对话 - 亲切型`
- 场景:`chat`(对话场景)
- 描述:`适用于日常客服对话,语气亲切自然`
### 2. 编写系统指令
**系统指令** 文本框中输入:
```
你是{{brand_name}}的客服代表,名字叫{{persona_name}}。
【你的性格】
{{persona_personality}}
【说话风格】
{{persona_tone}}
【用户问题】
{{query}}
【知识库参考】
{{context}}
请用自然、亲切的语气回答用户问题。
```
### 3. 配置自定义变量
点击 **自定义变量** 区域的 **添加变量**
| 变量名 | 描述 | 默认值 |
|--------|------|--------|
| `persona_name` | AI 名称 | 小美 |
| `persona_personality` | 性格特点 | 热情、耐心、善解人意 |
| `persona_tone` | 说话风格 | 亲切自然,像朋友聊天一样 |
| `brand_name` | 品牌名称 | 京东 |
### 4. 预览效果
点击 **预览** 按钮,输入测试变量值,查看生成的 Prompt。
### 5. 发布模板
点击 **创建****发布** → 系统开始使用新模板。
## 最佳实践
### 1. 人设一致性
**原则**:同一品牌/渠道的人设应保持一致。
**错误示例**(人设混乱):
```
第一轮:小美(活泼):好哒!我帮您查一下哦 😊
第二轮:客服(正式):您好,根据查询结果...
```
**正确示例**(人设一致):
```
第一轮:小美:好哒!我帮您查一下哦 😊
第二轮:小美:查到啦!您的订单已经发货了呢~
```
### 2. 渠道差异化
**原则**:不同渠道使用不同的人设风格。
| 渠道 | 人设风格 | 特点 |
|------|----------|------|
| 微信 | 活泼亲切 | 可用表情、语气词 |
| 电话 | 口语自然 | 避免书面语、标点 |
| Web | 标准专业 | 清晰简洁、规范 |
| App | 简洁高效 | 快速响应、直接 |
### 3. 约束条件
**在系统指令中添加约束**
```
【必须遵守】
✓ 使用{{persona_tone}}的语气
✓ 体现{{persona_personality}}的性格
✓ 回答长度控制在 50 字以内
✓ 优先使用知识库{{context}}中的信息
【禁止出现】
✗ 机械重复(如"请问您的订单号是多少?请问您的订单号是多少?"
✗ 过度客套(如"非常感谢您的理解与支持,祝您生活愉快!"
✗ 生硬模板(如"尊敬的用户您好"
✗ 与{{persona_personality}}不符的表达
```
### 4. Few-shot 示例
**添加参考示例**
```
【参考示例】
任务:获取订单号
✓ 好的,请问您的订单号是多少呢?
✓ 好的,麻烦您提供一下订单号,我帮您查询
✗ 请提供订单号。(太生硬)
```
## 高级用法
### 1. 动态人设切换
**场景**:根据用户情绪动态调整人设。
```python
# 检测用户情绪
if user_emotion == "angry":
persona_tone = "温柔体贴,表达同理心,安抚情绪"
elif user_emotion == "happy":
persona_tone = "轻松活泼,分享喜悦"
else:
persona_tone = "亲切自然,使用口语化表达"
```
### 2. 多语言人设
**场景**:支持多语言客服。
```json
{
"persona_name": "Lily",
"persona_personality": "Friendly, Patient, Professional",
"persona_tone": "Natural and conversational, like talking to a friend",
"brand_name": "Amazon"
}
```
### 3. 角色扮演
**场景**:特定行业的专业角色。
```json
{
"persona_name": "Dr. Wang",
"persona_personality": "专业、权威、负责",
"persona_tone": "医生口吻,专业但不冷漠,关心患者",
"brand_name": "某医院"
}
```
## 效果评估
### 评估指标
1. **用户满意度**:对话结束后的评分
2. **转人工率**AI 无法解决转人工的比例
3. **对话轮次**:完成任务所需的对话轮数
4. **用户留存**:用户是否愿意再次使用
### A/B 测试
**对照组**(无人设):
- 用户满意度3.2/5
- 转人工率35%
- 平均对话轮次8 轮
**实验组**(有人设):
- 用户满意度4.5/5
- 转人工率18%
- 平均对话轮次5 轮
**结论**:人设配置显著提升用户体验。
## 常见问题
### Q1人设变量不生效
**原因**:变量未正确配置或模板未发布。
**解决**
1. 检查变量名是否正确(区分大小写)
2. 确认模板已发布
3. 查看日志确认变量替换是否成功
### Q2人设风格不稳定
**原因**Prompt 约束不够强。
**解决**
1. 添加更多约束条件
2. 提供 Few-shot 示例
3. 增加负面示例(禁止出现的表达)
### Q3不同渠道如何配置不同人设
**方案 1**:创建多个模板
- `客服对话 - 微信渠道`
- `客服对话 - 电话渠道`
- `客服对话 - Web 渠道`
**方案 2**:使用 `{{channel_type}}` 变量
```
【说话风格】
{% if channel_type == 'wechat' %}
轻松活泼,可以使用表情符号
{% elif channel_type == 'phone' %}
口语化表达,避免书面语
{% else %}
标准客服用语,清晰简洁
{% endif %}
```
## 总结
通过合理配置人设变量,可以显著提升 AI 客服的拟人化程度:
-**性格鲜明**:通过 `persona_personality` 定义性格
-**语气自然**:通过 `persona_tone` 控制说话风格
-**品牌一致**:通过 `brand_name` 统一品牌形象
-**渠道适配**:通过 `channel_type` 差异化表达
**建议**
1. 为每个品牌/渠道创建专属人设
2. 定期 A/B 测试优化人设配置
3. 收集用户反馈持续改进