在利用大语言模型生成代码时,输出的质量高度依赖你给出的描述(Prompt)是否精准。
经过大量真实任务验证,可提炼出一条实用、可复现的描述公式:
高质量代码 = 清晰上下文 + 明确任务 + 技术约束 + 输入输出示例 + 边界情况处理
这五要素构成一条“黄金模板”,能显著提升代码的可用性与准确率。下面逐一拆解。
1. 清晰上下文
告诉模型当前处在什么项目、什么语言及环境里,避免它“凭空想象”。
- 必须包含:编程语言、框架及版本(如
Python 3.11 + FastAPI 0.100) - 可选包含:文件结构、已有的类/函数名、依赖库
2. 明确任务
用一句话精确描述你要实现的功能,杜绝模糊词汇。
- ❌ “写个处理的函数”
- ✅ “实现一个函数,读取 CSV 文件并将其中的
date列从YYYYMMDD转为YYYY-MM-DD格式”
3. 技术约束
明确对代码风格、设计模式、性能、安全等方面的硬性要求。
- 示例:“遵循 PEP8 规范,使用类型注解;时间复杂度不超过 O(n);所有外部调用需带超时重试。”
4. 输入输出示例
给出具体的输入、输出样例(配合函数签名效果更佳),让模型准确理解数据结构和边界。
- 示例:
输入:{"data": [1,2,3]}
输出:{"sum": 6, "avg": 2.0}
5. 边界情况处理
要求代码主动应对空值、异常、非法输入等情况,避免生成“只走 happy path”的脆弱代码。
- 示例:“如果输入列表为空,返回
sum=0, avg=None;如果元素非数字,抛出ValueError并携带报错元素索引。”
公式应用对比
❌ 一般描述(低质量 Prompt)
“帮我写一个 Python 程序,处理 list 里的数字并返回结果。”
生成结果可能:代码仅做了简单求和,无类型检查,函数名随意,易崩溃。
✅ 套用公式的描述
【上下文】 Python 3.11 环境,仅用标准库
【任务】 实现函数calculate_stats(values: list) -> dict,计算列表数字的总和、平均值、最大值
【技术约束】 必须使用类型注解;时间复杂度 O(n);PEP8 风格
【输入输出示例】
输入:[1, 2, 3]→ 输出:{"sum": 6, "avg": 2.0, "max": 3}
【边界处理】
- 空列表返回{"sum": 0, "avg": None, "max": None}
- 数组包含非数字元素时,抛出ValueError("Invalid element at index X")
生成结果:更健壮、可直接集成进项目的代码,甚至自带文档字符串。
小结
五要素描述公式并非“魔法咒语”,而是将无形需求结构化的工具。
无论你用的是 GPT-4、Claude 还是本地开源模型,输入质量决定了输出上限。将这一公式固化到日常开发流程中,能让你每次代码生成的“返工率”大幅下降,交付速度成倍提升。