DSPy 是斯坦福 NLP 实验室开源的 LLM 编程框架(MIT 协议,35,700+ Stars),核心理念是 "Programming, not Prompting"——用声明式 Python 代码替代手写 Prompt,通过自动编译器(Optimizer)优化整个 LLM 管线。月下载量 640 万+,433+ 贡献者,9 篇学术论文覆盖 ICLR 2024 至 ICLR 2026,最新 GEPA 优化器获 ICLR 2026 Oral。已被 Shopify(成本降 75x)、Databricks(成本降 90x)、Dropbox(45% NMSE 降低)、AWS、JetBlue、Replit、Sephora、VMware、Moody's 等用于生产。DSPy 的核心价值是把 Prompt 工程从"手艺活"变成"编译科学"——让 AI 系统从脆弱的字符串拼接走向可维护、可优化、可复现的工程实践。
1. 项目/产品概览
| 维度 | 信息 |
|---|---|
| 项目名 | DSPy(Declarative Self-improving Python) |
| 开发者 | 斯坦福 NLP 实验室(Omar Khattab、Christopher Potts、Matei Zaharia 等) |
| 开源协议 | MIT |
| 主要语言 | Python |
| GitHub Stars | 35,718(2026-07-02 查询) |
| Forks | 3,039 |
| Commits | 4,550 |
| 创建时间 | 2023-01-09 |
| 最近更新 | 2026-07-01(活跃程度:高,523+ PR/年) |
| 最新版本 | v3.3.0b1(ReActV2 模块 + 改进的 LM/BaseLM),共 109 个 Release |
| 月下载量 | 640 万+(PyPI) |
| 贡献者 | 433+ |
| Discord | 8,400+ 成员 |
| 学术论文 | 9 篇(ICLR 2024 论文 + ICLR 2026 GEPA Oral),另有 60+ 教程和 Cookbook |
| 官网 | https://dspy.ai |
| 生产用户 | Shopify(成本降 75x)、Databricks(成本降 90x,Genie 平台)、Dropbox(Dash 相关性评分,45% NMSE 降低)、AWS(Nova 模型迁移)、JetBlue(Databricks 上多聊天机器人)、Replit(代码修复)、Sephora、VMware、Moody's、Nous Research(Hermes Agent 自进化) |
| 被依赖 | 1,800+ 下游项目 |
| 可观测性 | 原生 MLflow Tracing(基于 OpenTelemetry)集成 |
| 企业工具 | MLflow Model Serving 部署、PyPI 发布、MCP Server 导出 |
| 相关项目 | dspy-go(Go 语言兼容实现)、GEPA 独立库 |
2. 它主要能做什么
DSPy 的核心创新是把 LLM 调用从"手写字符串"升级为"声明式可编译程序"。这不是又一个 Prompt 模板库——它是一个完整的编译器框架。
2.1 核心三要素
DSPy 通过三个抽象层来构建和优化 LLM 系统:
| 要素 | 说明 | 技术特点 |
|---|---|---|
| Signature(签名) | 用类型化的 Python Field 声明任务的输入和输出,替代手写 Prompt 字符串 | 支持类型约束、描述字段、默认值、Literal 类型、Image 多模态字段 |
| Module(模块) | 控制 LLM 执行策略的可组合组件,同一 Signature 可替换不同 Module | Predict(直接)、ChainOfThought(分步推理)、ReAct(工具+推理循环)、ReActV2、MultiChainComparison、ProgramOfThought、RLM(递归语言模型) |
| Optimizer(优化器) | 自动编译:根据标注数据和评价指标,自动搜索最优 Prompt 和示例 | GEPA(ICLR 2026 Oral,反思式基因进化,比 GRPO 少 35x 轮次)、MIPROv2(联合优化指令和示例)、BootstrapFewShot 等 |
2.2 编译器工作流
传统 Prompt 工程:
写 Prompt 字符串 → 测试 → 效果不好 → 改字符串 → 再测试 → 换模型又得重来
DSPy 工作流:
定义 Signature(声明任务) → 选 Module(执行策略) → Optimizer 编译(自动优化) → 保存为 JSON
关键区别:DSPy 的优化结果是可保存、可复用、可版本控制的 JSON 文件,而不是一段"碰巧好使"的文本。换模型后只需重新编译一次,代码无需改动。
2.3 核心理念:从 Prompt 到 Program
DSPy 将 LLM 应用开发从"汇编语言"(Prompt 字符串)提升到"高级语言"(声明式 Python):
# 传统方式:脆弱的 Prompt 字符串
prompt = """You are a helpful assistant. Given the following email, extract
the event name and date. Return in JSON format. Email: {email}"""
# DSPy 方式:声明式类型化签名
class ExtractEvent(dspy.Signature):
"""Extract event details from an email."""
email: str = dspy.InputField()
event_name: str = dspy.OutputField()
date: str = dspy.OutputField()
extract = dspy.Predict(ExtractEvent)
result = extract(email="Team offsite this Thursday at 2pm")
# Prediction(event_name="Team Offsite", date="Thursday")
当你需要分步推理时,只需替换 Module,代码不改:
extract = dspy.ChainOfThought(ExtractEvent) # 自动加推理步骤
当需要工具调用时:
agent = dspy.ReAct("question -> answer", tools=[search, calc])
2.4 高级能力
- 多模态:
dspy.Image作为字段类型,直接处理图片、图表 - Assertions(断言):运行时约束校验,自动重试纠错
- PythonInterpreter:安全沙箱执行代码,支持数学推理
- RLM(递归语言模型):递归推理模块(2025 年 12 月新论文)
- Fine-tuning 集成:优化器不仅调 Prompt,还能生成微调数据(BetterTogether 论文)
- 异步支持:原生
async执行,线程安全,适合高吞吐场景 - 可观测性:MLflow Tracing(基于 OpenTelemetry),每步调用可追踪
3. 适用场景
| 场景 | 说明 | 典型客户/案例 |
|---|---|---|
| Prompt 优化工程 | 有标注数据,需要系统性地找到最优 Prompt 和示例组合 | 任何已上线但效果不达标的 LLM 应用团队 |
| 分类/提取任务 | 文本分类、实体提取、意图识别、结构化信息抽取 | Shopify(全平台商家元数据提取,成本降 75x) |
| RAG 管线优化 | 优化检索→排序→生成的完整 Pipeline,自动调参 | Dropbox Dash(相关性评分,45% NMSE 降低) |
| 模型迁移/降本 | 从大模型迁移到小模型,通过编译让小模型输出逼近大模型 | AWS Nova 迁移、Databricks(90x 成本降低) |
| Agent 行为优化 | 自动优化 Agent 的推理链、工具调用策略 | Databricks Genie(表格搜索)、Replit(代码修复) |
| 多模态任务 | 图片理解、图表分析(Image 字段类型) | 医疗影像(斯坦福 Prompt Triage,最高 +3400% 提升) |
| 安全检测 | 越狱检测、Prompt 注入检测 | DSPy 安全 Pipeline(含密码学不可篡改状态) |
| 质量评估自动化 | 构建自动评分/评估管线,减少人工标注 | 各企业的 LLM-as-Judge 系统 |
| 研究与实验 | 快速对比不同模型、策略和优化方法的系统性实验 | 学术研究、AB 测试 |
4. 不太适合的场景
| 场景 | 原因 | 替代建议 |
|---|---|---|
| 简单一次性 Prompt | DSPy 的优化编译需要标注数据和评价指标,单次调用过度设计 | 直接写几行 Prompt 或用 API 直接调用 |
| 完全没有标注数据 | Optimizer 必须依赖可计算指标(准确率、F1 等) | 先用人工评估上线,积累标注数据后再引入 DSPy |
| 低代码/拖拽式开发 | DSPy 是纯 Python 代码框架,无 GUI 界面 | Dify / Coze / MaxKB |
| 对指标设计要求高 | 优化效果严重依赖于评估指标的质量,错误指标会导致退化 | 需要有人设计好的 metric 函数 |
| 编译成本敏感 | GEPA/MIPROv2 优化过程需大量 LLM 调用(虽然比 RL 高效 35x) | 小型任务可不编译,直接用签名+模块 |
| 需要极致低延迟 | 编译后的模块仍然调用 LLM,无法降低推理延迟本身 | 模型蒸馏、量化 |
| 纯非 LLM 任务 | DSPy 是 LLM 编程框架,不适合传统 ML/规则系统 | Scikit-learn、XGBoost 等 |
5. 核心能力清单
5.1 Signature(签名)能力
| 能力 | 说明 |
|---|---|
| 内联简写签名 | "question -> answer" 一行定义 |
| 类定义签名 | 继承 dspy.Signature,支持 InputField/OutputField 类型声明 |
| 类型约束 | str、int、float、bool、Literal["a","b"]、list[dict] 等 |
| 多模态字段 | dspy.Image、dspy.Video 作为字段类型 |
| 描述字段 | desc="often between 1 and 5 words" 约束输出格式 |
| 默认值 | dspy.InputField(default="N/A") |
| 文档字符串 | """Task description.""" 作为任务语义说明 |
5.2 Module(模块)矩阵
| Module | 用途 | 适用场景 |
|---|---|---|
dspy.Predict | 直接调用 LLM,不添加额外推理 | 简单分类、提取 |
dspy.ChainOfThought | 要求 LLM 先推理再输出 | 需要逻辑推导的任务 |
dspy.ReAct | 推理+行动循环,支持工具调用 | Agent、多步推理、搜索 |
dspy.ReActV2 | 改进版 ReAct,更好的推理结构(v3.3.0b1 新增) | 复杂 Agent 场景 |
dspy.MultiChainComparison | 多条推理链比较后输出最佳 | 需要 consensus 的任务 |
dspy.ProgramOfThought | 代码生成+执行+推理 | 数学推理、编程任务 |
dspy.RLM | 递归语言模型,多层嵌套推理 | 深度推理、复杂逻辑 |
dspy.Module(自定义) | 组合多个 Signature 和 Module | 复杂多步骤 Pipeline |
5.3 Optimizer(优化器)矩阵
| Optimizer | 原理 | 适用场景 |
|---|---|---|
| GEPA | 基因进化 + Pareto 前沿 + 自然语言反思(ICLR 2026 Oral) | 当前最推荐的生产级优化器,比 GRPO 少 35x 轮次 |
| MIPROv2 | 联合优化指令文本和 few-shot 示例 | 基础优化需求,零样本转少样本 |
| BootstrapFewShot | 自动从训练集选取最佳示例 | 快速构建 few-shot 程序 |
| BootstrapFewShotWithRandomSearch | 随机搜索 + 示例引导 | 探索更大的搜索空间 |
5.4 企业与工程能力
| 能力 | 说明 |
|---|---|
| MLflow Tracing | 基于 OpenTelemetry 的原生可观测性,追踪每个 LLM 调用 |
| MLflow Model Serving | 一键将编译后的程序部署为生产 API |
| 异步执行 | dspy.asyncify() 支持高并发场景 |
| 线程安全 | 多线程环境安全,适合生产服务 |
| 程序保存/加载 | program.save("model.json") / dspy.Module.load("model.json") |
| 多后端 LM 支持 | 通过 dspy.LM() 统一接口,支持 OpenAI、Anthropic、本地模型等 |
| LiteLLM 集成 | 懒加载,按需激活 |
| Go 语言兼容 | dspy-go 社区项目实现 DSPy 模块在 Go 中的兼容运行 |
6. 架构/部署/集成方式
6.1 安装
# 稳定版
pip install -U dspy
# 最新开发版(从 main 分支)
pip install git+https://github.com/stanfordnlp/dspy.git
6.2 LM 配置(统一模型接口)
DSPy 通过 dspy.LM() 统一管理各种 LLM 后端,代码无需因换模型而改动:
# OpenAI 模型
lm = dspy.LM("openai/gpt-4o-mini")
dspy.configure(lm=lm)
# Anthropic 模型
lm = dspy.LM("anthropic/claude-sonnet-4-20250514")
# 本地开源模型(通过 LiteLLM 或直接调用)
lm = dspy.LM("ollama/llama3.1")
# Azure OpenAI
lm = dspy.LM("azure/gpt-4o", api_key="...", api_version="...")
6.3 部署模式
| 模式 | 说明 |
|---|---|
| 本地 OSS | pip install dspy,纯 Python,适合开发实验 |
| MLflow Model Serving | 将编译好的程序打包为 MLflow 模型,部署为 REST API |
| MLflow Tracing | 基于 OpenTelemetry 的调用追踪,适合生产监控 |
| 异步部署 | dspy.asyncify(program) 转为异步版本,支持 asyncio |
| MCP Server | 可将 DSPy 程序导出为 MCP 兼容的服务端点 |
6.4 集成生态
- 可观测性:MLflow Tracing(OpenTelemetry 标准)
- 部署:MLflow Model Serving、PyPI 发布
- 模型提供商:OpenAI、Anthropic、Cohere、Mistral、Google Gemini、AWS Bedrock、Azure OpenAI、Ollama、本地 HuggingFace 模型等
- 向量数据库:与 ColBERTv2 等检索器原生集成,也可通过工具函数接入任意向量库
- 与其他框架:LangChain 有 DSPy 官方集成,DSPy 模块可嵌入 LangChain Pipeline;LlamaIndex 也可与 DSPy 互补使用
- Go 语言:社区 dspy-go 项目提供兼容实现
7. 怎么用
7.1 最小完整示例
import dspy
# 1. 配置语言模型
lm = dspy.LM("openai/gpt-4o-mini")
dspy.configure(lm=lm)
# 2. 定义任务签名(替代手写 Prompt)
class SentimentClassifier(dspy.Signature):
"""Classify the sentiment of a sentence as positive, negative, or neutral."""
sentence: str = dspy.InputField()
sentiment: str = dspy.OutputField(desc="one of: positive, negative, neutral")
# 3. 选择执行策略
classify = dspy.ChainOfThought(SentimentClassifier)
# 4. 直接调用(零样本)
result = classify(sentence="The new feature is amazing and works flawlessly!")
print(result.sentiment) # "positive"
7.2 带优化的完整训练流程
import dspy
# 准备训练数据
trainset = [
dspy.Example(sentence="I love this product!", sentiment="positive").with_inputs("sentence"),
dspy.Example(sentence="This is terrible.", sentiment="negative").with_inputs("sentence"),
dspy.Example(sentence="It's okay, nothing special.", sentiment="neutral").with_inputs("sentence"),
# ... 更多训练样本
]
# 定义评价指标
def sentiment_accuracy(example, pred, trace=None):
return pred.sentiment.lower() == example.sentiment.lower()
# 创建分类器和优化器
classify = dspy.ChainOfThought(SentimentClassifier)
optimizer = dspy.GEPA(metric=sentiment_accuracy, auto="medium")
# 编译优化
optimized_classify = optimizer.compile(classify, trainset=trainset)
# 保存编译结果
optimized_classify.save("sentiment_classifier_v1.json")
# 加载使用
loaded = dspy.ChainOfThought(SentimentClassifier)
loaded.load("sentiment_classifier_v1.json")
result = loaded(sentence="Absolutely fantastic experience!")
print(result.sentiment) # "positive"
7.3 Agent 示例(ReAct + 工具调用)
import dspy
lm = dspy.LM("openai/gpt-4o")
dspy.configure(lm=lm)
# 定义工具(Python 函数即可)
def search(query: str) -> list[str]:
"""Search a knowledge base for relevant documents."""
return knowledge_base.query(query, k=3)
def calculator(expression: str) -> float:
"""Evaluate a mathematical expression."""
return dspy.PythonInterpreter({}).execute(expression)
# 创建 Agent
agent = dspy.ReAct("question -> answer", tools=[search, calculator])
# 使用 Agent
result = agent(question="What is the GDP per capita of France based on 2024 data?")
# Agent 自动推理:需要 GDP 数据和人口数据 → search → 计算除法
print(result.answer) # "$46,029"
7.4 多模态示例
class AnalyzeChart(dspy.Signature):
"""Describe the trend and key data points in a chart."""
chart: dspy.Image = dspy.InputField()
title: str = dspy.OutputField()
trend: str = dspy.OutputField()
data_points: list[dict] = dspy.OutputField()
analyze = dspy.Predict(AnalyzeChart)
result = analyze(chart=dspy.Image("quarterly_revenue.png"))8. 售前可以怎么讲
8.1 一句话定位
"DSPy 是斯坦福推出的 LLM 编译器——把你的 AI 系统从手写 Prompt 的'手工作坊'变成自动优化的'工业生产线',Shopify 用它省了 75 倍成本,Databricks 省了 90 倍。"
8.2 客户痛点 → 解决方案
| 客户痛点 | DSPy 解法 | 量化效果 |
|---|---|---|
| "Prompt 调了两个月,效果还是不稳定" | Optimizer 自动编译,几小时内找到远优于人工的 Prompt | GEPA 典型提升:+14% 准确率、Prompt 缩短 9.2x |
| "换模型就要重写所有 Prompt,太痛苦了" | Signature 与模型解耦,换模型只需重新编译一次,代码不动 | AWS Nova 迁移案例:大模型→小模型无缝切换 |
| "标注了很多数据,不知道怎么用来提升效果" | Optimizer 直接把标注数据作为优化信号 | 200 条样本即可将基线 62% 提升至 89% |
| "大模型太贵,想用小模型但效果差" | 编译优化让小模型的 Prompt 质量逼近或超越大模型零样本 | Databricks:开源模型+GEPA 优化 > Claude Opus 4.1(零样本) |
| "AI 系统是黑盒,出问题不知道哪个环节" | MLflow Tracing 追踪每个 LLM 调用,每步可观测 | 原生 OpenTelemetry 标准,接入现有监控 |
| "团队 3 个人维护 50 个 Prompt,快疯了" | Signature + Module 代码化管理,Prompt 变成版本可控的 JSON | 可 Git 管理、可 Diff 对比、可 CI/CD |
| "Agent 行为不稳定,时而好用时而胡言乱语" | Optimizer 可优化 Agent 的工具调用策略和推理链 | Replit 代码修复、Databricks Genie Agent 均在生产验证 |
8.3 差异化卖点
vs LangChain(生态最广的 LLM 框架):
- DSPy 不做编排和集成,而是专注优化 LLM 调用本身的质量——与 LangChain 互补
- LangChain 已有 DSPy 官方集成,DSPy 模块可作为 LangChain Pipeline 中的一个优化节点
- DSPy 的优化能力是 LangChain 原生不具备的:LangChain 帮你搭 Pipeline,DSPy 帮你调优 Pipeline
- 定位:可以用 LangChain 做框架 + DSPy 做优化层
vs LlamaIndex(RAG 专用框架):
- LlamaIndex 强在数据连接和索引管理,DSPy 强在 LLM 调用编译和优化
- LlamaIndex 适合"帮 LLM 找到正确数据",DSPy 适合"让 LLM 正确处理数据"
- DSPy 的 RAG 优化(检索策略、生成质量)可与 LlamaIndex 的索引层配合使用
vs 手写 Prompt(传统方式):
- 手写 Prompt 是艺术,DSPy 是工程——可复现、可版本化、可自动化
- 手写 Prompt 依赖个人经验,DSPy 依赖数据和指标——更科学
- 手写 Prompt 换模型等于重写,DSPy 重新编译即可
- 研究数据:优化出的 Prompt 在框架外用不一定有效(部分场景有退化),说明 DSPy 是一个整体编程模型,不只是"Prompt 生成器"
vs 国内框架(Dify / Coze / MaxKB 等):
- DSPy 是底层 LLM 编译器,国内框架多偏应用层
- DSPy 更适合有 ML 工程团队、需要精细化控制的中大型团队
- DSPy 的学术背书(斯坦福+ICLR)对技术决策者有强吸引
8.4 客户价值故事线(5 步讲法)
- 切入:"你们上线 LLM 应用后,效果稳定吗?Prompt 调试花了多少时间?换模型是不是又得重来?"
- 共鸣:"手写 Prompt 就像用手工调整汇编代码——换一个 CPU(模型)就得全部重来。大模型本身在进化,但 Prompt 工程的方法还停留在 2023 年。"
- 演示:现场用 5 行 Python 定义一个分类任务 → 换 ChainOfThought 不改代码 → 用 GEPA 自动编译优化 → 展示效果提升 → 保存为 JSON,证明"可复现"
- 进阶:展示生产案例——Shopify 从单次 GPT-5 调用到自托管 Qwen-3-9B 多 Agent 架构,质量 2x 提升、成本从 $500 万/年降到零头
- 重磅:"DSPy 不是又一个 Prompt 模板库——它是 ICLR 2026 Oral 论文的编译器方法论。斯坦福出品、MIT 开源、Shopify/Databricks/Dropbox/AWS 均已上线生产。"
9. 常见客户问题
| 问题 | 回答 |
|---|---|
| DSPy 和 LangChain/LlamaIndex 是什么关系?竞争还是互补? | 互补关系。LangChain 做编排(Chain 和 Agent 的组织)、LlamaIndex 做索引(数据连接和检索),DSPy 做优化(LLM 调用的质量提升)。LangChain 已有 DSPy 官方集成。最佳实践:用 LangChain/LlamaIndex 搭架构,用 DSPy 做优化层。 |
| 一定要有标注数据才能用吗? | 优化(Optimizer)需要可计算的评价指标和标注数据。但如果不需要优化,直接使用 Signature + Module 写声明式程序,也能享受类型安全、模块化和可维护性提升,效果等同于好的零样本 Prompt。 |
| 优化一次要花多少钱? | 取决于训练集大小和优化器。GEPA 比传统方法高效得多(比 GRPO 少 35x 轮次)。典型场景:200 条训练样本、gpt-4o-mini、GEPA auto="medium",编译成本约 $2-5。Databricks 报告 90x 总成本降低(优化成本 vs 长期推理节省)。 |
| 支持私有化部署和国产模型吗? | 支持。DSPy 通过 dspy.LM() 统一接口接入任何模型后端,包括 Ollama 部署的本地模型(如 Qwen、Llama)、vLLM、HuggingFace TGI 等。Shopify 就是用自托管的 Qwen-3-9B 替换了 GPT-5。 |
| 编译结果可以在框架外用吗? | 部分场景可以,但不推荐。有一项研究(University of Minho, 2025)发现优化出的 Prompt 脱离 DSPy 框架后可能退化,因为 DSPy 不只是"生成 Prompt",而是一个完整的执行模型。建议编译后的模块保持在 DSPy 内加载使用。 |
| DSPy 适合多大团队?技术门槛高吗? | 适合有 1-2 名 ML 工程师的中型以上团队。核心概念(Signature → Module → Optimizer)只需半天理解。Python 基础 + LLM 使用经验即可入门。60+ 教程和 Cookbook 覆盖常见场景。 |
| 和 Fine-tuning 相比哪个更好? | 不矛盾。DSPy 的 BetterTogether 论文证明:Prompt 优化 + Fine-tuning 结合效果最优。DSPy 优化器可以生成微调数据,也可仅做 Prompt 优化。对于资源有限的团队,只优化 Prompt(zero/few-shot)即可获得显著收益。 |
| 数据安全怎么保证?排查过程是否会上传数据? | DSPy 本身是本地 Python 库,数据不经过任何远程服务器(除你配置的 LLM API)。Optimizer 编译过程中的 LLM 调用走你配置的模型后端(可以是本地模型)。MLflow Tracing 数据存储在你自己的环境中。 |
| 对中文任务支持如何? | 框架本身与语言无关。中文效果取决于所使用的 LLM。配合 Qwen、DeepSeek 等中文强模型,DSPy 优化同样有效。Signature 的 docstring 和字段描述可用中文编写。 |
10. PoC 建议
推荐 PoC 方向:从手写 Prompt 到 DSPy 编译优化
选一个客户已有标注数据的 LLM 任务(分类/提取/RAG),对比手写 Prompt vs DSPy 编译后的效果。
| 阶段 | 内容 | 时间 | 产出 |
|---|---|---|---|
| 1. 环境搭建 | pip install dspy,配置 LM(客户当前使用的模型) | 0.5 天 | 可运行环境 |
| 2. 任务迁移 | 将现有任务的 Prompt 逻辑转为 DSPy Signature(不改业务逻辑) | 0.5 天 | 可运行的 Signature 版本 |
| 3. 基线测试 | 用 Predict 零样本运行训练集,记录基线准确率 | 0.5 天 | 基线指标 |
| 4. GEPA 优化 | 配置 metric、运行 GEPA 编译(auto="medium") | 0.5 天 | 编译后的优化版本 |
| 5. 效果评估 | 在测试集上对比手写 Prompt vs 编译版本,输出提升报告 | 0.5 天 | 对比评估报告 |
| 6. 模型迁移验证 | 换一个更便宜的模型(如 gpt-4o-mini → gpt-5.4-nano),重新编译对比 | 0.5 天 | 成本优化方案 |
| 7. 生产化演示 | 展示 JSON 保存/加载、MLflow Tracing 可观测性 | 0.5 天 | 可演示的完整系统 |
总体时间:3.5 天
验证指标:
- 编译后准确率 > 手写 Prompt
- 编译后稳定性(多次运行方差) < 手写 Prompt
- 模型迁移后编译版效果接近或超过原模型手写版
- 编译时间 < 30 分钟(200 条样本)
- 编译后可保存为 JSON,加载即用
PoC 成功标准(Go/No-Go):
- ✅ Go:编译版效果至少不差于手写版,且显著降低 prompt 维护工作量
- ✅ Go:模型迁移实验成功,证明换模型只需重新编译
- ❌ No-Go:客户完全无标注数据且不愿投入标注(此时 DSPy 优化器价值无法体现)
11. 风险和注意事项
| 风险 | 级别 | 说明 | 缓解措施 |
|---|---|---|---|
| 指标设计依赖 | 高 | DSPy 优化的效果完全取决于 metric 函数的质量。错误的指标会导致"高分低能"——程序优化了指标但没真正提升任务质量 | PoC 阶段优先验证 metric 设计;用人工评估交叉验证自动指标 |
| 标注数据门槛 | 高 | Optimizer 编译需要标注数据(至少几十到几百条),无标注数据的场景无法发挥核心价值 | 先引导客户建立标注流程(或利用已有的用户反馈数据);不优化也能用 Signature+Module 享受代码化收益 |
| 编译成本 | 中 | GEPA/MIPROv2 编译过程需要多次 LLM 调用,大训练集下可能产生 $10-100 不等的一次性成本 | 用 auto="medium" 控制搜索空间;用小样本试点再扩展;编译是一次性成本,对比长期推理节省 |
| 框架外退化 | 中 | 研究显示 DSPy 优化出的 Prompt 脱离框架使用可能效果下降 | 保持编译结果在 DSPy 内加载使用;不要尝试导出为纯文本 Prompt |
| 学习曲线 | 中 | 从"写 Prompt 字符串"到"声明式编程"的思维转变需要时间,团队需理解 Signature/Module/Optimizer 三层抽象 | 60+ 教程覆盖常见任务;类似 PyTorch 的学习路径——先用 Predict 跑通,再逐步深入优化 |
| 研究属性 | 低-中 | DSPy 起源于学术界,部分模块(如 RLM)标注为实验性,API 在版本间可能有 breaking change | 使用稳定版本(v3.x);关注 Release Notes;生产关键路径用 Predict/ChainOfThought/ReAct 等成熟模块 |
| 中文生态较弱 | 中 | 社区和文档以英文为主,中文教程和案例较少 | 使用中文 LLM 配合 DSPy 框架;可参考英文文档+翻译工具 |
| 与 LangChain 等框架的集成深度 | 低 | 虽然有官方集成,但两个框架的设计哲学不同,混用时需注意概念映射 | 明确分工:编排交给 LangChain,优化交给 DSPy;从独立使用 DSPy 开始,需要时再集成 |
| Lock-in 风险 | 低 | MIT 协议,纯 Python,与任何特定模型无关 | 编译结果以 JSON 保存,可审计;Signature 是标准 Python 类;Fork 友好 |
12. 我的售前判断
推荐度:强烈推荐(特别适合已有 LLM 应用但效果不稳定、或需要大规模降本的客户,尤其是具备 ML 工程能力的中大型企业)
理由:
- 方法论领先:"Programming, not Prompting"不是营销口号——它是一种被 ICLR 2024 和 ICLR 2026(Oral)双顶会验证的编译器范式。在 AI 基础设施越来越成熟的时代,Prompt 优化的手工作坊模式终将被淘汰,DSPy 处于这个范式转换的最前沿。
- 生产案例扎实:Shopify(成本降 75x,从 GPT-5 迁移到自托管 Qwen-3-9B)、Databricks(成本降 90x,开源模型+优化 > Claude Opus 4.1)、Dropbox(45% NMSE 降低)——这些不是 PoC 实验,是千万级请求的生产系统。每个案例都有公开的技术博客/视频详解。
- ROI 叙事清晰:一次性的编译成本($2-500)换长期的推理成本节省($50 万/年 → 零头)。这在任何 CFO 面前都是有力的商业论证。
- 工程友好:MIT 协议开源、JSON 保存/加载、MLflow Tracing(OpenTelemetry 标准)、异步支持、线程安全、MCP Server 导出——生产化所需的基础设施都已就绪。
- 学术背书 + 商业验证双保险:斯坦福团队持续产出:2023 DSPy→2024 MIPROv2/BetterTogether→2025 GEPA(ICLR 2026 Oral)/RLM。每月 523+ PR、109 个 Release 证明社区活跃度极高。
推荐客户画像:
- 已上线 LLM 应用,但 Prompt 维护成本高、效果不稳定
- 有 ML/工程团队(1-2 人即可),有 Python 能力
- 想要从大模型迁移到小模型以降本
- 有标注数据(或愿意投入标注)的 RAG/分类/提取/Agent 场景
- 重视可观测性和工程化的中大型企业
- 使用多个模型提供商,需要统一 LLM 调用层
不推荐的情况:
- 完全没有标注数据且短期内不打算标注(Optimizer 价值无法体现)
- 需要低代码/无代码平台(推荐 Dify/Coze/MaxKB)
- 团队完全没有 Python 能力(推荐 API 直调或 SaaS 方案)
- 只有 1-2 个简单 Prompt、不涉及优化(直接手写即可)
- 对成本极敏感、无法承担编译期间的 LLM 调用费用
13. 参考资料
- GitHub 仓库:https://github.com/stanfordnlp/dspy
- 官方网站:https://dspy.ai
- 安装指南:https://dspy.ai/getting-started/installation/
- 入门教程:https://dspy.ai/getting-started/program-dont-prompt/
- 生产部署:https://dspy.ai/production/
- 使用案例汇总:https://dspy.ai/community/use-cases/
- DSPy 框架论文(ICLR 2024):https://arxiv.org/abs/2310.03714
- GEPA 论文(ICLR 2026 Oral):https://arxiv.org/abs/2507.19457
- MIPROv2 论文:https://arxiv.org/abs/2406.11695
- BetterTogether(Fine-tuning + Prompt Opt):https://arxiv.org/abs/2407.10930
- RLM(递归语言模型):https://arxiv.org/abs/2512.24601
- DSP 论文(框架起源):https://arxiv.org/abs/2212.14024
- Shopify 生产案例:https://www.youtube.com/watch?v=bxToahwOVpY
- Dropbox Dash 案例:https://dropbox.tech/machine-learning/optimizing-dropbox-dash-relevance-judge-with-dspy
- AWS Nova 迁移案例:https://aws.amazon.com/blogs/machine-learning/improve-amazon-nova-migration-performance-with-data-aware-prompt-optimization/
- Databricks 90x 成本降低:https://www.databricks.com/blog/building-state-art-enterprise-agents-90x-cheaper-automated-prompt-optimization
- Databricks Genie:https://www.databricks.com/blog/pushing-frontier-data-agents-genie
- JetBlue 案例:https://www.databricks.com/blog/optimizing-databricks-llm-pipelines-dspy
- Replit 代码修复:https://blog.replit.com/code-repair
- MLflow 集成:https://mlflow.org/docs/latest/llms/dspy/index.html
- 可观测性教程:https://dspy.ai/tutorials/observability/
- DeepWiki DSPy:https://deepwiki.com/stanfordnlp/dspy
- Discord 社区:https://discord.gg/XCGy2WDCQB
- PyPI:https://pypi.org/project/dspy/
- dspy-go(Go 语言实现):https://github.com/darwishdev/dspy-go
- GEPA 独立库:https://github.com/gepa-ai/gepa
- GEPA 使用案例集:https://gepa-ai.github.io/gepa/guides/use-cases/
- 医疗影像 DSPy 应用:https://arxiv.org/abs/2511.11898
- 多场景 DSPy 优化研究:https://www.alphaxiv.co/overview/2507.03620
分析日期:2026-07-02 | 数据时效:GitHub 实时获取,官方网站内容截至访问日期,v3.3.0b1