模块8:提示词模板与框架
难度:⭐⭐⭐⭐ 高级 | 建议时长:3-4小时
目标:掌握经典提示词框架,学会设计自己的模板,建立个人提示词库
8.0 快速上手:极简框架
在学习经典框架之前,先掌握两个”轻量级武器”。它们结构简单、上手极快,适合日常对话和简单任务。很多时候你不需要六七个要素的复杂框架,三个要素就够了。
框架A:RTF(日常对话首选)
R - Role(角色):你希望 AI 扮演什么身份
T - Task(任务):你希望 AI 完成什么事
F - Format(格式):你希望输出是什么样子
示例1:翻译润色
R:你是一位中英双语翻译专家,擅长学术论文润色
T:将以下中文摘要翻译为英文,确保符合 SCI 论文的表达习惯
F:输出英文翻译 + 3处关键润色说明(表格形式)
示例2:面试准备
R:你是一位有10年招聘经验的HR总监
T:针对"Python后端开发"岗位,帮我准备5个常见面试题及参考答案
F:每个问题包含:题目、考察重点、参考答案(200字内)、加分项提示
什么时候用 RTF? 日常提问、快速任务、不需要复杂推理的场景。如果你只能记住一个框架,记住 RTF。
框架B:APE(行动导向首选)
注意:本章的 APE 指的是 Action / Purpose / Expectation 提示框架。
在一些论文或研究资料中,APE 也可能指 Automatic Prompt Engineer(自动提示工程)。两者名称相同,但含义完全不同。为了避免混淆,后者更适合放在“优化与评估”或“扩展阅读”中理解。
A - Action(行动):要求 AI 做的具体动作
P - Purpose(目的):为什么要做这件事
E - Expectation(期望):期望得到什么样的结果
示例1:代码审查
A:审查以下 Python 代码
P:准备提交到生产环境前的最后检查
E:找出所有潜在的 bug、安全隐患和性能问题,
按严重程度排序,每个问题给出修复建议
示例2:竞品分析
A:对比分析飞书和钉钉的项目管理功能
P:我们团队正在选型协作工具,需要做决策
E:输出对比表格,涵盖功能、价格、优缺点,
最后给出推荐建议及理由
RTF vs APE 怎么选?
- 需要 AI 扮演特定身份 → 用 RTF(有角色)
- 只关心”做什么、为什么、要什么” → 用 APE(无角色,更直接)
8.1 五大经典框架
先提醒一句:本章介绍的几大框架,主要是常见实践框架或经验模板,适合帮助你更快组织提示词。
它们并不是行业唯一标准,也不是官方统一规范。真正重要的不是死记框架名,而是理解:任务目标、上下文、约束、示例、输出格式这些核心要素如何组合。
本章框架一览(缩写还原速查)
| 缩写 | 字母拆解 | 一句话特点 |
|---|---|---|
| RTF | Role / Task / Format(角色 / 任务 / 格式) | 3 要素极简版,日常对话首选(见 8.0) |
| APE | Action / Purpose / Expectation(行动 / 目的 / 期望) | 3 要素行动导向(见 8.0) |
| CO-STAR | Context / Objective / Style / Tone / Audience / Response | 6 要素,内容创作首选 |
| CRISPE | Capacity / Role / Insight / Statement / Personality / Experiment | 6 要素,策略分析首选 |
| BROKE | Background / Role / Objectives / Key result / Evolve | 5 要素,项目规划首选 |
| RISEN | Role / Instructions / Steps / End goal / Narrowing | 5 要素,任务执行首选 |
| RODES | Role / Objective / Details / Examples / Sense check | 5 要素,质量把关首选 |
| 密度链 | Chain of Density | 摘要压缩首选 |
💡 不需要死记字母——用的时候照速查表对一遍即可。
框架1:CO-STAR(内容创作首选)
C - Context(背景):任务的来龙去脉
O - Objective(目标):要达成什么
S - Style(风格):写作/回答的风格
T - Tone(语气):正式?友好?严肃?
A - Audience(受众):目标受众是谁
R - Response(回复格式):期望的输出格式
示例:
C:公司Q3销售额同比增长15%,超额完成目标
O:撰写一封给全体员工的通报邮件
S:正式的公司通知风格
T:积极鼓励,肯定团队努力
A:公司全体员工(约500人,各部门)
R:邮件格式,标题+正文+结语,800字以内
框架2:CRISPE(策略分析首选)
C - Capacity(能力):AI 扮演的角色
R - Request(请求):要做什么
I - Information(信息):背景信息
S - Steps(步骤):按什么步骤执行
P - Personality(个性):表达风格
E - Experiment(实验):要求多个方案
示例:
C:你是一位经验丰富的产品文案策划
R:为新上市的智能手表写推广文案
I:主打健康监测,目标用户25-35岁都市白领
S:先分析用户痛点,再设计3个不同角度的文案
P:简洁有力,有都市生活气息
E:提供3个版本,说明每个版本的策略差异
框架3:BROKE(项目规划首选)
B - Background(背景):任务的背景
R - Role(角色):AI 扮演的角色
O - Objective(目标):需要完成的目标
K - Key Result(关键结果):期望的具体产出
E - Evolve(改进):如何迭代优化
示例:
B:公司正在从传统电商转型社交电商
R:你是社交电商领域的战略顾问
O:制定3个月的转型计划
K:输出包含里程碑、关键指标、资源需求的计划表
E:如果第一版不够具体,根据反馈进一步细化
框架4:RISEN(任务执行首选)
R - Role(角色):你是谁
I - Instructions(指令):你要做什么
S - Steps(步骤):按什么步骤做
E - End goal(最终目标):要达到什么效果
N - Narrowing(约束):边界和限制
示例:
R:你是一位资深数据分析师,擅长用 Python 做商业分析
I:分析电商销售数据,找出销售下滑的原因
S:1.数据概览 2.趋势分析 3.品类下钻 4.地区交叉分析 5.建议
E:输出1页纸的分析报告,让业务负责人知道"问题在哪、该怎么办"
N:只基于提供的数据分析,建议必须可执行,图表用中文
框架5:密度链(Chain of Density,摘要压缩首选)
核心思想:让 AI 反复改写同一段摘要,
每次长度不变但信息密度越来越高。
类比:同样100字的朋友圈——
第1版:说了一堆废话,信息量低
第3版:每个字都是干货,信息量翻几倍
模板:
请为以下文章生成摘要,然后逐步提高信息密度。
规则:
- 每个版本长度相同(约100字)
- 每个新版本包含上一版的所有关键信息
- 每个新版本额外加入1-2个遗漏的重要细节
- 不能加长,只能通过压缩表达来腾出空间
- 共生成5个版本
文章:
"""
[粘贴文章]
"""
版本1(密度:低):...
遗漏的关键信息:[列出]
版本2(密度:中低):...
...
版本5(密度:高):...
实操建议:通常版本 2-3 可读性最好。版本5信息密度最高但可能读起来费劲。根据用途选合适的版本。
框架6:RODES(质量把关首选)
R - Role(角色):AI 扮演的专家身份
O - Objective(目标):要完成的核心目标
D - Details(细节):背景信息、上下文、具体要求
E - Examples(示例):期望输出的参考样例
S - Sense check(自检):让 AI 回顾并检查自己的输出
示例1:API 错误码文档
R:你是一位高级技术文档工程师
O:为电商支付系统的 REST API 编写错误码文档
D:面向第三方开发者阅读,需覆盖 HTTP 4xx 和 5xx 错误,
每个错误码需包含:错误码、HTTP状态码、描述、可能原因、解决方案
E:参考格式——
| 错误码 | HTTP 状态 | 描述 | 可能原因 | 解决方案 |
|--------|-----------|------|----------|----------|
| PAY_001 | 400 | 无效的支付金额 | 金额为负数或零 | 确保金额为正数,单位为分 |
S:完成后请自行检查——
1. 每个错误码是否唯一且无重复?
2. 解决方案对开发者是否真正有帮助(而非空话)?
3. 是否覆盖了支付流程中所有关键失败场景?
示例2:用户调研报告
R:你是一位用户研究专家,有 8 年 B2C 产品经验
O:基于以下用户访谈记录,输出一份用户调研分析报告
D:产品是一款健身 App,访谈了 12 位用户(6位活跃、6位流失),
重点关注流失原因和功能满意度
E:每个发现的格式——
【发现】:一句话结论
【证据】:引用 2-3 条原始访谈内容
【建议】:产品改进方向
S:完成后请自行检查——
1. 结论是否都有原始数据支撑,而非主观臆断?
2. 是否同时覆盖了活跃用户和流失用户的视角?
3. 建议是否具体可执行,而非"优化体验"这类空话?
RODES 的独特价值:最后的 Sense check(自检) 环节是其他框架没有的。它让 AI 扮演”审稿人”角色检查自己的输出,能显著减少遗漏和低质量内容。对输出质量要求高的任务,优先选 RODES。
如何选择框架?
| 场景 | 推荐框架 | 原因 |
|---|---|---|
| 简单日常提问 | RTF | 三要素极简,上手最快 |
| 行动导向/快速指令 | APE 或 TAG | 不需要角色,直奔主题 |
| 文案/文章/邮件 | CO-STAR | 注重风格和受众 |
| 营销推广/痛点文案 | BAB | Before→After→Bridge 结构天然有说服力 |
| 产品/策略分析 | CRISPE | 注重步骤和多方案 |
| 产品介绍/卖点提炼 | FOCUS | 特性→成果→对比→独特→总结 |
| 项目规划 | BROKE | 注重目标和迭代 |
| 目标设定 | SMART | 具体、可衡量、可实现、相关、有时限 |
| 数据分析/技术任务 | RISEN 或 ROSES | 注重执行步骤和约束 |
| 案例复盘/述职 | SPEAR | 情境→问题→证据→行动→结果 |
| 学术论证/观点输出 | PEE | 论点→证据→解释 |
| 摘要/压缩/提炼 | 密度链 | 字数不变信息翻倍 |
| 高质量文档/格式严格 | RODES | 示例驱动 + AI 自检机制 |
框架复杂度阶梯:
极简 ─────────────────────────────────── 精细 APE → RTF → CO-STAR → BROKE → RISEN → CRISPE → RODES 3要素 3要素 6要素 5要素 5要素 6要素 5要素+自检原则:够用就好,不要过度设计。写个朋友圈用 APE 足矣,写专业报告再上 RODES。
更多实用框架(速查手册补充)
以下框架在特定场景下很好用,但日常频率不如上面几个高。每个给出结构和 2 个示例,按需取用。
RACE(多场景通用)
R - Role(角色):AI 扮演什么身份
A - Action(行动):要做什么
C - Context(背景):在什么情况下
E - Expectation(期望):要什么结果
示例1:竞品调研
R:你是一位市场分析师
A:对比分析 Notion 和 飞书文档 的协作功能
C:我们团队正在选型,10人规模,远程办公为主
E:输出对比表格 + 推荐结论,500字以内
示例2:面试辅导
R:你是一位资深技术面试官
A:模拟一场 30 分钟的 Java 后端面试
C:候选人是 3 年经验的中级工程师,面试高级岗
E:提出 5 个由浅入深的问题,每个附带评分标准
BAB(营销文案 / 产品推广)
B - Before(之前):用户现在的痛点/困境
A - After(之后):用了产品后的理想状态
B - Bridge(桥梁):产品如何帮用户从 Before 到 After
示例1:健身App推广
B:每天加班到9点,想健身但没时间去健身房,身体越来越差
A:每天只需15分钟,在家就能完成高效训练,3个月体脂降5%
B:「FitHome」App 提供 AI 定制的短时高效课程,
根据你的时间和体能自动调整,不需要器械
示例2:项目管理工具
B:团队用微信群沟通项目,消息刷屏找不到重点,
任务经常遗漏,deadline 总是赶不上
A:每个任务有清晰的负责人和截止日,进度一目了然,
到期自动提醒,再也不会漏事
B:「TaskFlow」把聊天和任务管理合二为一,
群里说的事一键变任务,自动追踪到完成
SMART(目标设定)
S - Specific(具体):目标是什么,越具体越好
M - Measurable(可衡量):怎么判断达成了
A - Achievable(可实现):以现有资源能做到吗
R - Relevant(相关):和大目标有什么关系
T - Time-bound(有时限):什么时候完成
示例1:学习目标
S:掌握 Python 数据分析(pandas + matplotlib)
M:能独立完成一份包含数据清洗、可视化、结论的分析报告
A:每天投入1小时,有编程基础
R:为转岗数据分析师做准备
T:8周内完成
示例2:产品目标
S:将 App 的用户次日留存率从 35% 提升到 45%
M:通过数据后台监控次日留存指标
A:团队有 3 名开发 + 1 名产品,可投入 2 个迭代
R:留存是当前增长瓶颈,提升留存直接影响 LTV
T:6周内上线改进方案并观察 2 周数据
SPEAR(案例陈述 / 复盘)
S - Situation(情境):当时的背景
P - Problem(问题):遇到了什么问题
E - Evidence(证据):有什么数据/事实支撑
A - Action(行动):采取了什么措施
R - Result(结果):最终效果如何
示例1:项目复盘
S:2024年Q2,电商大促期间系统承压
P:支付接口在峰值时段响应超时,导致 15% 订单失败
E:监控显示 QPS 达到 8000,数据库连接池耗尽
A:紧急扩容 + 引入消息队列削峰 + 增加数据库读写分离
R:30分钟内恢复正常,后续压测通过 12000 QPS
示例2:个人成长
S:入职第一年,负责一个 5 人小组的日常管理
P:组员对任务分配不满,认为分配不公平,士气低落
E:1on1 中 3 人提到"总是我做脏活",迭代速度下降 20%
A:引入任务轮换制 + 公开任务难度评分 + 每周回顾
R:2个月后满意度调查提升 40%,迭代速度恢复正常
TAG(极简任务)
T - Task(任务):做什么
A - Action(行动):怎么做
G - Goal(目标):达到什么效果
示例1:
T:翻译一段产品介绍
A:用简洁的美式英语,避免直译
G:让美国用户一读就懂,不超过 100 词
示例2:
T:检查这段 SQL 查询
A:从性能和安全两个角度审查
G:找出所有慢查询风险和 SQL 注入隐患,给修复建议
ERA(快速任务)
E - Expectation(期望):你想要什么
R - Role(角色):AI 扮演谁
A - Action(行动):具体做什么
示例1:
E:得到一份清晰的会议纪要
R:你是一位高效的行政助理
A:将以下会议录音转写整理为结构化纪要,
包含:议题、决议、待办事项(含负责人和截止日)
示例2:
E:快速理解一篇英文论文的核心贡献
R:你是一位 AI 领域的研究员
A:用中文总结这篇论文的 3 个核心贡献和 1 个主要局限,
每点不超过 2 句话
ROSES(步骤明确的任务)
R - Role(角色):AI 的身份
O - Objective(目标):要完成什么
S - Scenario(场景):在什么情境下
E - Expected output(期望输出):输出什么样子
S - Steps(步骤):按什么步骤做
示例1:数据报告
R:数据分析师
O:分析本月销售数据异常
S:某品类销售额环比下降 30%,需要找原因
E:一页纸的分析报告,含图表描述和改进建议
S:1.确认数据范围 2.对比历史趋势 3.下钻到SKU级别
4.排查外部因素 5.给出结论和建议
示例2:代码重构
R:高级后端工程师
O:重构这个 500 行的 God Class
S:这个类承担了用户注册、登录、权限校验、日志记录四个职责
E:拆分为 4 个单一职责的类,保持原有接口不变
S:1.梳理现有方法归属 2.设计新的类结构 3.逐个迁移方法
4.处理类间依赖 5.验证原有测试通过
FOCUS(产品介绍)
F - Features(特性):产品有什么功能
O - Outcomes(成果):能带来什么结果
C - Comparisons(对比):和竞品比怎样
U - Unique(独特):独特卖点是什么
S - Summary(总结):一句话总结
示例1:
F:AI 写作助手,支持长文、邮件、社媒文案
O:写作效率提升 3 倍,文案质量稳定
C:比 ChatGPT 更懂中文语境,比文心一言更快
U:内置 50+ 行业模板,一键切换写作风格
S:中文写作场景的最佳 AI 搭档
示例2:
F:智能会议系统,实时转写 + 自动摘要 + 待办提取
O:会后 5 分钟出纪要,不再遗漏 action item
C:比讯飞听见多了智能摘要,比 Otter 支持中文
U:能识别多人发言并自动标注说话人
S:开完会就有纪要,再也不用手动整理
PEE(学术写作 / 论证)
P - Point(论点):你的核心观点
E - Evidence(证据):支撑观点的事实/数据
E - Explanation(解释):证据如何支撑论点
示例1:
P:远程办公能提高知识工作者的生产力
E:斯坦福 2023 年研究显示,远程工作者产出比办公室高 13%;
GitLab 全远程团队连续 5 年营收增长超 50%
E:远程减少了通勤和无效会议的时间消耗,
让员工能在精力最佳时段集中处理深度工作
示例2:
P:微服务架构不适合所有团队
E:Segment 在 2018 年从微服务回退到单体,
维护 100+ 服务的成本超过了收益;
团队从 3 人扩到 10 人才勉强维持
E:微服务带来的运维复杂度(网络、部署、监控)
需要足够的团队规模来分摊,小团队得不偿失
RACEF(提示词精炼优化)
R - Rephrase(重述):用自己的话重新表述需求
A - Append(补充):添加遗漏的关键信息
C - Contextualize(加上下文):补充背景和约束
E - Examples(加示例):给出期望输出的样例
F - Follow-up(追问):预设可能的追问方向
示例1:优化一个模糊的提示词
原始提示词:"帮我写个邮件"
R:写一封催促供应商交货的商务邮件
A:供应商已延期 2 周,合同约定违约金条款
C:我是采购经理,对方是长期合作伙伴,语气要坚定但不撕破脸
E:开头问候 → 说明延期事实 → 引用合同条款 → 要求回复确认新日期
F:如果对方回复说原材料短缺,我该怎么回?
示例2:优化一个技术提示词
原始提示词:"帮我优化这段代码"
R:优化这段 Python 数据处理代码的执行速度
A:当前处理 100 万行 CSV 需要 45 秒,目标降到 10 秒以内
C:运行环境是 8核16G 的 Linux 服务器,可以用多线程
E:期望输出:优化后的代码 + 性能对比 + 优化原理说明
F:如果用 pandas 还是不够快,是否该换 Polars?
RACEF 的独特价值:它不是用来”写提示词”的,而是用来”改提示词”的。当你觉得自己的提示词效果不好时,按 RACEF 五步逐项补充,通常能显著提升质量。
使用建议:以上框架不需要全部记住。日常 80% 的场景用 RTF/APE/CO-STAR 就够了。遇到特定场景(营销用 BAB、目标设定用 SMART、案例复盘用 SPEAR、优化提示词用 RACEF)时再来查。
8.2 扩展阅读:从框架到自动化提示优化
本章讲的是“人如何更好地组织提示词”。继续往前走,你还会遇到“让模型自动生成、筛选和优化提示词”的方向,例如 Automatic Prompt Engineer、Active-Prompt 等。
这些内容更偏优化方法论和研究实践,不属于日常写 Prompt 的第一优先级。建议先掌握本章这些高频框架,再继续学习模块 9 的系统化优化方法。
8.3 设计自己的模板
为什么要有自己的模板?
每次从头写提示词就像每次做菜都从”盐放多少”开始琢磨。有了验证过的模板,复制粘贴改几个变量就能用。
从零设计模板的三步法
第一步:确定场景
"我每周都要写周报" → 这是一个高频场景,值得做模板
第二步:提炼变量
每次变化的部分:本周工作内容、遇到的问题、下周计划
不变的部分:格式要求、语气要求、字数限制
第三步:组装模板
把不变的部分固定下来,变化的部分用 [占位符] 标记
示例:周报模板
你是一位善于总结的项目经理助手。
请基于以下信息撰写一份周报:
本周完成的工作:
[在这里填写]
遇到的问题:
[在这里填写]
下周计划:
[在这里填写]
格式要求:
- 使用 Markdown 格式
- 每个部分用 ### 标题
- 完成的工作按重要性排序
- 问题部分要附带解决方案或进展
- 下周计划要有具体的时间节点
- 总字数 300-500 字
- 语气:专业简洁,突出成果和数据
8.4 变量化深入指南
8.3 节的”三步法”教你怎么提炼变量,本节教你怎么把变量写规范、写对、写到生产可用。
8.4.1 4 种主流占位符语法
不同工具/场景用不同的占位符语法。先认清差别再选用:
| 语法 | 长相 | 出处 | 适用 |
|---|---|---|---|
[占位符] 中括号 | [在这里填写本周工作] | 给人看的标记 | 手动复制粘贴场景,肉眼最易识别 |
{变量} 单花括号 | 请总结{topic} | Python str.format() / f-string | Python 代码调用 LLM API 时 |
{{变量}} 双花括号 | 请总结{{topic}} | Mustache / Jinja2 / LangChain PromptTemplate | 生产框架(LangChain、LlamaIndex 等) |
<变量> 尖括号 | <context>...</context> | Anthropic 官方推荐 | 给 Claude 的结构化提示词 |
⚠️ 不要混用:选定一种就一以贯之。混用会导致替换出 bug 或被框架误解析。
4 种语法的对比示例
同一个”总结文章”提示词,4 种写法:
[中括号 - 给人看]
请用3句话总结以下文章:
[在这里粘贴文章]
{单花括号 - Python}
请用3句话总结以下文章:
{article}
{{双花括号 - LangChain}}
请用3句话总结以下文章:
{{article}}
<尖括号 - Anthropic 推荐>
请用3句话总结以下文章:
<article>
{{article}}
</article>
📌 Anthropic 风格的精髓:用 XML 标签包裹内容,比单纯占位符更清晰——AI 能明确知道”哪段是用户真正要处理的内容”。
8.4.2 变量的 3 种角色分类
不是所有变量都一样重要。按”在提示词里扮演什么角色”分类:
| 类型 | 作用 | 例子 | 改动频率 |
|---|---|---|---|
| 内容变量 | AI 要处理的素材 | {文章} {代码} {用户问题} | 每次都变 |
| 配置变量 | 影响输出格式 | {字数限制} {语言} {格式} | 偶尔改 |
| 角色变量 | 改变 AI 行为风格 | {专家身份} {语气} {受众} | 很少改 |
为什么要分类:
- 🟢 内容变量 → 前台用户每次都填
- 🟡 配置变量 → 做成下拉选项 / 默认值
- 🔵 角色变量 → 后台预设,前台不暴露
示例:写一个”技术答疑”模板,三类变量都用上:
你是一位{身份},请用{语气}回答以下技术问题。
问题:
<question>
{user_question}
</question>
要求:
- 答案不超过 {max_words} 字
- 用 {language} 回答
- 如果问题不清楚,先反问澄清
填入:
- 角色变量:
身份=资深 Python 工程师、语气=耐心专业 - 配置变量:
max_words=300、language=中文 - 内容变量:
user_question=如何优化 for 循环?
8.4.3 高级技巧
技巧 1:默认值(可选变量)
不是每个变量都必须填——支持默认值能让模板更灵活。
Python 写法:
template = "用{tone}的语气回答:{question}"
result = template.format(
question="什么是 RAG?",
tone="通俗易懂" # 可以省略此参数 → 改用 .get('tone', '专业') 提供默认
)LangChain 写法:
from langchain.prompts import PromptTemplate
prompt = PromptTemplate(
template="用{tone}的语气回答:{question}",
input_variables=["question"],
partial_variables={"tone": "专业"} # 默认值
)技巧 2:嵌套变量(变量里再套变量)
复杂场景下,一个大模板由多个小模板拼出来。
[主模板]
你是 {role_block}。
请处理以下内容:
{content_block}
输出要求:{output_block}
[role_block 子模板]
一位 {experience} 年经验的 {profession},擅长 {skill}
[output_block 子模板]
- 字数:{word_limit}
- 格式:{format}
💡 嵌套层级建议不超过 2 层——再深就难维护了。
技巧 3:条件变量(不同情况插不同内容)
# 伪代码示意
prompt = f"""
请总结以下文章:
{article}
{('请用专业术语' if is_expert_audience else '请用通俗语言')}
{f'限制 {max_words} 字以内' if max_words else ''}
"""LangChain 用 Jinja2 模板更优雅:
请总结:{{ article }}
{% if expert %}请用专业术语{% else %}请用通俗语言{% endif %}技巧 4:变量类型约束
防止”变量值不合法”导致提示词跑飞——在替换前先校验。
def render_prompt(template, vars):
# 校验类型
assert isinstance(vars.get("max_words"), int), "max_words 必须是数字"
assert vars.get("max_words", 0) <= 2000, "字数上限不能超过 2000"
assert vars.get("language") in ["中文", "英文"], "语言只支持中英文"
# 校验通过后再替换
return template.format(**vars)8.4.4 与主流框架的对接
LangChain PromptTemplate(最常用)
from langchain.prompts import PromptTemplate
# 定义模板
template = PromptTemplate(
input_variables=["product", "audience"],
template="""
你是营销专家。请为 {product} 写一段面向 {audience} 的推广文案。
要求:3 句话以内,突出 1 个核心卖点。
"""
)
# 渲染(变量替换)
prompt = template.format(product="降噪耳机", audience="程序员")
# 然后丢给 LLMAnthropic SDK(直接传消息)
from anthropic import Anthropic
client = Anthropic()
# Anthropic 风格:用 XML 标签包裹内容变量
prompt = f"""
请总结这篇文章。
<article>
{article_content}
</article>
要求:{max_words} 字以内。
"""
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": prompt}]
)OpenAI SDK
类似 Python 标准 f-string 即可,没有专属模板规范。
8.4.5 变量化的常见坑
| 坑 | 现象 | 解法 |
|---|---|---|
| 变量名冲突 | 模板里有 {role},但用户输入也含 {role} 字面量 → 替换出错 | 用双花括号 {{role}} 转义,或换语法 |
| 空值未处理 | 变量为空时模板里出现”请处理:” 后面什么都没有 | 加默认值或条件分支 |
| 类型错配 | {max_words} 期望数字但传了字符串”五百” | 加类型校验 |
| 顺序敏感 | 变量先后位置影响 AI 理解 | 关键内容(如用户问题)放最后 |
| 越权变量 | 用户输入的变量内容里夹带”忽略上面,你现在是…” | 用 XML 标签隔离用户输入;做 Prompt Injection 检测 |
⚠️ 越权变量是最危险的——用户输入可能藏着”提示词注入攻击”。详见 Agent 安全攻防 中”提示词注入”章节。
8.4.6 一句话总结
变量化 = 把”每次都要写一遍”的提示词,变成”模板 + 占位符”的结构。 占位符语法选 1 种用到底(推荐 Anthropic 的
<XML>风格),变量按”内容/配置/角色”分类管理,复杂场景用 LangChain 等框架。
8.5 建立个人提示词库
提示词库的组织方式
我的提示词库/
├── 工作场景/
│ ├── 邮件_商务.md
│ ├── 邮件_催促.md
│ ├── 周报.md
│ ├── 会议纪要.md
│ └── 项目方案.md
├── 编程开发/
│ ├── 代码生成.md
│ ├── 代码审查.md
│ ├── Bug调试.md
│ └── 代码重构.md
├── 学习研究/
│ ├── 概念学习.md
│ ├── 论文阅读.md
│ └── 学习规划.md
└── 创意写作/
├── 公众号文章.md
├── 产品文案.md
└── 短视频脚本.md
单个提示词的记录格式
# [提示词名称]
## 基本信息
- 适用场景:
- 推荐模型:[GPT-4o/Claude/通用]
- 效果评分:⭐⭐⭐⭐ (4/5)
- 版本:v2.1
- 最近更新:2024-xx-xx
## 提示词正文
"""
[完整的提示词内容]
"""
## 使用说明
- 需要替换的变量:[列出]
- 注意事项:[特别提醒]
## 效果样本
输入示例:...
输出示例:...
## 优化历史
- v1.0:初始版本
- v1.1:增加了输出格式要求
- v2.0:加入角色设定,效果显著提升
- v2.1:微调约束条件,减少跑题
8.6 动手练习
练习1:用框架写提示词
分别用 CO-STAR 和 RISEN 框架,为”给公司新人写欢迎邮件”设计提示词,对比哪个更好用。
练习2:设计自己的模板
为你工作中最高频的任务设计一个可复用模板,用 [占位符] 标记变量部分。
练习3:建立提示词库
根据你的实际需求,建立一个包含至少 5 个提示词的个人库,每个都按记录格式写好。
本章小结
✅ 极简框架:RTF(角色+任务+格式)、APE(行动+目的+期望)
✅ 五大经典框架:CO-STAR/CRISPE/BROKE/RISEN/密度链
✅ 质量把关框架:RODES(独有自检机制)
✅ 按场景选框架:日常用RTF/APE,创作用CO-STAR,分析用CRISPE,
规划用BROKE,执行用RISEN,压缩用密度链,高质量输出用RODES
✅ 设计模板三步法:确定场景→提炼变量→组装模板
✅ 个人提示词库:分类保存、记录版本、持续迭代
下一步 → 09_系统化优化与评估.md