TellWorldAI 世界档案
问档案English

首页›产品

产品

DSPy

DSPy 是一种编程模型,把语言模型流水线表示为声明式模块构成的计算图,并用编译器按给定指标优化。

时代 生成式 AI 普及

发布日期

是什么

DSPy 是一种用于构建语言模型(language model,LM)应用的编程模型。它的核心做法,是把 LM 流水线抽象成「文本变换图」(text transformation graph):这是一种命令式计算图,图中的语言模型通过声明式模块(declarative module)调用。[1] 换句话说,一条流水线不再是一段很长的提示词,而是若干个模块按数据流连接起来的程序。每个模块声明自己要完成什么变换,图则规定这些变换如何组合;语言模型在模块内部被调用,外围程序控制调用的顺序和组合方式。[1] 这和把提示词当作主要设计对象的做法不同。

为什么提出

论文认为,已有的 LM 流水线通常用硬编码的提示词模板实现,也就是通过反复试错找到的长字符串。[1] 在这种实现里,提示词的具体写法直接写在程序中;任务或模型一变,就要手工修改字符串,流水线的逻辑和提示词措辞纠缠在一起。DSPy 的提议是把模块作为编程单元,让系统负责提示词如何构造和组合。[1] 这样,开发者描述的是模块之间的计算关系,而不是逐字维护提示词。

模块如何学习

DSPy 的模块是参数化的,意思是它们可以通过创建和收集演示(demonstration)来学习如何应用提示、微调、增强和推理等技术的组合。[1] 演示可以理解为模块期望行为的例子;收集这些例子后,模块可以调整自己使用上述技术的方式。关键点在于,模块不是固定字符串,而是带有可设置参数的组件,这些参数决定模块运行时如何组合提示、微调、增强和推理。[1] 因此,流水线可以通过例子来改进,而不只是靠手工编辑提示词。

编译器

为了让这种做法可用,作者设计了一个编译器,用来优化任意 DSPy 流水线,使其在给定指标上最大化,并给出了两个案例研究。[1] 这里的指标是用户希望流水线满足的目标;编译器把流水线当作一个针对该目标进行优化的程序。论文强调的是,这个编译器适用于任何 DSPy 流水线,而不是只针对某一条手写提示词。[1] 论文还介绍了两个案例研究。

由来与项目

论文于 2023 年 10 月 5 日首次发布到 arXiv,作者包括 Omar Khattab、Arnav Singhvi、Paridhi Maheshwari、Zhiyuan Zhang、Keshav Santhanam,以及 Heather Miller、Matei Zaharia、Christopher Potts 等合作者。[1] 相关 GitHub 仓库 stanfordnlp/dspy 创建于 2023 年 1 月 9 日,采用 MIT 许可证,约有 39,000 颗星标。[2] 仓库的创建时间早于论文在 arXiv 上的发布;MIT 是一种宽松的开源许可证。

在发展中的位置

在 LM 应用的发展中,DSPy 代表了一种从提示词字符串转向「模块加优化」程序的尝试。论文的出发点是明确的:硬编码提示词模板是常见做法,DSPy 用计算图中的声明式模块取代它。[1] 编译器按照指标改进 DSPy 流水线,而不是靠反复试错编辑提示词。[1] GitHub 仓库约有 39,000 颗星标,可以作为项目受关注程度的一个参考。[2]

注释与来源

  1. DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelineshttps://arxiv.org/abs/2310.03714
  2. stanfordnlp/dspy repository metadatahttps://api.github.com/repos/stanfordnlp/dspy

引用本页: DSPy. TellWorld, https://www.tellworld.net/zh/products/dspy. 更新于 2026-11-08