4、变量占位符设计:变量命名规范、动态参数注入、默认值设置、类型标注技巧

好,咱们接着聊。上一章讲了模板的结构骨架,这一章我们来填肉——变量占位符。

说白了,变量占位符就是模板里的「活口」。你写一个Prompt模板,不可能每次都用死值。比如你要让AI写产品文案,产品名、目标用户、卖点这些肯定要换。那怎么设计这些「活口」?我踩过不少坑,今天全倒给你。

4.1 变量命名规范:别让名字坑了你

我刚开始写模板时,变量名特别随意。用过 abtemp,甚至 xxx。结果呢?三个月后自己都看不懂了。你想想看,一个模板里十几个变量,全是 var1var2,谁受得了?

我个人习惯用这套规范,你可以直接抄:

类型 命名规则 示例
文本内容 小写+下划线 product_nametarget_audience
数字/数值 加前缀 num_ num_wordsnum_variants
布尔值 加前缀 is_has_ is_formalhas_examples
列表/数组 加后缀 _list feature_listkeyword_list
枚举选项 加后缀 _option tone_optionstyle_option
我的小技巧:变量名控制在2-4个单词。太短容易混淆,太长写起来累。比如 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}}
我曾经踩过的坑:有一次我用了双花括号,但模板里恰好有JSON数据,花括号冲突了。结果AI解析得一塌糊涂。后来我养成了习惯——如果模板里包含代码或结构化数据,优先用序号占位或者加转义符。

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版。先用起来,再根据实际效果优化。这才是正道。