Maxime Rivest 分享了他使用 DSPy 一年后的核心领悟。
背景
Rivest 一年前第一次尝试 DSPy,"感觉像魔法"。但在此之前,他"花了一年时间想要深入了解它",才终于在一个早上坐下来实际运行示例代码。
这个细节本身就值得注意:AI 工具的真正门槛往往不是技术复杂度,而是克服"看起来太复杂"的心理阻力。
DSPy 的核心洞察
1. 从"提示词工程"到"系统优化"
传统 LLM 开发:
- 写提示词 → 测试 → 调整提示词 → 再测试
- 每次模型更新,提示词可能失效
- 难以评估"这个提示词比那个好多少"
DSPy 的方法:
- 定义模块(如检索、生成、验证)
- 定义评估指标
- 让优化器自动找到最佳参数组合
- 提示词是编译器的输出,而非人的输入
2. 可评估性是一切的基础
Rivest 强调:没有评估,就没有优化。
DSPy 强制你定义:
- 什么是"好"的输出?
- 如何量化测量?
- 在什么数据集上验证?
这看起来是额外工作,但它是从"祈祷模型表现好"到"系统性地改进"的关键转变。
3. 提示词是编译产物,不是手工艺术品
在 DSPy 中,你定义的是程序结构和优化目标,而非具体的提示词文本。优化器根据你的定义和评估数据,自动生成或调整提示词。
这意味着:
- 换模型时,重新编译即可
- 新增数据时,自动优化
- 提示词不再是一堆脆弱的"魔法咒语"
对 AI 工程实践的影响
模块化的思维
DSPy 鼓励将复杂任务分解为可组合的模块:
- 检索模块:从知识库中找到相关信息
- 生成模块:基于检索结果生成回答
- 验证模块:检查输出的质量和一致性
每个模块可以独立优化,也可以组合成更复杂的系统。
数据驱动的改进
传统方式:"我觉得这个提示词更好" DSPy 方式:"在评估集上,这个配置得分从 0.72 提升到 0.85"
模型无关性
因为提示词是编译产物,切换底层模型(GPT-4 → Claude → 本地模型)不需要重写提示词,只需重新编译。
Rivest 的实践建议
- 从小处开始:不要试图一次性构建完整系统,先定义一个模块和它的评估指标
- 投资评估基础设施:好的评估比好的提示词更重要
- 接受迭代:第一次编译的结果可能不够好,但你有明确的路径改进
- 关注结构而非文本:思考"系统应该做什么",而非"模型应该看到什么词"
核心结论
DSPy 教给 Rivest 的最重要一课:
AI 工程不是写更好的提示词,而是设计可优化、可评估、可迭代的系统。
当你把提示词从"手工艺术品"转变为"编译产物"时,你就从"祈祷模型表现好"升级到了"系统性地工程化 AI 行为"。