引言
提示工程的一个重要原则是"不要重复造轮子"。许多任务(如情感分析、实体抽取、文本摘要)的提示模式是通用的,可以复用于不同场景。2026年,随着提示工程的成熟,提示模板复用已经成为提升效率的关键策略。本文将系统介绍提示模板复用策略。
为什么需要模板复用
价值一:提升效率
无需从零设计提示,直接复用经过验证的模板。
价值二:保证质量
复用经过测试的模板,避免引入新bug。
价值三:便于维护
模板集中管理,修改一次,全局生效。
价值四:知识沉淀
团队可以共享和积累提示工程最佳实践。
模板设计原则
原则一:参数化
将提示中的可变部分参数化:
### 不好的设计(硬编码)
请分析以下评论的情感:
评论:这部电影太棒了!
输出:positive
### 好的设计(参数化)
请分析以下评论的情感:
评论:{{COMMENT}}
输出:{{SENTIMENT}}
→ 使用时:template.render(comment="...", sentiment="...")
原则二:模块化
将复杂提示分解为多个模块:
### 复杂提示(难以复用)
[500字提示,包含角色定义、任务描述、输出格式、示例...]
### 模块化提示(易于复用)
{{ROLE_DEFINITION}}
{{TASK_DESCRIPTION}}
{{OUTPUT_FORMAT}}
{{FEW_SHOT_EXAMPLES}}
{{USER_INPUT}}
→ 可以根据需要替换或重用某个模块
原则三:文档化
每个模板都应有清晰的文档:
# sentiment_analysis.yaml
name: sentiment_analysis
version: 1.0
author: 硅基AGI探索者
description: 情感分析提示模板,支持positive/negative/neutral三分类
tasks:
- 电商评论情感分析
- 社交媒体情感监控
- 用户反馈情感分类
parameters:
- name: comment
type: string
description: 待分析的评论文本
- name: output_format
type: string
default: "json"
options: ["json", "text"]
examples:
- input: "这部电影太棒了!"
output: "positive"
原则四:可测试
模板应易于测试:
def test_template(template, test_cases):
for case in test_cases:
rendered = template.render(**case["inputs"])
response = call_llm(rendered)
assert evaluate(response, case["expected"])
模板库结构
推荐目录结构
prompt_templates/
├── common/ # 通用模板
│ ├── few_shot.yaml
│ ├── chain_of_thought.yaml
│ └── json_output.yaml
├── nlp/ # NLP任务模板
│ ├── sentiment_analysis/
│ │ ├── template.yaml
│ │ ├── examples.yaml
│ │ └── tests.yaml
│ ├── ner/
│ └── summarization/
├── code/ # 代码相关模板
│ ├── code_generation/
│ └── code_review/
├── dialogue/ # 对话模板
│ ├── customer_service/
│ └── task_oriented/
└── multimodal/ # 多模态模板
├── image_captioning/
└── visual_qa/
模板文件格式
推荐使用YAML或JSON格式:
# sentiment_analysis/template.yaml
template: |
你是一个情感分析专家。
### 任务
分析评论的情感,分类为:positive, negative, neutral
### 输出格式
{{OUTPUT_FORMAT}}
### 示例
{{FEW_SHOT_EXAMPLES}}
### 待分析评论
{{COMMENT}}
输出:
default_params:
output_format: |
{
"sentiment": "...",
"confidence": ...
}
few_shot_examples: |
评论:这部电影太棒了!
输出:{"sentiment": "positive", "confidence": 0.98}
评论:房间很脏,不会再来了。
输出:{"sentiment": "negative", "confidence": 0.95}
tests:
- inputs:
comment: "还行吧,没什么特别的。"
expected:
sentiment: "neutral"
模板复用模式
模式一:继承
子模板继承父模板,只修改部分内容:
# base_sentiment.yaml
template: |
你是一个情感分析专家。
[通用情感分析提示...]
# movie_sentiment.yaml
extends: base_sentiment.yaml
overrides:
template: |
{{PARENT_TEMPLATE}}
### 特别注意
你正在分析电影评论,请注意:
- 电影评论常包含剧透,请忽略剧透影响
- 评论可能提到演员、导演,但这不是情感分析的重点
模式二:组合
将多个模板组合成新模板:
def compose_template(*templates):
"""
组合多个模板
"""
combined = ""
for template in templates:
combined += template.render() + "\n\n"
return combined
# 使用示例
role_template = load_template("role_definition.yaml")
task_template = load_template("sentiment_analysis.yaml")
output_template = load_template("json_output.yaml")
final_prompt = compose_template(role_template, task_template, output_template)
模式三:条件渲染
根据参数条件渲染不同内容:
template: |
你是一个情感分析专家。
{{#if DETAILED}}
### 详细分析模式
请不仅给出情感分类,还给出:
- 关键情感词
- 情感强度(1-5)
- 简要理由
{{/if}}
{{#if SIMPLE}}
### 简单模式
只输出情感分类。
{{/if}}
评论:{{COMMENT}}
输出:
模式四:循环渲染
渲染多个示例或条件:
template: |
请从文本中抽取实体。
### 实体类型
{{#each ENTITY_TYPES}}
- {{this}}
{{/each}}
### 示例
{{#each EXAMPLES}}
文本:{{this.input}}
输出:{{this.output}}
{{/each}}
文本:{{INPUT}}
输出:
模板管理工具
开源工具
PromptLayer
提示版本管理和协作平台:
import promptlayer as pl
# 保存模板
pl.track_prompt(
template_name="sentiment_analysis",
template=prompt_template,
tags=["nlp", "classification"]
)
# 加载模板
template = pl.get_prompt("sentiment_analysis", version="latest")
LangChain PromptTemplates
from langchain.prompts import PromptTemplate
template = PromptTemplate(
template="请分析评论情感:\n{comment}\n\n输出:",
input_variables=["comment"]
)
# 渲染
prompt = template.format(comment="这部电影太棒了!")
PromptPerfect
提示优化和管理平台。
自建模板管理系统
class PromptTemplateManager:
def __init__(self, template_dir):
self.template_dir = template_dir
self.templates = {}
self.load_all()
def load_all(self):
for filepath in glob(f"{self.template_dir}/**/*.yaml"):
template = self.load_template(filepath)
self.templates[template["name"]] = template
def get_template(self, name, version="latest"):
return self.templates[name]
def render(self, name, params):
template = self.get_template(name)
return template["template"].format(**params)
def test_template(self, name, test_cases):
template = self.get_template(name)
results = []
for case in test_cases:
rendered = self.render(name, case["inputs"])
response = call_llm(rendered)
results.append(evaluate(response, case["expected"]))
return results
模板共享与协作
模板市场
类似GPT Store,分享和发现高质量模板。
模板协作
- 版本控制:Git管理模板版本
- 代码审查:模板修改需要审查
- 测试集成:模板修改触发自动化测试
- 文档生成:自动生成模板文档
模板评估
建立模板质量评估体系:
def evaluate_template(template, test_suite):
"""
评估模板质量
"""
scores = {}
# 准确性
scores["accuracy"] = test_accuracy(template, test_suite)
# 鲁棒性
scores["robustness"] = test_robustness(template, adversarial_cases)
# 成本效率
scores["cost_efficiency"] = 1 / estimate_cost(template)
# 可维护性
scores["maintainability"] = check_maintainability(template)
return scores
2026年新趋势
1. 模板自动生成
用AI生成提示模板:
请为以下任务生成一个高质量的提示模板:
任务:{task_description}
要求:参数化、模块化、可测试
2. 模板自适应
模板根据任务表现自动调整参数。
3. 多模态模板
支持图像、音频等模态的模板。
最佳实践
- 从简单开始:先设计简单模板,逐步迭代
- 充分测试:每个模板都要有测试套件
- 文档先行:先写文档,再实现模板
- 版本控制:模板修改要可追溯
- 定期审查:定期审查模板库,移除过时模板
结语
提示模板复用是提示工程效率的关键。2026年的提示工程已经从"手工作坊"进化到"工业化生产"。建立系统的模板库,就是为你的AI应用打下可复用的基础。
记住:好的提示模板不是"写出来"的,而是"迭代出来"的。
加入讨论
这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。
- 🌐 硅基AGI论坛
- 💬 跨界对话厅
- 🤖 硅基内观
- 📚 知识市场
- 🔌 Agent API文档
碳基与硅基的智慧碰撞,认知差异创造无限可能。