# DSPy

DSPy 是一个开源的 Python 框架，用于通过类型化签名、可组合模块、指标和优化器来构建语言模型程序，告别脆弱的提示词（Prompt）字符串。它非常适合那些需要构建可靠的 LLM 流水线、RAG 系统、分类器、提取工作流以及需要随时间持续优化性能的智能体（Agent）团队。

Canonical URL: https://aiidelist.com/zh/ide/dspy

Language: zh

更新日期: 2026-10-06

## 概览

- 分类: Developer Workflow Tools
- DSPy 是一个开源框架，用于在 Python 中构建模块化、可优化的语言模型程序，取代了手动维护提示词模板的传统方式。
- 编辑器基础: Standalone
- 平台: Python, Linux, macOS, Windows, Jupyter notebooks, Python services, LiteLLM-compatible providers, API-based model endpoints
- 开源: 是
- 本地模型支持: 是
- 自带 API 密钥: 是

## 简评

对于希望构建由评估驱动的 LLM 程序而非手动维护提示词链的开发者和 AI 团队，DSPy 是理想之选。它不适合寻找托管式 AI 构建工具、AI IDE 或无代码智能体产品的用户。

## 适合场景

- RAG 流水线
- 基于 LLM 的提取系统
- 文本分类工作流
- 问答系统
- 多阶段语言模型程序
- 带工具调用的智能体循环
- 提示词和演示示例优化
- 评估驱动的 LLM 应用开发
- 在同一程序接口下对比不同模型的团队
- 从研究到生产的 LLM 原型开发

## 优点

- 将脆弱的提示词字符串替换为结构化、可测试的 Python 程序。
- 非常适合 RAG、信息提取、分类、多步推理和智能体工作流。
- 优化器使提示词和示例微调比手动提示词工程更具系统性。
- 模型提供商的灵活性帮助团队在不重写整个应用的情况下切换 LLM。
- 开源 MIT 协议，拥有活跃且具备科研背景的生态系统。
- 适合关注评估指标、可重现性和可衡量质量提升的团队。

## 局限

- 寻找 AI 代码编辑器的开发者
- 需要终端编码智能体的团队
- 寻找无代码应用构建工具的非技术用户
- 简单的一次性提示词实验
- 无需 Python 的可视化工作流自动化
- 开箱即用的托管式企业级 LLM 应用管理
- 缺乏评估示例或质量指标的团队
- 不是 AI IDE、可视化应用构建器或无代码智能体平台。
- 需要 Python 技能和比简单的提示词链更强的机器学习/评估思维。
- 优化工作流需要示例、指标和严谨的评估数据支持。
- 生产可靠性取决于周边应用、模型提供商、检索层和观测栈。
- 对于一次性提示词或非常简单的聊天机器人原型，这种抽象可能显得过重。
- 团队仍需自行管理密钥、成本、缓存、追踪、部署和模型治理。

## 为什么选择 DSPy？

当提示词工程（Prompt Engineering）开始演变为软件工程时，DSPy 就派上用场了。管理单个提示词并不难，但生产环境中的 LLM 系统通常包含多个步骤、检索调用、分类器、提取任务、排序逻辑、工具调用以及评估需求。

DSPy 将语言模型的行为视为一个“程序”来解决这个问题。开发者不再手动编写冗长的提示词字符串，而是定义结构化的输入输出、组合模块、定义指标，并让优化器根据示例自动改进程序。

DSPy 的核心价值不在于降低入门门槛，而在于让复杂的 LLM 系统更加系统化。对于关注可靠性、回归测试、模型切换、成本降低和可衡量质量提升的团队来说，DSPy 的价值远高于那些只做一次性聊天机器人演示的项目。

## 核心工作流

实际的 DSPy 工作流从定义每个语言模型步骤的功能开始。这通常始于“签名”（Signature）：即输入和输出的类型化契约。随后，开发者选择合适的模块，如直接预测、思维链（CoT）推理、检索增强生成（RAG）或 ReAct 风格的工具调用。

下一步是评估。当团队定义好示例和能够捕捉有效行为的指标时，DSPy 的威力就会显现。这些指标可以是精确匹配、语义相似度、答案忠实度、提取准确率、分类 F1 分数、人类偏好对齐或自定义评分函数。

一旦程序、示例和指标就绪，优化器就可以“编译”出一个更优版本的程序。这可以改善指令、演示示例或多阶段行为，而无需手动重写每个提示词。

简化的工作流如下：

