Prompt Engineering
2026-06-28
如何写出可复用的 Prompt 模板
Prompt Engineering
提示词模板
LLM
代码生成
背景
在刚开始使用大模型辅助编程时,我常常发现:同一段需求,今天问和明天问,模型给出的代码风格、变量命名甚至实现思路都可能不一样。这种不稳定性在团队项目中尤其麻烦——每个人都可能拿到不同风格的输出,后续维护成本很高。
后来我意识到,问题并不在模型本身,而在于提示词(Prompt)过于随意。如果把每次提问都当作一次“临时对话”,就很难保证输出质量。我开始尝试把高频任务抽象成可复用的 Prompt 模板,效果立竿见影。
核心思路
一个稳定的 Prompt 模板,通常包含四个部分:角色设定、上下文注入、任务描述和输出格式约束。它们共同作用,把“开放对话”变成“结构化输入”。
- 1 角色设定:明确模型扮演的身份,例如“你是一名经验丰富的 Python 后端工程师”,可以帮助模型调用对应领域的知识和表达习惯。
- 2 上下文注入:提供必要的代码片段、数据 schema、依赖版本等信息,减少模型“猜”的概率。
- 3 任务描述:用清晰、可验证的语言说明要做什么,避免模糊词如“优化一下”“写得好一点”。
- 4 输出格式约束:指定代码风格、注释语言、是否包含测试用例等,让结果更易于直接集成。
示例
以下是我用于“为现有函数生成单元测试”的 Prompt 模板骨架:
你是一名熟悉 pytest 的 Python 测试工程师。
请为以下函数编写单元测试:
```python
{{ function_code }}
```
要求:
1. 使用 pytest 风格,不要 unittest。
2. 覆盖正常路径和至少 2 个边界情况。
3. 每个测试用例添加中文注释说明测试意图。
4. 如果函数依赖外部服务,请使用 mock。
5. 只输出测试代码,不要额外解释。
通过把函数代码替换为 {{ function_code }},我可以把这个模板直接集成到脚本里,批量为多个函数生成测试。
总结
可复用的 Prompt 模板本质上是把“口头需求”翻译成“结构化任务单”。它不需要很复杂,但要在角色、上下文、任务、格式四个维度上足够明确。
下一步我计划把这些模板整理成一个小型库,并结合 Jinja2 做变量替换,让模板真正可配置、可版本管理。