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 提示词?从入门到进阶完整指南》