← AI START
LESSON · 04

好的
Prompt
= 半个产品

Prompt 工程:从零样本到思维链,把语言变成控制权。

凭什么
它听你的?

LLM 没有程序逻辑,你说的方式就是它的行为。

好 Prompt 的四要素

  • 角色 — 你是谁?给模型一个身份
  • 任务 — 具体做什么?动词驱动
  • 上下文 — 背景 / 约束 / 受众
  • 输出格式 — JSON / 列表 / 长度限制
  • 四要素不必全有,但缺一个往往差一截

Zero-shot

你是一位代码审查专家。
审查下面这段 Python 代码,
列出所有安全隐患,每条一行。

```python
import os
query = input()
os.system("ls " + query)
```

零样本:直接告诉模型做什么,不给例子

Few-shot · 少样本

  • 原理:用例子激活模型的"上下文学习"能力
  • 用途:统一输出格式、风格迁移、特殊判断逻辑
  • 数量:1~5 条通常够用,超过 10 条边际效益递减
  • 质量 > 数量:坏例子会误导模型
  • → 当 Zero-shot 结果不稳定时,先试 Few-shot

"Let's think
step by step."

Wei et al., 2022 — Chain-of-Thought Prompting

CoT · 思维链

  • 为什么有效:把"答案"变成"过程 + 答案",减少捷径
  • Zero-shot CoT:直接加 "Let's think step by step"
  • Manual CoT:Few-shot 里的例子包含推理步骤
  • 适用场景:数学 / 逻辑 / 多步推理
  • → 复杂任务首选 CoT,简单任务没必要

ReAct · 推理 + 行动

  • Thought 模型推理当前状态
  • Action 调用工具 / 搜索 / 执行
  • Observation 获得结果,继续推理
  • 循环直到得出最终答案
  • → ReAct 是 Agent 的思维骨架
N×
采样 → 投票 → 最优答案

Self-Consistency · 自洽采样

  • 方法:同一问题跑 N 次 CoT,取多数答案
  • 代价:N 倍 token 消耗
  • 收益:复杂推理准确率显著提升
  • 适合离线批量处理,不适合实时对话

结构化输出

// System prompt 里声明:
"用 JSON 返回,格式如下:
{
  \"severity\": \"high|medium|low\",
  \"issues\": [\"...\"],
  \"suggestion\": \"...\"
}"

// 或使用 Tool Use / Function Calling
// 直接绑定 JSON Schema

System · User · Assistant

System

  • 角色 / 规则 / 人格
  • 全局约束
  • 不被 User 覆盖
+

User

  • 当前请求
  • 上下文信息
  • 示例 / 数据

Assistant 是模型历史回复,Multi-turn 对话的记忆载体

Prompt 注入攻击

  • 直接注入:用户输入 "Ignore previous instructions..."
  • 间接注入:从外部数据(网页/文档)混入恶意指令
  • 越狱:角色扮演 / 编码绕过 / 语言混淆
  • 防御 系统提示明确边界,输入/输出过滤,最小权限原则
  • → 把 Prompt 当代码,安全同样重要

可维护的 Prompt 模板

SYSTEM = """
你是一位资深 {role}。
目标受众:{audience}
输出语言:中文
输出格式:{format}
约束:{constraints}
"""

def build_prompt(role, audience, format, constraints):
    return SYSTEM.format(
        role=role,
        audience=audience,
        format=format,
        constraints=constraints
    )

怎么知道 Prompt 真的好

  • 建测试集:用真实样本 + 标注答案
  • 自动评分:LLM-as-judge(用另一个模型打分)
  • A/B 对比:两版 Prompt 跑同一批样本
  • 工具:Promptfoo / LangSmith / PromptLayer
  • → 没有评测的 Prompt 优化是玄学

Promptfoo 评测实战

# promptfoo.yaml - 3分钟跑一次 Prompt 评测
# npm install -g promptfoo

prompts:
  - "你是代码审查员。审查以下代码,列出问题:\n{{code}}"
  - "作为资深工程师,找出代码中的 3 个最严重问题:\n{{code}}"

providers:
  - openai:gpt-4o-mini

tests:
  - vars:
      code: "def add(a, b): return a + b  # no type hints"
    assert:
      - type: contains
        value: "type"
npx promptfoo eval && npx promptfoo view

什么情况选什么 Prompt 技术

  • 简单分类 / 抽取 → Zero-shot + JSON Schema
  • 需要推理 / 数学 → CoT(或直接用 o1 / R1)
  • 格式要稳定 → Few-shot(2-3 个示例)
  • 需要外部信息 → ReAct + Tool Use
  • 要确保准确 → Self-consistency(多次采样)
  • → 简单的先试简单的,别上来就上全家桶

本课收获

四要素 Zero/Few-shot CoT 思维链 ReAct 结构化输出 注入防御

下一课 · RAG 检索增强:把外部知识塞进 LLM 的标准方案。