4、变量占位符设计:变量命名规范、动态参数注入、默认值设置、类型标注技巧
好,咱们接着聊。上一章讲了模板的结构骨架,这一章我们来填肉——变量占位符。
说白了,变量占位符就是模板里的「活口」。你写一个Prompt模板,不可能每次都用死值。比如你要让AI写产品文案,产品名、目标用户、卖点这些肯定要换。那怎么设计这些「活口」?我踩过不少坑,今天全倒给你。
4.1 变量命名规范:别让名字坑了你
我刚开始写模板时,变量名特别随意。用过 a、b、temp,甚至 xxx。结果呢?三个月后自己都看不懂了。你想想看,一个模板里十几个变量,全是 var1、var2,谁受得了?
我个人习惯用这套规范,你可以直接抄:
| 类型 | 命名规则 | 示例 |
|---|---|---|
| 文本内容 | 小写+下划线 | product_name、target_audience |
| 数字/数值 | 加前缀 num_ |
num_words、num_variants |
| 布尔值 | 加前缀 is_ 或 has_ |
is_formal、has_examples |
| 列表/数组 | 加后缀 _list |
feature_list、keyword_list |
| 枚举选项 | 加后缀 _option |
tone_option、style_option |
product_name 就比 name_of_the_product_that_we_are_promoting 好一万倍。
4.2 动态参数注入:三种主流方式
变量设计好了,怎么塞进模板里?我见过三种主流方式,各有各的适用场景。
方式一:双花括号占位
最通用,也是我最常用的。适合大多数场景:
请为 {{product_name}} 撰写一篇推广文案。
目标用户是 {{target_audience}}。
核心卖点包括:{{feature_list}}。
字数控制在 {{num_words}} 字以内。
语气要求:{{tone_option}}。
方式二:序号占位
适合参数顺序固定的场景。我在批量生成时常用:
请为 {0} 撰写一篇推广文案。
目标用户是 {1}。
核心卖点包括:{2}。
字数控制在 {3} 字以内。
方式三:管道式注入
适合需要预处理变量的场景。比如你要对用户输入做清洗:
产品名称:{{product_name | trim | capitalize}}
目标用户:{{target_audience | default("普通消费者")}}
输出格式:{{output_format | upper}}
4.3 默认值设置:给变量一个「保底」
你想想看,用户不传参数怎么办?模板直接崩?还是AI瞎猜?
我建议每个变量都设默认值。这不是偷懒,是容错。来看我的设计原则:
- 文本类变量:默认用「通用」「标准」这类中性词。比如
tone_option默认设为「专业」。 - 数值类变量:给一个合理的中间值。比如
num_words默认300,不长不短。 - 布尔类变量:默认设为
false或最安全的选项。比如is_formal默认true,因为正式总比随意安全。 - 列表类变量:默认给一个空数组或示例值。比如
feature_list默认["品质保证", "售后无忧"]。
核心原则:默认值要保证「即使不传参数,模板也能输出可用的结果」。别让用户面对空白的输出。
4.4 类型标注技巧:让AI更懂你的变量
嗯,这里要注意。很多人的模板变量只有名字,没有类型。AI拿到变量值后,得自己猜——这是文本?是数字?还是列表?猜错了,输出质量就飘了。
我习惯在变量名后面加类型标注,用冒号分隔。看例子:
产品名称: string = "智能手表"
目标用户: string = "职场白领"
核心卖点: list = ["心率监测", "睡眠分析", "消息提醒"]
输出字数: int = 300
是否正式: bool = true
语气风格: enum = "专业" | "亲切" | "幽默"
这样AI拿到变量时,就知道怎么处理了。比如 list 类型的变量,AI会自动展开成列表格式;enum 类型的,AI会从给定选项里选。
| 类型 | 标注方式 | AI处理行为 |
|---|---|---|
| string | 变量名: string |
直接插入文本 |
| int | 变量名: int |
按数字处理,可做运算 |
| float | 变量名: float |
保留小数精度 |
| bool | 变量名: bool |
触发条件分支 |
| list | 变量名: list |
展开为项目列表 |
| enum | 变量名: enum |
从选项中选择 |
| dict | 变量名: dict |
按键值对解析 |
num_words: int (1-1000),或者 tone_option: enum ["专业", "亲切", "幽默"]。这样AI不仅能理解类型,还能知道取值范围,输出更可控。
4.5 实战:一个完整的变量设计示例
说了这么多,来一个完整的。这是我给某电商平台设计的文案模板变量部分:
# 变量定义区
product_name: string = "默认产品"
target_audience: string = "25-35岁职场人群"
selling_points: list = ["品质保证", "性价比高"]
word_count: int = 200
tone: enum ["专业", "亲切", "促销"] = "专业"
include_cta: bool = true
cta_text: string = "立即购买"
output_format: enum ["段落", "要点", "对话"] = "段落"
# 模板正文
请为 {{product_name}} 撰写一篇面向 {{target_audience}} 的推广文案。
核心卖点如下:
{% for point in selling_points %}
- {{point}}
{% endfor %}
要求:
1. 字数控制在 {{word_count}} 字左右
2. 语气风格为 {{tone}}
3. {% if include_cta %} 结尾需包含行动号召:{{cta_text}} {% endif %}
4. 输出格式为 {{output_format}}
你看,每个变量都有名字、类型、默认值。用户拿到这个模板,一看就明白要填什么。AI拿到这个模板,也知道怎么处理。
最后说一句:变量设计这事,别想着一蹴而就。我自己的模板库,每个模板的变量都迭代过至少3版。先用起来,再根据实际效果优化。这才是正道。