DSPy
声明式语言模型编程框架

通过编程方式而非手动调整提示词来增强基于大型语言模型的应用程序的稳定性和性能

声明式编程
自动优化
模块化设计
抽象神经网络背景图
class RAG(dspy.Module):
    def __init__(self):
        self.retrieve = dspy.Retrieve()
        self.generate = dspy.ChainOfThought(
            "context, question -> answer"
        )
    
    def forward(self, question):
        context = self.retrieve(question)
        return self.generate(
            context=context, 
            question=question
        )

性能优化

通过自动化提示工程和参数优化,将GPT-4o-mini在特定任务上的得分从66%提升到87%

模块化构建

借鉴PyTorch设计理念,通过签名、模块和优化器实现灵活的AI系统构建

斯坦福背书

由斯坦福NLP团队开发,基于扎实研究,拥有活跃的社区和清晰的路线图

DSPy 简介与核心概念

什么是 DSPy?

DSPy 是一个由斯坦福 NLP 团队开发的开源框架,旨在通过编程方式而非手动调整提示词来增强基于大型语言模型 (LLMs) 的应用程序的稳定性7。它引入了签名 (Signatures)模块 (Modules)远程提示器 (Teleprompters)编译器 (Compiler) 等核心概念,允许开发者以声明式的方式构建 LLM 应用7

DSPy 的核心思想是将整体流程与单一步骤分开,每个步骤聚焦于具体的工作,协同完成提示词的优化3。它借鉴了 PyTorch 的设计理念,允许开发者灵活组合模块来构建模型,并通过自动化的方式优化参数7

核心优势

  • • 系统化开发和优化语言模型管道
  • • 通过声明式抽象减少手动工作
  • • 自动调整提示词和少量示例
  • • 支持复杂任务如数学推理和多跳问答

DSPy 技术细节

核心模块 (Core Modules)

DSPy 的核心模块是构建 AI 系统的基本组成单元,它们抽象了传统的提示技术,并具有可学习的参数3。每个模块都有明确的输入和输出定义,并通过调用 LLM 来实现处理逻辑1

内置模块示例:

  • dspy.Predict - 基础预测模块
  • dspy.ChainOfThought - 思维链推理
  • dspy.Retrieve - 检索模块

签名 (Signatures)

签名用于描述模块的输入和输出,其作用类似于编程语言中函数的签名1 9。签名取代了传统的手工编写提示词的方式,通过声明式的定义简化程序编写。

签名示例:

question -> answer
context, question -> answer
documents, query -> summary

优化器 (Teleprompters)

优化器名称 核心策略 主要特点
BootstrapFewShot 自助法 (Bootstrap) 优化"教师"程序,生成训练"学生"的示例5 33
MIPROv2 多阶段指令提案与优化 生成指令和少量示例候选,通过评估改进提案1 4
BootstrapFinetune 模型微调 更新语言模型的权重,而不仅仅是提示词30 33
Ensemble 集成学习 并行运行多个程序副本,通过投票汇总结果9 33

应用案例与教程

官方教程与示例

DSPy 的官方文档提供了丰富的教程,分为"使用 DSPy 构建 AI 程序"、"使用 DSPy 优化器优化 AI 程序"以及"DSPy 核心开发"等类别14

构建 AI 程序

  • • 检索增强生成 (RAG)1
  • • 多跳问答 (HotPotQA)12
  • • 实体提取14
  • • 分类14

优化 AI 程序

  • • 数学推理优化14
  • • 分类微调14
  • • 高级工具使用14
  • • 智能体微调14

GitHub 示例

  • • intro.ipynb (入门)13
  • • knn.ipynb (KNN 少样本)13
  • • longformqa_assertions.ipynb13
  • • multi_agent_llama3.ipynb13

真实世界应用案例

应用领域 具体案例/任务 核心功能/技术
文档生成 生成 llms.txt 文档44 代码库分析,元编程,AI 驱动文档生成
信息提取 电子邮件信息提取(分类, 实体提取, 待办事项识别)44 结构化预测,关键实体提取,任务识别
智能体构建 记忆增强的 ReAct 代理(与 Mem0 集成)44 持续上下文感知交互,多会话记忆
检索增强生成 结合 Milvus 和 Llama3 的问答系统12 22 高效信息检索,精确回答生成
数学推理 GSM8K 小学数学问题12 13 复杂 LM 管道优化,解决推理任务

DSPy 与其他工具的对比与集成

DSPy 与 LangChain 的对比

特性 LangChain DSPy
核心目标 LLM 编排与应用集成17 自动化提示工程与 LM 应用优化7 29
编程范式 基于提示模板,链式调用7 声明式编程,模块化构建,编译器优化1 7
优化方式 手动调整提示,部分辅助工具 自动优化器 (Teleprompters) 调整提示、示例、模型权重1 29
核心优势 集成广泛,生态丰富,适合快速原型和复杂编排17 性能优化强,系统化,可复现性高,减少手动提示12 29

集成可能性

DSPy 的 GitHub 仓库中包含 compiling_langchain.ipynb 示例,专门演示如何从 LangChain 的链编译成 DSPy 程序13

集成思路:利用 LangChain 处理外部依赖和数据流,使用 DSPy 优化核心 LLM 调用部分

最新动态与社区资源

项目最新进展

DSPy 项目由斯坦福 NLP 团队主导开发,处于持续活跃和快速迭代的状态2 31。项目有公开的路线图,包括 DSPy 2.5 和 DSPy 3.0 版本的规划31 32

性能提升案例

在 DSPy 2.5.29 版本上,通过优化器将 GPT-4o-mini 在特定任务上的得分从 66% 提升到了 87%33

MIPROv2 优化器引入1 4
支持模型权重微调30 33
论文发表于 arXiv (2023年10月)12

社区资源

官方资源

  • • 官方网站: dspy.ai / dspy.org.cn2 14
  • • GitHub: stanfordnlp/dspy2 13
  • • 中文文档: aidoczh/dspy-doc-zh13 15

社区贡献

  • • 博客文章和视频教程3 5
  • • "DSPy Explained!" (6万次观看)26 28
  • • "DSPy Intro from Sephora" (2.5万次观看)26 28