30 秒快速回答
DSPy 是斯坦福 NLP 团队开源的 Python 大模型编程框架,核心理念只有一句话:Program, don’t prompt(编程,而非提示词)。它用类型化「签名」声明任务、用「模块」组合推理策略、用「优化器」自动调优提示词——你不再手写 prompt,而是像写普通 Python 代码一样构建 AI 系统。
核心价值一句话:把「靠感觉调提示词」变成「给机器定指标,让它自动优化」,AI 应用质量可复现、可维护、可评测。
一、为什么要用 DSPy?手写 Prompt 的三大痛点
用过 GPT 系列或 Claude 的开发者都有体会:手写提示词是一条「玄学调参」之路。
| 痛点 | 表现 | DSPy 的解法 |
|---|---|---|
| 脆弱 | 换个模型、换版本文案就失效 | 签名与模型解耦,换 LM 只改一行 |
| 不可评测 | 改完 prompt 不知道变好还是变坏 | 编译时按自定义指标自动打分 |
| 不可组合 | 复杂任务全靠一段超长 prompt 硬塞 | 模块化组合,管道清晰可复用 |
DSPy 把 prompt 从「写给模型看的自然语言」降级为「编译期产物」:你声明任务、提供样例、定义评分函数,优化器自动搜索更好的指令与示例。截至 2026 年,DSPy 已获得 35k+ GitHub Stars、每月 750 万+ 次下载,被 Compose 等多家公司用于生产环境。
二、三大核心抽象:Signature / Module / Optimizer
DSPy 的全部设计围绕三个概念展开:
1. Signature(签名):用类型声明任务
签名是 DSPy 与手写 prompt 的最大区别——用结构化字段描述输入输出,替代自然语言指令:
import dspy
class ExtractEvent(dspy.Signature):
"""从邮件中提取活动信息。"""
email: str = dspy.InputField()
event_name: str = dspy.OutputField()
date: str = dspy.OutputField()
lm = dspy.LM("openai/gpt-5.4-nano") # 换模型只改这一行
dspy.configure(lm=lm)
result = dspy.Predict(ExtractEvent)(email=inbox_message)
print(result.event_name, result.date)
2. Module(模块):同一任务,不同策略
模块决定签名如何执行,且可以自由替换而不改任务定义:
| 模块 | 策略 | 适用场景 |
|---|---|---|
Predict |
直接完成 | 简单分类、抽取 |
ChainOfThought |
逐步推理 | 数学、逻辑、复杂问答 |
ReAct |
推理 + 工具循环(2026 新版 ReActV2 更强) | 需要检索、调 API 的 Agent |
Retrieve |
向量检索 | RAG 管道 |
3. Optimizer(优化器):自动调优的核心
这是 DSPy 的杀手锏:你提供小样本数据集与评分函数,优化器自动生成并筛选更优的提示词或示例,直到指标收敛:
tp = dspy.GEPA(metric=semantic_f1, auto="medium")
opt = tp.compile(rag_program, trainset=trainset)
print(opt.save("rag.v2.json")) # 评测:F1 从 0.41 提升到 0.63
GEPA(2025 年推出的新一代优化器)结合了语言模型变异与进化搜索,还支持自动「指令 + 示例」联合优化,效果通常显著优于人工调 prompt。
三、与 LangChain / 手写 Prompt 的定位区别
很多人会问:DSPy 和 LangChain 冲突吗?不冲突,二者是不同层次。
| 维度 | 手写 Prompt | LangChain/LangGraph | DSPy |
|---|---|---|---|
| 任务描述 | 自然语言 | 自然语言 + 代码 | 类型化签名 |
| 优化方式 | 人工试错 | 人工试错 | 自动编译优化 |
| 可评测性 | 弱 | 弱 | 强(自带指标闭环) |
| 擅长 | 快速原型 | 流程编排 | 质量与稳定性 |
实践中常见搭配:LangGraph 管 Agent 编排,DSPy 管单个模块的提示词质量。例如在 RAG 场景,用 DSPy 封装「查询改写 + 检索 + 生成」管道,把整体质量当作优化目标编译,比手调每个环节的 prompt 高效得多。
四、总结要点
- DSPy 是「编程而非提示词」的声明式 LLM 框架,由斯坦福 NLP 开源、生产级成熟;
- 三大抽象:Signature 声明任务、Module 控制策略、Optimizer 自动调优;
- 换模型只需改一行,提示词与示例由编译器自动生成,质量可复现;
- 与 LangGraph 等编排框架互补,特别适合 RAG、Agent 等对质量敏感的复杂管道;
- 上手建议:先跑通一个
Predict签名,再引入GEPA优化器对比指标提升。
延伸阅读建议:
- 想了解 RAG 管道:《什么是 RAG?一文搞懂检索增强生成》
- 想了解 Agent 编排框架:《怎么用 LangGraph?Agent 开发框架完全指南》
- 想了解提示词工程的边界:《怎么写好 AI 提示词?从入门到进阶完整指南》