Maxime Rivest 分享了他使用 DSPy 一年的经验——从最初觉得"太魔法、太简单",到用它构建处理全球几乎所有科学出版物的流水线(每周约 1 亿次运行,成本从 50)。
五大核心组件
1. Optimizers(优化器)
自动更改 prompt 和/或模型权重,以在评估上提升性能。
2. Signatures(签名)
高层指定输入和输出名称及类型的方式,细节留给自动优化。
3. LM(语言模型接口)
DSPy 与外部世界的连接——token 生成的地方。
4. Modules(模块)
编程、推理策略和多个 LLM 调用可以组合成计算图,作为一个系统协同工作(复合 AI 系统)。
5. Adapters(适配器)
最被低估的组件。任务无关的、与类型和结构相关的推理策略所在。将任务输入和优化后的指令渲染成实际文本 prompt 和请求参数。
用通用术语重新命名
- Evals(评估与改进)
- Interface(在最高层定义任务、输入和输出)
- Inference(让流水线在不同 provider 和模型上运行)
- Call Graph(任务分解、AI 与代码/传统 ML 的分工、推理、工具使用)
- Rendering(如何渲染、格式化和解析领域特定的 prompt 和输入/输出类型到实际完整请求)
渲染:最不明显但最关键的部分
渲染决定如何向模型展示指令和输入,以及如何指导模型渲染其输出以便解析。
结构化输出选项:XML、JSON、原生结构化输出、自定义分隔符、BAML、CSV 等。
推理渲染:<thinking></thinking> 标签、#REASONING: 注释、贯穿输出的思考标签等。
PDF 渲染:传统 OCR + 图像、仅文本、仅图像、二进制等。
图像渲染:SVG、描述+接收、降低分辨率、拼接等。
三大 provider 最近的最大进步——推理、结构化输出、工具调用——本质上都是渲染问题。
调用图:分解任务
将任务分解为多个 LLM 子调用,每个委托给适当的模型,是改变 AI 流水线成本、性能和延迟特征的最有效方式之一。
- 多次调用同一模型
- 使用专用模型(guard)
- 组合最佳模型响应
- 多语言/程序多数投票
- "专业"模型角色
- 混合 AI 调用与代码和传统编程
评估:没有它一切无意义
- 早期不要构建大而美的 evals
- 从 0 到几个工作示例时,手动评估:交互、查看数据和 traces
- 然后制作小数据集——足以运行自动 prompt 优化
- 在生产中运行,收集输入输出获得真实数据分布
核心 takeaway
AI 工程有五个重要组件。对于任何给定任务,其中一部分更值得专注,但它们始终都在——你可能只是将决策委托给他人和 circumstances。
DSPy 让你可以在任何一层"极客",而不必担心其他层,并让我们共享最佳实践和通用解决方案。