

DSPy 是一个由 Stanford NLP 开发的框架,它将提示工程视为编译器问题:您只需编写类型化签名和模块,定义评估指标,优化器就会自动搜索最佳提示。免费开源(Apache 2.0),每月 PyPI 下载量超过 500 万次。
DSPy 是一个用于对语言模型进行编程而非手动编写提示词的 Python 框架。它由 Omar Khattab 在 Stanford NLP 开发,并以 Apache 2.0 协议开源。该框架源于 ICLR 2024 发表的研究成果,截至 2026 年 4 月,已在 GitHub 上获得超过 34,000 颗星,每月 PyPI 下载量约为 525 万次。DSPy 解决的核心问题是手动编写提示词字符串的脆弱性:当您切换模型、更改工作流,或者发现手写的提示词仅在特定条件下有效时,往往只能推倒重来。DSPy 用一个编译器取代了这种工作流,将提示词优化视为一个带有评估指标的搜索问题。
该框架提供了三个相互关联的原语:Signatures(用自然语言编写的类型化输入输出规范,声明您想要什么,而不是如何获取)、Modules(可组合的单元,如应用推理策略的 ChainOfThought、ReAct、Refine、ProgramOfThought、BestOfN 和 Parallel)以及 Optimizers(用于少样本合成的 BootstrapFewShot、通过贝叶斯优化联合微调指令和演示的 MIPROv2,以及用于权重更新的 BootstrapFinetune)。您只需定义一个评估指标,提供少量标记数据集,运行优化器,即可获得编译好的提示词程序。DSPy 3.0 于 2025 年 6 月的 Databricks Data + AI Summit 上发布,随后在 2026 年 4 月推出了 3.2.0 版本,新增了用于可观测性的 MLflow 集成、基于强化学习(RL)的微调、GEPA 反射式提示词进化优化器,以及基于 Databricks 内部使用经验开发的生产级强化工具。
DSPy 在 2026 年 4 月的实际功能
当前版本为 DSPy 3.2.0,它提供了一个优化器链式接口(BetterTogether),允许您以自定义策略对优化器进行排序:例如,先进行提示词优化,然后微调,最后再重新优化(即 "p -> w -> p" 循环)。它还将 LiteLLM 从必需依赖项解耦为可选依赖项,从而减小了安装体积,并消除了早期版本中令许多用户头疼的传递依赖冲突。现在,当输入字段的值与声明的签名类型不匹配时,输入字段验证会发出警告;此外,dspy.Reasoning 原语(在 3.1.0 中引入)无需额外配置即可直接调用 o3 和 Claude Sonnet 等推理模型的原生推理能力。
其模块库开箱即用地涵盖了大多数推理模式。ChainOfThought 会在给出最终答案前引出推理过程。ReAct 在智能体循环中交替进行推理步骤和工具调用。ProgramOfThought 通过代码解释器路由以解决重度数学问题。BestOfN 对多个补全结果进行采样,并根据评估指标进行评分。Parallel 并发运行模块,适用于对延迟敏感的工作流。所有模块均通过 LiteLLM 接口接受任意 LLM 后端,因此从 GPT-4o 切换到 Claude 3.7 Sonnet,再到本地运行的 Llama 模型,只需更改一行配置,并重新运行优化器即可为新模型的风格重新推导提示词。
优化系统是 DSPy 区别于市场上所有其他 LLM 编排工具的核心所在。BootstrapFewShot 通过在训练集上运行您的程序来生成带标签的演示,并仅保留输出通过评估指标的示例。MIPROv2 则更进一步:它提出候选指令,使用贝叶斯优化在小批量数据上对其进行评估,并同时对工作流中每个模块的指令文本和演示集进行联合搜索。根据 ICLR 2024 的论文,在代表性任务上,这些优化器生成的管道性能优于手动编写提示词的基线,在 GPT-3.5 上提升超过 25%,在 Llama 2 13B 上提升超过 65%。GEPA 优化器(在 3.0 中引入)应用了反射式进化,模型会对其自身提出的指令进行批判并迭代。
"提示工程是脆弱的、硬编码的‘模板’,缺乏泛化能力,而且根本无法扩展。" - vincirufus,Hacker News,2025 年 8 月
DSPy 与 LangChain 和 LlamaIndex 的定位对比
LangChain 是一个编排框架:它为您提供可组合的链式抽象、内存管理、100 多种预构建的工具集成,以及通过字符串解析或函数调用在工具之间路由的智能体执行器。其基本模型是命令式的:您编写一个提示词字符串,将其连接到链中,并通过编辑字符串进行迭代。它没有优化器。当您希望提示词根据某个指标进行改进时,您必须自己编写该逻辑。LangChain 拥有约 9 万颗 GitHub 星,是所有 LLM 框架中集成生态系统最大的,但其提示词处理完全是手动的,并且链式调用每次会产生约 10ms 的开销(相比之下,根据 2025 年 Morph LLM 基准测试,DSPy 约为 3.5ms)。两者的对比归结于此:LangChain 优化的是您构建可用产品的速度;而 DSPy 优化的是随着模型的变化,该产品能够多么可靠地改进并保持正常运行。
LlamaIndex 是 RAG 基础设施:其主要差异化优势在于索引层,拥有 10 多种索引类型(VectorStore、SummaryIndex、KnowledgeGraph、SQL 等)、复杂的分块和嵌入管道、结合 BM25 与语义搜索的混合检索,以及重排功能。如果您的问题是“如何大规模摄取和检索文档”,LlamaIndex 提供了专门构建的工具。其查询引擎智能体将该检索层封装在一个 ReAct 循环中。LlamaIndex 所缺乏的是优化器:一旦您定义了 RAG 管道,提示词质量就成了一个需要手动迭代的问题。实际上,DSPy 可以通过将检索器视为兼容 DSPy 的模块,在 LlamaIndex 的检索之上使用,这是 DSPy 社区用例中记录的一种模式,并且可以通过 LlamaIndex 本身的集成来实现。
来自工程社区的一个实用框架:用户通常将 DSPy 的优化能力与 LangChain 广泛的集成相结合,或者使用 DSPy 生成优化的提示词,然后将其部署在 LangChain 管道中。对于生产环境中 DSPy 运行的可观测性和追踪,Databricks 集成与 MLflow 配合使用,而 Langfuse 等第三方工具也原生支持 DSPy 追踪。对于构建需要模型提供商灵活性的 LLM 应用程序的团队,LiteLLM 是 DSPy 在底层委托的路由器。对于多智能体协调比提示词优化更重要的重度智能体工作负载,AutoGen 和 CrewAI 采用了不同的架构方法,值得进行比较。
"Khattab 定律:任何足够复杂的 AI 系统,都包含一个临时的、非正式指定的、充满 bug 的 DSPy 一半功能的实现。" - Skylar Payne,AI 工程博客,2024 年
DSPy 工作流的实际情况
开始使用 DSPy 需要比 LangChain 更高的前期投入,但会以不同的方式获得回报。工作流分为四个阶段:定义签名、编写模块组合、定义评估指标,以及运行优化器。一个最小可行示例是这样的:编写 `class QA(dspy.Signature): question: str -> answer: str`,实例化 `cot = dspy.ChainOfThought(QA)`,编写一个检查答案正确性的评估指标,调用 `optimizer.compile(cot, trainset=examples)`。编译后的程序会缓存优化的提示词和演示,这些内容可以保存到磁盘、进行版本控制并精确复现。
在 3.x 版本中,调试体验得到了显著改善。`inspect_history()` 函数会打印会话中进行的每一次 LLM 调用,包含完整的提示词和响应。MLflow 集成(针对 Databricks 用户)会记录每一次优化试验的输入、输出和指标得分,从而可以审计优化器为何选择特定的演示。3.2.0 中的类型验证警告会在签名不匹配变成静默故障之前将其标记出来。尽管如此,调试一个多模块管道(当优化器做出了您不认同的选择时)需要理解搜索优化的目标是什么,这比调试手动编写的提示词需要更多的上下文知识。
优化成本因优化器和数据集大小而异。使用 GPT-4o-mini 作为教师模型,在 50 个示例上快速运行一次 BootstrapFewShot 大约需要 $1-3。在 200 个示例上生成候选指令的完整 MIPROv2 运行可能需要 $10-50,具体取决于模型选择。官方文档给出的“典型简单运行”的估算成本为 $2。在 2024 年初,一些未阅读成本指南就运行 MIPROv2 的团队报告了令人惊讶的 API 账单,现在文档已更明确地解决了这个问题。
DSPy 是为谁构建的
DSPy 最适合那些以系统思维而非字符串思维来思考的机器学习工程师和研究人员。如果您有标记数据、可衡量的指标,以及一个需要随着模型演进而保持可维护性的工作流,DSPy 的优化器循环所提供的价值是任何手动编写提示词都无法比拟的。Google、IBM、VMware 和 Databricks 等公司的团队报告称,DSPy 大幅降低了模型切换的成本:当新模型发布时,只需重新运行优化器,而无需重写每个提示词。该框架在科学和数据密集型领域尤为有价值,因为在这些领域,检索增强管道需要系统的质量测量。发布可复现 LLM 实验的研究人员可以从 DSPy 的可序列化编译程序中受益,这些程序可以与论文代码一起共享。
该框架不适合在截止日期压力下进行快速原型设计。编写评估指标、准备训练示例以及理解优化器抽象的前期成本是实实在在的。正如一位从业者的分析所指出的,团队“要么直接采用 DSPy,要么从第一天起就有意借鉴其模式,而不是在以后痛苦地重建它们”。没有可编程成功标准的产品(如开放式聊天机器人、创意写作助手)无法利用优化器,这就消除了 DSPy 的主要差异化优势。Python 是唯一的一等运行时,尽管在 2025 年出现了一个由社区维护的 Go 移植版本。
DSPy 不是什么
DSPy 并不是 LangChain 或 LlamaIndex 的完全替代品。它没有提供 100 多种预构建的集成,不管理多轮聊天应用程序的对话内存,也不提供 UI、游乐场或托管服务。它是一个 Python 库。您安装它,编写 Python 代码,调用 LLM API(通过 LiteLLM,它支持 OpenAI、Anthropic、Gemini、Cohere,以及通过 Ollama 支持的本地模型和大多数其他提供商)。部署、服务和监控超出了 DSPy 本身的范围,由您自己的基础设施处理,或者如果您在 Databricks 生态系统中,则由其技术栈处理。
它也不是为那些想完全避免思考提示词的用户准备的框架。DSPy 让您从手动编写提示词转变为编写签名和指标,但您仍然需要了解什么是好的输出,以便定义指标。优化器是在提示词空间中进行搜索,而不是从头开始弄清楚您的用例的“神谕”。这种区别很重要:DSPy 自动化了繁琐的迭代过程,使该过程系统化且可复现,但它并不能取代领域知识。
用户评价
暂无评价,快来分享你的第一条体验吧!
登录 后即可撰写评价。
收录于精选合集
包含 DSPy 的精选合集。
相关文章
与 DSPy 相关的指南和文章。

Grok 4.3 API for Agents (May 2026): Pricing, Benchmarks, Migration

Replit Pricing Explained (2026): Core vs Pro and Effort-Based Agent Billing

Run a Company With AI Agents: The Open-Source Orchestration Setup (2026)

DeepSeek V4 Pro vs Claude Opus 4.7: 5-PR Refactor Test (2026)

Turn Any AI Agent Into a Superagent: The 12-Integration Stack (2026)