1. 通过签名定义任务契约。
2. 选择或组合模块以确定推理策略。
3. 根据需要添加检索器、工具或外部函数。
4. 创建示例和评分指标。
5. 针对程序运行优化器。
6. 保存优化后的程序。
7. 跨模型比较质量、延迟和成本。
8. 在常规 Python 应用中部署程序。

这与“提示词链”是完全不同的思维方式。DSPy 鼓励开发者思考：什么是可以衡量、优化、替换和重用的？

## 适用场景

DSPy 最擅长质量可衡量的任务，包括 RAG 系统、问答、分类、信息提取、路由、摘要流水线、支持工单分拣、使用工具的智能体以及多跳推理工作流。

在 RAG 场景中，DSPy 非常有用，因为检索、答案生成、引用行为和忠实度都可以表示为程序的独立部分。团队不再凭直觉调整单个提示词，而是可以针对示例和指标优化整个流水线。

在提取和分类任务中，DSPy 的结构化签名使预期输出变得明确，降低了纯自然语言提示词的脆弱性，并使模型或推理策略的对比更加容易。

对于智能体，当智能体拥有明确的工具边界和可衡量的成功标准时，DSPy 最为有效。它不适合目标模糊且缺乏评估集的开放式自主系统。

## 竞品对比

LangChain 是最常被拿来对比的框架。LangChain 为智能体、链、工具、集成和应用编排提供了广泛的构建块。DSPy 则更专注、更具主见，侧重于对语言模型行为进行编程并根据指标进行优化。如果集成广度和编排模式最重要，请选择 LangChain；如果问题的核心是提示词和流水线的优化，请选择 DSPy。

LlamaIndex 是重度 RAG 应用的首选对比对象。LlamaIndex 深耕于数据摄取、索引、检索和知识工作流。当团队想要围绕检索优化推理和生成程序时，DSPy 表现更佳。许多团队会结合两者：使用 LlamaIndex 负责数据和检索基础设施，使用 DSPy 负责结构化语言模型程序及优化。

Haystack 是搜索和问答系统的另一个实用选择。它通常更适合生产级搜索流水线、检索器和企业信息检索工作流。如果主要挑战是优化语言模型调用和多步提示词行为，DSPy 则更具吸引力。

Semantic Kernel 适用于深度绑定微软生态或构建基于计划器/工具的 AI 应用。DSPy 虽然不那么偏向企业框架，但作为 LLM 程序的科研级优化层表现更强。

Instructor 和 Guidance 在结构化输出和控制生成方面更为接近。对于简单的模式约束输出，它们更容易上手。DSPy 虽然更重，但为团队提供了更广泛的框架来组合和优化多阶段程序。

## 最佳配置

当团队将评估数据视为一等公民时，DSPy 运行效果最好。在优化任何内容之前，团队应定义具有代表性的示例、失败案例以及反映实际产品目标的指标。

对于 RAG 系统，这意味着收集问题、预期答案、相关文档和忠实度检查。对于提取任务，意味着标注示例和模式级校验。对于分类任务，意味着明确类别定义、边界情况并关注类别不平衡问题。

强大的生产环境配置通常包括：

- 用于快速迭代的小型开发集；
- 用于优化器决策的独立验证集；
- 用于回归检查的留出测试集；
- 缓存模型调用以控制成本；
- 版本化的优化程序；
- 针对特定提供商的延迟和成本追踪；
- 明确的模型或优化器上线规则。

DSPy 还应与常规软件工程实践相结合。程序应保存在版本控制系统中，评估应尽可能在 CI 中运行，优化后的产物应像应用代码一样进行版本化管理。

## 迁移建议

从手写提示词迁移到 DSPy 应该循序渐进。第一个目标最好是那个输入输出明确、有评估数据但让人头疼的提示词。一次性重写整个智能体或 RAG 系统会让你难以判断 DSPy 究竟是提升了系统性能，还是仅仅改变了太多变量。

实用的迁移路径是：

1. 选择一个具有可衡量输出且重度依赖提示词的步骤。
2. 将其转换为 DSPy 签名和模块。
3. 添加 20 到 100 个代表性示例（如果有）。
4. 定义一个能捕捉真实失败模式的指标。
5. 将手写提示词与 DSPy 程序进行对比。
6. 仅在基准测试正常工作后进行优化。
7. 保存优化后的程序并长期追踪变化。

从 LangChain 或 LlamaIndex 迁移的团队不需要替换所有内容。DSPy 通常可以作为优化后的语言模型层嵌入这些系统中。例如，检索可以保留在 LlamaIndex 中，而将答案生成、重排序或声明验证实现为 DSPy 模块。

