12 Prompt 模板化与参数化
前情回顾
- 在 第 11 节 我们学会了 Few-shot 和 Chain-of-Thought,可以让模型回答更稳定、推理更清晰。
- 但如果每次都要人工写示例、复制粘贴 Prompt,不仅麻烦,还容易出错。
- 这就是今天的主题:Prompt 模板化与参数化 ------ 把提示词写成可复用的模板,用参数来控制内容。
一、为什么要做 Prompt 模板化?
-
避免重复劳动
- 如果你做客服机器人,每个回答都需要礼貌开头、总结结尾。
- 模板化后,只需填充变量,不用每次都重写 Prompt。
-
保证输出一致性
- 产品经理最怕 AI 输出风格不统一(有时太随意,有时太正式)。
- 模板化能固定"回答风格"和"输出格式"。
-
便于迭代和调优
- 当你要修改提示词策略时,只需改模板,不用到处找 Prompt。
👉 换句话说,Prompt 模板化就像写"AI 提示词的 PRD"。
二、实践:写一个 Prompt 模板生成器
我们来写一个简单的 Python 小工具,把 Prompt 写成模板,并支持参数化。
1. Python 示例(保存为 prompt_template.py
)
python
from string import Template
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:11434/v1", api_key="ollama")
# 定义 Prompt 模板
template_text = """
你是一名专业的客服机器人,请用简洁、礼貌的语气回答用户问题。
[示例风格]
用户:如何重置密码?
AI:您好,您可以通过点击"忘记密码",然后按照提示步骤完成重置。
[问题]
用户:$question
请保持和示例一致的风格,直接给出答案。
"""
# 把模板编译为可替换对象
prompt_template = Template(template_text)
def ask(question):
# 用参数替换模板中的变量
prompt = prompt_template.substitute(question=question)
resp = client.chat.completions.create(
model="deepseek-r1",
messages=[{"role": "user", "content": prompt}],
temperature=0.2
)
return resp.choices[0].message.content
# 测试不同输入
print("Q: 如何申请报销?")
print("A:", ask("如何申请报销?"))
print("\nQ: 公司年假是多少天?")
print("A:", ask("公司年假是多少天?"))
2. 运行结果(示例)
Q: 如何申请报销?
A: 您好,报销流程为:先提交报销申请,待审批通过后,再上传发票和凭证进行报销。
Q: 公司年假是多少天?
A: 您好,公司规定员工每年享有 10 天带薪年假。
👉 可以看到,不同问题都被套进了同一个 礼貌客服风格模板。
三、模板还能做什么?
-
参数化 Few-shot
- 把 Few-shot 示例写在模板里,用变量控制问题和答案。
- 比如 FAQ 系统,可以自动生成几十个 Prompt,而不用手写。
-
固定输出格式
-
可以强制 AI 按 JSON、Markdown、表格输出。
-
例:
请用 JSON 格式回答: {"答案": "...", "引用": "..."}
-
-
跨角色复用
-
同一个问题,不同角色可以有不同模板:
- 客服机器人:礼貌回答
- 教师助手:分步骤讲解
- 医疗助手:附带免责声明
-
四、产品经理思考
1. 为什么 PM 要推动 Prompt 模板化?
- 可控性:输出风格统一,降低不可控风险。
- 可维护性:方便团队调试和更新,不依赖个人经验。
- 可扩展性:适配不同场景(客服、教育、金融),只需切换模板。
2. 在 PRD 中怎么写?
- 功能需求:系统支持 Prompt 模板化与参数化。
- 非功能需求:不同部门可以配置自己的模板,输出风格必须统一。
- 验收标准:相同问题在 10 次调用中,输出格式和风格保持一致。
3. 案例
- 教育场景:固定输出格式 → "逐步推理 + 总结"。
- 客服场景:固定语气 → "您好,请您......"。
- 金融场景:固定免责声明 → "以下信息仅供参考,不构成投资建议"。
五、小结
今天我们学习了:
- Prompt 模板化和参数化的概念与价值。
- 用 Python 写了一个小工具,把问题自动填进模板。
- PM 视角:模板化能让 AI 产品更可控、更统一,也方便迭代和扩展。