首先在 prompt engineering 中,使用 {}
通常是为了标识占位符或变量,
这些占位符可以在实际生成内容时被动态替换。
通过这种方式,prompt 可以更加通用和灵活,适用于不同的输入数据场景。
以下是一个体系化、结构化的教程,帮助理解如何在 prompt engineering 中使用 {}
:
1. 基本概念:占位符 {}
- 占位符:在 prompt 中使用
{}
来表示需要替换的内容。例如,Hello, {name}!
这段 prompt 中的{name}
就是一个占位符。 - 目的:使用占位符可以创建一个模板,通过替换不同的内容生成不同的输出。
2. 占位符的应用场景
1.动态内容插入:
- 将需要变动的部分用
{}
表示。 - 例如:
Generate a summary for the following article: {article_text}
- 通过替换
{article_text}
,你可以快速为不同的文章生成总结。
2.参数化生成:
- 可以将不同的变量传递给 prompt 来产生变化的结果。
- 例如:
Translate the following sentence from {source_language} to {target_language}: {sentence}
3.数据驱动的输出:
- 如果有一个包含多个数据项的输入集,可以使用
{}
来创建更复杂的数据响应。 - 例如:
Create a personalized message for {customer_name}, who has a {subscription_plan} plan that expires on {expiry_date}.
3. 结构化的占位符使用方法
3.1 定义占位符模板
- 定义 prompt 时,确保所有可能变化的内容都使用
{}
包裹。例如:
Generate a marketing email:
Subject: {email_subject}
Body: Dear {customer_name}, we have an amazing offer for you on {product}. Save {discount}%!
3.2 动态替换数据
- 在实际使用时,通过代码或工具替换
{}
中的占位符。例如:
prompt = "Dear {customer_name}, we have an amazing offer for you on {product}. Save {discount}%!"
filled_prompt = prompt.format(customer_name="Alice", product="Laptop", discount=15)
print(filled_prompt)
输出:
Dear Alice, we have an amazing offer for you on Laptop. Save 15%!
3.3 多个占位符
- Prompt 中可以使用多个占位符,根据需要插入不同的信息。例如:
Describe the main features of {product_name}, highlighting the benefits it brings to {target_audience}.
4. 高级应用技巧
4.1 条件占位符
- 使用条件判断来决定哪些内容应该被插入。例如:
# 定义条件
is_active = True
# 根据条件设置替换内容
if is_active:
status = "active"
message = "Thank you for being a loyal customer!"
else:
status = "inactive"
message = "Please renew your subscription."
# 定义模板
prompt_template = "Your subscription is currently {status}. {message}"
# 进行替换
filled_prompt = prompt_template.format(status=status, message=message)
# 输出结果
print(filled_prompt)
4.2 循环与批量处理
- 可以将一个 prompt 模板应用于多个数据集合,生成一批输出。例如:
customers = [
{"name": "Alice", "plan": "Gold"},
{"name": "Bob", "plan": "Silver"},
]
for customer in customers:
print(f"Dear {customer['name']}, thank you for being a {customer['plan']} plan member.")
4.3 嵌套与递归
- 复杂的 prompt 可能需要嵌套的占位符:
Create a detailed report for {region}:
- Market leader: {leader}
- Growth potential: {growth}%
- Key trends: {trends}
- {trend_1}
- {trend_2}
5. 实践中的常见误区
- 未定义占位符:确保 prompt 中的占位符与代码中的变量一致,避免未被替换的
{}
导致错误。 - 占位符命名问题:使用有意义、容易理解的占位符名称,避免混淆。例如,使用
{customer_name}
而不是{name}
。 - 过度依赖变量插入:虽然
{}
能够灵活替换内容,但过多的占位符可能使 prompt 过于复杂,难以调试。