RTF
Role-Task-Format
📦 组成要素
角色 Role
定义角色
任务 Task
描述任务
格式 Format
指定输出格式
✅ 适合
角色扮演、场景模拟
📖 详细说明
Prompt 框架:RTF(Role-Task-Format)
RTF 框架概述
RTF 是一个简洁但强大的 Prompt 框架,强调角色扮演和场景模拟,特别适合需要AI扮演特定角色或模拟真实场景的任务。框架名称由三个核心要素组成:
- Role(角色)
- Task(任务)
- Format(格式)
RTF 框架是最简洁的框架之一,但通过清晰的角色定义能产生意外强大的效果。
特点
| 特点 | 说明 |
|---|---|
| 学习曲线 | 极低,三个概念即可掌握 |
| 适用场景 | 角色扮演、场景模拟、教学演示 |
| 框架复杂度 | ⭐ 极简(仅3个要素) |
| 有效性 | ⭐⭐⭐⭐ 很高 |
| 迭代性 | 中等 |
| 组合性 | 强(可与其他框架组合) |
RTF 的优势
✅ 极简易用 - 3个要素,5分钟掌握 ✅ 角色强化 - 明确的 Role 能显著改变 AI 的回答风格 ✅ 场景逼真 - 模拟真实场景能得到更贴近实际的回答 ✅ 教学友好 - 可以模拟各种角色进行教学 ✅ 快速迭代 - 改变 Format 快速调整输出
RTF 的局限
❌ 缺乏深度约束 - 对复杂需求表达不足 ❌ 可能不稳定 - 角色定义不当时结果差 ❌ 不适合代码细节 - 需要更详细的技术约束
模板
[Role]
你是 [角色描述]
背景/经验:[相关背景]
[Task]
请 [具体的任务描述]
[Format]
输出格式:[期望的格式]
或更详细版本:
[Role]
你现在是一名 [职位],拥有 [N年] 经验
你的特点:[性格特征、专业特长等]
[Task]
在 [场景] 中,请 [具体任务]
[Format]
请用 [格式/风格] 回答
相关框架比较
| 维度 | RTF | BROKE | CRISPE |
|---|---|---|---|
| 学习难度 | ⭐ 极低 | ⭐ 低 | ⭐⭐ 中 |
| 要素数 | 3 | 5 | 6 |
| 完成时间 | 快(1-2分钟) | 中(5分钟) | 慢(15分钟) |
| 角色强化 | 强 | 中 | 中 |
| 场景感 | 强 | 中 | 中 |
应用实践
实践1:技术面试练习
问题描述:模拟 Google/Microsoft 的技术面试
[Role]
你是 Google 的一名资深技术面试官
你有10年的面试经验,专注于考察候选人的算法能力和系统设计能力
你的风格是友好但严格,会根据回答深层挖掘
[Task]
请为我进行一场模拟的算法面试
问题难度:中等(LeetCode Medium 级别)
期望用时:45分钟
[Format]
按以下流程进行:
1. 提出一个算法问题
2. 听我的思路,给出反馈
3. 如果我卡住,给出提示而不是答案
4. 让我写代码,审查代码质量
5. 最后评价我的表现
交互示例:
面试官:"给你一个数组,找出其中的两个数,使得它们的和等于目标值。" 候选人:"我可以用哈希表..." 面试官:"很好,为什么选择哈希表?有其他方法吗?" ...
实践2:学生和老师角色扮演
问题描述:学习一个复杂的编程概念
[Role]
你是一位资深的计算机科学教授
教学风格:Socratic method(苏格拉底方法),通过提问引导学生思考
特点:友好、耐心、擅长用比喻解释复杂概念
[Task]
教我理解"什么是闭包(Closure)"
我的背景:刚学完 JavaScript 基础
[Format]
采用对话形式:
1. 先用一个简单的日常例子
2. 逐步深化到代码示例
3. 让我说出自己的理解
4. 如果有误,温和地纠正
教学过程示例:
老师:"想象你有一个钱包,里面有一些钱。你能看到钱包里有多少钱,但外人看不到。这就像什么?" 学生:"像是私有变量?" 老师:"很好!现在让我们用 JavaScript 代码表示这个想法..."
实践3:产品经理讨论
问题描述:与产品经理讨论功能设计
[Role]
你是一位经验丰富的产品经理
背景:在大型互联网公司工作过8年,做过多个千万级用户的产品
特点:用户导向、数据驱动、务实且有远见
[Task]
我想和你讨论一个新功能的可行性
功能:为我的社交应用添加"实时翻译"功能
[Format]
请采用产品讨论的形式:
1. 首先问我一些澄清问题
2. 评估功能的价值和可行性
3. 指出可能的陷阱
4. 建议优化方案
5. 帮助我制定实施计划
讨论流程示例:
PM:"首先,你的用户有多大比例需要翻译功能?" 你:"大约20-30%,他们经常和不同国家的用户聊天" PM:"这个用户占比很重要。有没有考虑过..."
RTF 框架最佳实践
✅ 做这些事
-
具体的角色定义
- ✅ "Google 技术面试官,10年经验,风格严格友好"
- ❌ "一个技术专家"
-
清晰的任务描述
- ✅ "进行45分钟的算法面试,考察中等难度问题"
- ❌ "面试我"
-
明确的互动格式
- ✅ "采用对话形式,我说一步你给反馈"
- ❌ "随意对话"
-
角色的连贯性
- 保持角色的一致性
- 让 AI 始终按照这个角色行动
❌ 避免这些事
-
模糊的角色
- ❌ "你是专家"
- ✅ "你是 MIT 计算机科学教授,专研并发编程"
-
没有格式要求
- ❌ "和我讨论一个想法"
- ✅ "按照设计思维的 5 步框架帮我分析"
-
角色冲突
- ❌ Role 说"严格的面试官",但 Format 说"非常友好"
- ✅ 角色和格式协调一致
-
任务不清晰
- ❌ "模拟一个面试"
- ✅ "模拟 Google 的系统设计面试,时长 60 分钟"
RTF 和其他框架的组合
RTF 可以和其他框架组合,创造更强大的效果:
RTF + BROKE
[Role] 资深 Java 架构师
[Background] 企业级微服务项目
[Objective] 生成登录接口
[Constraints] Spring Boot 3.2, JWT
[Examples] 输入/输出示例
[Format] 完整代码,包含异常处理
RTF + Chain-of-Thought
[Role] 算法讲师
[Task] 教我如何解决这个 LeetCode 问题
[Format] 请一步步讲解思路,然后才给代码
常见问题
Q: RTF 太简洁了,不会不够吗?
A: RTF 适合明确的任务。如果需求复杂,组合其他框架(如 RTF + BROKE)。
Q: 如何让 AI 更好地理解我想要的角色?
A: 给出具体的背景和经验。"20年经验"比"资深"更有效。
Q: RTF 适合代码生成吗?
A: 可以,但不是最优选择。代码生成用 BROKE 更好。RTF 适合角色扮演。