核心问题

“我应该用 Prompt 工程还是微调?“答案是:取决于瓶颈在哪

  • 模型理解能力不足 → 微调
  • 上下文信息不足 → RAG / Prompt 工程
  • 输出格式不稳定 → Prompt 工程(或少量微调)
  • 领域知识缺失 → RAG(而非微调)

Prompt 工程的能力边界

能做什么

# 1. 角色设定和行为控制
SYSTEM_PROMPT = "你是专业法律顾问,仅基于提供的条文回答"

# 2. 输出格式控制
FORMAT_PROMPT = '输出JSON: {"risk_level":"high|medium|low", "factors":[]}'

# 3. 少样本学习
FEW_SHOT = "示例:\n输入:订单没到\n输出:{\"intent\":\"logistics\"}\n现在处理:{input}"

# 4. 思维链推理
COT = "请一步步思考:首先分析...然后...最后..."

天花板

# 解决不了的问题:
# 1. 风格深度定制 — 需要大量token示例,成本高且不稳定
style_prompt = "请模仿以下风格(附10000字示例)..."  # token成本爆炸

# 2. 领域术语理解 — Prompt过长,模型注意力分散
medical_prompt = "医学缩写对照表(500个)..."  # 效果差

# 3. 复杂工具调用模式 — 规则太多时遵循率下降
tool_prompt = "调用工具的50条注意事项..."  # 遵循率低

微调的适用场景

场景一:风格和格式定制

# 微调数据:客服风格定制
training_data = [
    {"messages": [
        {"role": "system", "content": "你是XX品牌客服"},
        {"role": "user", "content": "你们的东西太贵了"},
        {"role": "assistant", "content": "理解您的感受~我们坚持品质路线,现有新人9折优惠😊"},
    ]},
    # 500-1000条这样的数据
]
# 微调后:无需长Prompt,模型自然使用品牌语气

场景二:降低推理成本

# 微调前:GPT-4o + 2000 token system prompt → $0.017/请求
# 微调后:GPT-4o-mini fine-tuned → $0.0015/请求
# 成本降低91%,回本周期约0.5个月

# 蒸馏:用GPT-4生成数据训练小模型
distillation_data = []
for input_text in training_inputs:
    gpt4_output = await gpt4.generate(input_text, system_prompt=LONG_PROMPT)
    distillation_data.append({"input": input_text, "output": gpt4_output})

成本对比

一次性成本

项目Prompt 工程微调
数据标注$0$500-$5000
开发时间数小时-数天1-2 周
训练计算$0$10-$100(LoRA)

运行时成本

每天10000次请求对比:Prompt工程(GPT-4o+2000token)月$5100 vs 微调(GPT-4o-mini-ft)月$472,回本约13天。

效果对比

维度Prompt 工程微调
格式遵循好(95%)极好(99%+)
风格一致性中等
推理能力可能下降
新知识更新即时需重新训练
可调试性
过拟合风险

决策矩阵

                    数据量是否充足(>500条)?
                    Yes                  No
              ┌─────────┐          ┌──────────┐
              │格式/风格 │          │ Prompt   │
              │定制需求? │          │ 工程+RAG │
              └────┬────┘          └──────────┘
              Yes  │  No
         ┌────────┴────────┐
         │                 │
   ┌─────▼─────┐    ┌──────▼──────┐
   │   微调     │    │ Prompt 工程 │
   │ (LoRA优先) │    │  优化即可    │
   └───────────┘    └─────────────┘
情况推荐原因
需要 new knowledgeRAG微调不适合注入新知识
需要特定输出格式Prompt→微调先Prompt不满足再微调
需要特定写作风格微调Prompt示例成本高
需要降低推理成本微调(蒸馏)小模型替代大模型
需要快速迭代Prompt工程改Prompt立即生效
需要工具调用能力微调工具模式适合微调

混合方案

方案一:微调基础能力 + Prompt 定制

# 微调处理不变的部分(语气、格式、工具调用)
# Prompt 处理变化的部分(促销信息、用户信息)
SYSTEM_PROMPT = """你是{brand}客服。
当前时间:{current_time}
今日促销:{today_promotion}
注意:促销信息每天变化,以本Prompt为准。"""

方案二:微调小模型 + 大模型兜底

class HybridRouter:
    async def run(self, input_text):
        result = await self.ft_model.generate(input_text)
        if self._estimate_confidence(result) >= 0.85:
            return result
        return await self.fb_model.generate(input_text, system_prompt=DETAILED_PROMPT)

方案三:微调 Embedding + Prompt 生成

微调Embedding模型提升检索质量(比微调LLM便宜得多),生成端用Prompt工程。

实际案例

某法律咨询助手迭代:V1(GPT-4+长Prompt)准确率78%月$3000 → V2(RAG+Prompt)87%$2500 → V3(RAG+微调mini)91%$400 → V4(RAG+微调+大模型兜底)94%$800。

总结

Prompt 工程是首选——快速、灵活、可调试。遇到明确瓶颈(格式不稳定、风格不一致、成本过高)时再微调。混合方案最优:RAG处理知识、微调处理风格、大模型处理长尾。

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。