DSPy 是一个 Python 框架,它把"手写提示词(Prompt)"换成"用标注数据和评分指标把提示词编译出来"。它由斯坦福的研究团队提出,代表了一类叫自动提示优化(Automatic Prompt Optimization)的思路。
它解决什么问题
传统做法是这样的:你写一段提示词,跑几条样例,觉得不行就改改字、加一句"请一步步思考"、塞两个示例,再跑一遍。改到满意为止。这个过程全靠手感和反复试错,换个人接手、或者换一个模型,基本要重来一遍。
DSPy 的想法是:别手写,让程序自己去搜。
"编译"是怎么发生的
大致四步:
1. 签名(Signature):声明这一步吃什么、吐什么,比如 question -> answer。
2. 模块(Module):用 Predict、ChainOfThought 这类积木搭出流程,可以串联、分支、调用工具。
3. 指标(Metric):写一个打分函数,输入模型输出,返回分数。可以是精确匹配,也可以让另一个模型当裁判。
4. 优化器(Optimizer):拿一小批标注数据反复跑,自动试出每个模块最合适的提示词——既包括指令怎么措辞,也包括该放哪些少样本示例(few-shot examples)。
打个比方。手写提示词像老师傅凭手感放盐,放多少全看经验。DSPy 像把配方交给一台自动调味机:你告诉它这道菜要什么(签名)、给它几盘标好"合格/不合格"的样品(标注数据)、定一条评分标准(指标),它自己反复试配比,最后交出分数最高的一套。
和相邻概念的区别
| 做法 | 改的是什么 | 数据需求 | 换模型后 |
|---|---|---|---|
| 手写提示词 | 人的措辞 | 几乎没有 | 大概率重写 |
| DSPy 自动优化 | 提示词与示例 | 几十条标注 | 重新编译一次 |
| 微调(AI 词典:Fine-tuning">Fine-tuning) | 模型权重 | 通常需要大量标注 | 重新训练 |
还有一点容易混淆:DSPy 不是"连接模型"的编排框架,它管的是"把提示词调到最好",编排只是顺带。而 APE、OPRO 这类方法更多是在搜索单条提示词,DSPy 把范围扩大到了整个程序。
对谁有用
对从业者:提示词从"手工艺品"变成可测试、可回归的工程产物。以前改提示词靠争论,现在可以拿指标说话。它最适合流程稳定、好坏判据明确、评测数据能攒起来的任务,比如分类、信息抽取、结构化问答。反过来,开放式创意写作这种没法打分的任务,优化器也无从下手。
对普通职场人:这里透出的信号是——"会写提示词"的价值正在从"会写"转向"会定标准"。你能不能讲清楚什么叫好、能不能攒出几十条带答案的样例,比会不会加一句"请一步步思考"更关键。
最后提醒:不同框架、不同优化器的行为和参数差异不小,实际选型请以官方文档为准。