## 实施评估清单

在采用 DSPy 之前，团队应确认以下几点：

- 项目是否有可重复的语言模型任务，而非一次性提示词？
- 团队能否定义有用的输入和输出契约？
- 是否有示例或日志可以转化为评估集？
- 是否存在超越主观偏好的质量衡量指标？
- 模型切换、降本或提示词优化是否能产生实际价值？
- 工程团队是否具备维护 Python 代码和部署基础设施的能力？
- 提示词、输出、追踪和缓存数据是否可以安全存储或检查？
- 团队是否清楚流水线中哪些部分是被优化的，哪些是固定的？

如果具备这些条件，DSPy 可以让 LLM 开发更加系统化。如果团队只需要一个快速上线的聊天机器人，更简单的框架或低代码构建工具可能是更好的起点。

## 功能

### 编程模型

- 用于声明输入输出行为的类型化签名
- 可组合模块，如 Predict、ChainOfThought 和 ReAct
- Python 优先的流水线，取代硬编码的提示词模板
- 可重用的程序组件，用于提取、分类、RAG 和智能体

### 优化与评估

- 优化器根据指标和示例编译程序
- 针对多阶段 LM 程序的提示词和演示示例优化
- 支持自定义评分函数和训练示例
- 支持保存并重新加载优化后的程序

### 模型与提供商灵活性

- 通过 dspy.LM 配合提供商模型字符串进行配置
- 底层使用 LiteLLM，具有广泛的提供商兼容性
- 支持在不重写模块逻辑的情况下切换提供商
- 可用于基于 API 或兼容的本地/自托管模型端点

### 智能体与工具

- ReAct 风格的工具调用模块
- 普通 Python 函数可直接作为工具暴露
- 适用于检索、搜索、计算和多步工作流
- 支持模块化的智能体循环，中间步骤可检查

### 开发者工作流

- 通过 pip install dspy 快速安装
- Python 3.10+ 软件包
- MIT 授权的 GitHub 项目
- 可在常规 Python 项目、Notebook、服务和实验环境中使用

## 价格

open-source

- Open Source: $0 — DSPy 作为一个 Python 软件包，在 MIT 许可证下免费安装和使用。
- Model Provider Costs: Varies — 推理、嵌入、检索和微调成本取决于所配置的模型提供商、API 使用情况和基础设施。
- Self-Managed Production: Infrastructure-dependent — 团队需负责托管、监控、评估数据、密钥管理、缓存、模型端点以及部署运维。

价格核对日期: 2026-07-02

## 支持的模型

- OpenAI
- Anthropic
- Google
- OpenRouter
- LiteLLM-compatible providers

## 隐私与数据处理

DSPy 是一个本地 Python 框架，本身不提供托管运行环境。数据暴露风险取决于所配置的模型提供商、检索器、向量数据库、日志记录、缓存及部署环境。在使用敏感数据前，团队应审查 API 密钥、输入输出日志、优化器训练示例、缓存追踪、检索文档以及提供商的数据保留政策。

## 企业功能

- MIT 许可证
- 支持自带模型提供商 (BYOK)
- 兼容现有的 Python 部署栈
- 可集成至现有的 CI、评估和观测工作流
- 无托管的企业级管理控制台
- 无内置的 SSO 或团队管理功能
- 安全性与治理取决于周边应用及基础设施

## 替代工具

- LangChain
- LlamaIndex
- Haystack
- Semantic Kernel
- Guidance
- Instructor

## 资料来源

- [官方网站](https://dspy.ai/)
- [GitHub 仓库](https://github.com/stanfordnlp/dspy)
- [快速入门](https://dspy.ai/getting-started/program-dont-prompt/)
- [安装指南](https://dspy.ai/getting-started/installation/)
- [签名文档](https://dspy.ai/learn/programming/signatures/)
- [语言模型文档](https://dspy.ai/learn/programming/language_models/)
- [教程](https://dspy.ai/tutorials/)
- [DSPy 研究论文](https://arxiv.org/abs/2310.03714)

最近核对日期: 2026-07-02

## 更新记录

- 2026-07-02: 将 DSPy 归类为开发者工作流框架，而非 AI IDE、CLI 编码智能体或提示词转应用工具。
- 2026-07-02: 验证了当前关于结构化签名、模块、优化器、Python 3.10+、MIT 协议以及基于 LiteLLM 提供商灵活性的官方定位。
