DSPy #

什么是 DSPy? #

DSPy(Declarative Self-improving Language Programs, Pythonically)是由斯坦福大学 NLP 小组开发的一个框架,用于通过编程方式优化语言模型的提示词。它将提示工程从手写提示词转变为声明式编程,让开发者可以像编写普通代码一样构建 LLM 应用。

文档结构 #

本指南按以下结构组织,循序渐进地帮助你掌握 DSPy:

1. 入门基础 #

主题 描述 文档链接
DSPy 简介 DSPy 的定义、特点、历史与应用场景 intro.md
基础概念 安装配置、核心概念、第一个程序 basics.md

2. 核心组件 #

主题 描述 文档链接
签名详解 定义输入输出接口、字段类型、设计最佳实践 signatures.md
模块详解 内置模块、自定义模块、模块组合 modules.md

3. 进阶功能 #

主题 描述 文档链接
优化器 BootstrapFewShot、MIPRO、自动优化策略 optimizers.md
检索器 向量数据库集成、RAG 应用构建 retrievers.md

4. 高级应用 #

主题 描述 文档链接
高级主题 异步支持、流式响应、多模态、自定义组件 advanced.md
最佳实践 项目结构、部署、安全、监控 best-practices.md

学习路径 #

text
入门阶段
├── DSPy 简介
├── 安装与配置
├── 第一个程序
│
基础阶段
├── 签名定义
├── 模块使用
├── 示例创建
│
进阶阶段
├── 优化器使用
├── 检索器配置
├── RAG 应用
│
高级阶段
├── 异步处理
├── 流式响应
├── 生产部署
├── 最佳实践

DSPy vs 传统 Prompt 工程 #

特性 传统 Prompt DSPy
开发方式 手写提示词 声明式编程
优化方式 手动调试 自动优化
可维护性
可复用性
模型迁移 需要重写 无缝切换
可测试性 困难 内置评估
学习曲线 中等

快速开始 #

安装 #

bash
pip install dspy-ai

第一个程序 #

python
import dspy

lm = dspy.LM('openai/gpt-4o-mini')
dspy.configure(lm=lm)

class QA(dspy.Signature):
    """回答问题"""
    question = dspy.InputField()
    answer = dspy.OutputField()

qa = dspy.Predict(QA)
result = qa(question="Python 的创始人是谁?")
print(result.answer)

核心概念预览 #

签名(Signature) #

python
class Summarize(dspy.Signature):
    """将文档总结为简短摘要"""
    document = dspy.InputField(desc="需要总结的文档")
    summary = dspy.OutputField(desc="简短摘要")

模块(Module) #

python
class RAG(dspy.Module):
    def __init__(self, k=3):
        super().__init__()
        self.retrieve = dspy.Retrieve(k=k)
        self.generate = dspy.ChainOfThought(GenerateAnswer)
    
    def forward(self, question):
        context = self.retrieve(question).passages
        return self.generate(context=context, question=question)

优化器(Optimizer) #

python
from dspy.teleprompt import BootstrapFewShot

optimizer = BootstrapFewShot(metric=validate_answer, max_bootstrapped_demos=4)
optimized_rag = optimizer.compile(RAG(), trainset=trainset)

适用场景 #

  • RAG 应用:检索增强生成、知识库问答
  • 智能代理:工具调用、自主决策
  • 数据处理:文本分析、信息提取
  • 多轮对话:聊天机器人、客服系统
  • 内容生成:文案写作、代码生成

DSPy 的优势 #

text
✅ 自动化优化
   - 无需手写提示词
   - 自动生成 Few-shot 示例
   - 持续改进

✅ 可维护性
   - 代码即文档
   - 模块化设计
   - 易于测试

✅ 模型无关
   - 轻松切换模型
   - 统一的 API
   - 跨模型优化

✅ 可复用性
   - 模块可组合
   - 签名可共享
   - 优化器可配置

资源推荐 #

开始学习 #

选择适合你的起点:


继续探索本指南,逐步掌握 DSPy 技术,从新手成长为 LLM 应用开发专家!

最后更新:2026-03-30