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 GitHub:DSPy 源码和问题反馈
- DSPy 文档:官方文档
- DSPy 论文:学术论文
- Stanford NLP:斯坦福 NLP 小组
开始学习 #
选择适合你的起点:
继续探索本指南,逐步掌握 DSPy 技术,从新手成长为 LLM 应用开发专家!
最后更新:2026-03-30