146、Prompt 优化迭代:用 DSPy 思路让 LLM 自己调自己的提示词
从一次“提示词调吐了”的深夜说起
上周三凌晨两点,我盯着屏幕上那个“情感分析准确率死活卡在82%”的折线图,咖啡已经凉透了。手写了二十几个版本的 prompt,从“请分析以下文本的情感”到“你是一个拥有十年经验的心理学家,请用五维情感模型分析”,准确率纹丝不动。那一刻我突然意识到——我他妈在跟一个黑盒玩猜谜游戏,而 LLM 自己可能根本不知道我想要什么。
这种“人肉调参”的痛,做过 NLP 工程的都懂。后来我翻到了斯坦福的 DSPy 论文,核心思路其实就一句话:让 LLM 自己写 prompt,自己验证效果,自己迭代。别笑,这玩意儿真能跑通。
传统 prompt 优化的死胡同
先说说为什么手动调 prompt 是条死路。你写“请用 JSON 格式输出”,LLM 可能给你带个 markdown 代码块;你写“不要解释”,它偏要加一句“当然可以”。更恶心的是,同一个 prompt 在 GPT-4 上跑得好好的,换到 Claude 或者本地部署的 LLaMA 上直接崩。
我踩过最大的坑是给一个分类任务写 prompt,加了十几条“必须遵守”的规则,结果模型开始疯狂输出“根据规则1.3.2,我认为…”,准确率反而掉了5个点。规则越多,模型越怂,这是血泪教训。