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+:高随机性,输出可能变得不连贯。很少使用。

经验法则:需要准确性的任务用低温度,需要创造性的任务用高温度。

要点总结

  1. 好的 Prompt = 明确的指令 + 充足的上下文 + 清晰的输出格式。 这三个要素决定了输出质量。
  2. 像写代码一样迭代 Prompt。 第一版不够好很正常,观察输出、调整、重试。
  3. 具体优于模糊。 "分析 bug 原因并给出修复代码"比"帮我看看这个"好得多。
  4. 温度控制输出的确定性。 精确任务用 0,创意任务用 0.7。