Prompt 基础
什么是 Prompt
Prompt 就是你发给 LLM 的输入文本。听起来很简单——打几个字就行了?
没错,但怎么打决定了你能从模型中获得多少价值。同样的模型,Prompt 写得好和写得差,输出质量可能天差地别。
这就像搜索引擎。同样是 Google,有人搜出了精确的答案,有人翻了三页都没找到想要的内容。差别在于搜索词的质量。
好 Prompt 的四个要素
一个有效的 Prompt 通常包含这四个部分(不一定每个都需要):
1. 指令(Instruction)
你想让模型做什么。越具体越好。
❌ "帮我改改这段代码"
✅ "检查这段 Python 代码中的 bug,找出可能导致空指针异常的地方,并给出修复方案"
2. 上下文(Context)
模型需要知道的背景信息。
❌ "帮我写个欢迎邮件"
✅ "我们是一家 B2B SaaS 公司,新用户刚完成注册。帮我写一封欢迎邮件,语气专业但友好,重点介绍三个核心功能"
3. 输入数据(Input)
需要模型处理的具体内容。
请将以下 JSON 转换为 TypeScript 接口定义:
{"name": "John", "age": 30, "hobbies": ["reading", "coding"]}
4. 输出格式(Output Format)
你期望的输出格式和结构。
❌ "分析这个日志文件"
✅ "分析这个日志文件,以如下格式输出:
- 错误数量:
- 最常见的错误类型:
- 建议的修复优先级(高/中/低):"
常见的 Prompt 错误
错误 1:指令太模糊
❌ "帮我处理一下这个数据"
模型不知道"处理"是什么意思——清洗?分析?转换?可视化?
✅ "将这份 CSV 数据按日期分组,计算每组的平均值,输出为 Markdown 表格"
错误 2:缺少必要上下文
❌ "为什么这个测试失败了?"
模型看不到你的代码、测试输出、环境配置。
✅ "以下是我的 pytest 测试代码和失败输出。测试环境是 Python 3.11 + pytest 7.4。
请分析失败原因并给出修复方案。
[代码和输出粘贴在这里]"
错误 3:一次要求太多
❌ "帮我设计一个完整的电商系统,包括数据库设计、API 设计、前端架构和部署方案"
一个 Prompt 塞太多任务,每个都做不深。不如拆成多个对话,逐个深入。
错误 4:没有指定输出格式
当你需要结构化输出时,不指定格式会让模型自由发挥——每次格式都可能不同,难以程序化处理。
Prompt 是一种编程
对开发者来说,一个有用的思维模型:Prompt 就是用自然语言写的"程序"。
- 指令 = 函数名和注释
- 上下文 = 参数和配置
- 输入 = 函数参数
- 输出格式 = 返回值类型
和写代码一样,Prompt 需要迭代。第一版很少是最好的。观察输出,调整 Prompt,再试一次——这个循环和调试代码完全一样。
"垃圾进,垃圾出"
LLM 版的 GIGO(Garbage In, Garbage Out):
- 模糊的指令 → 模糊的回答
- 没有上下文 → 通用的(可能不相关的)回答
- 矛盾的要求 → 混乱的输出
- 清晰的指令 + 充足的上下文 + 明确的格式 → 高质量的输出
模型的输出质量上限由你的 Prompt 质量决定。
温度与采样
在写 Prompt 之外,还有一个影响输出的关键参数:温度(temperature)。
- temperature = 0:每次选概率最高的 token,输出接近确定性。适合代码生成、数据提取等需要精确的任务。
- temperature = 0.7:有一定随机性,输出更多样。适合创意写作、头脑风暴。
- temperature = 1.0+:高随机性,输出可能变得不连贯。很少使用。
经验法则:需要准确性的任务用低温度,需要创造性的任务用高温度。
要点总结
- 好的 Prompt = 明确的指令 + 充足的上下文 + 清晰的输出格式。 这三个要素决定了输出质量。
- 像写代码一样迭代 Prompt。 第一版不够好很正常,观察输出、调整、重试。
- 具体优于模糊。 "分析 bug 原因并给出修复代码"比"帮我看看这个"好得多。
- 温度控制输出的确定性。 精确任务用 0,创意任务用 0.7。