SuperAPI AI 工具集

dspy

智能体与模型

查看项目

更新于 10-30 06:46

技能介绍

用途

DSPy 是一个声明式语言模型编程框架,由斯坦福 NLP 团队创建,GitHub 星标超过 22,000。当你需要构建包含多个组件和工作流的复杂 AI 系统、以声明式方式编程语言模型而非手工编写提示词、使用数据驱动方法自动优化提示词、创建可维护且可移植的模块化 AI 流水线、通过优化器系统性地改进模型输出,或构建更可靠的 RAG 系统、智能体与分类器时,可以使用 DSPy。

安装

稳定版本:

pip install dspy

最新开发版本:

pip install git+https://github.com/stanfordnlp/dspy.git

按 LM 提供商安装:

pip install dspy[openai]        # OpenAI
pip install dspy[anthropic]     # Anthropic Claude
pip install dspy[all]           # 所有提供商

主要能力

核心概念

Signature(签名):定义 AI 任务的结构(输入 → 输出)。支持内联签名(如 dspy.Predict("question -> answer"),适合快速原型和简单任务)和类签名(如继承 dspy.Signature 并定义 InputField/OutputField,适合复杂任务、类型提示和更好的文档)。

Module(模块):将输入转换为输出的可复用组件,包括:

  • dspy.Predict:基础预测模块。
  • dspy.ChainOfThought:在回答前生成推理步骤,可访问 rationale 和 answer。
  • dspy.ReAct:带工具的智能体式推理。
  • dspy.ProgramOfThought:生成并执行代码进行推理。

Optimizer(优化器):使用训练数据自动改进模块,包括:

  • BootstrapFewShot:从示例中学习。
  • MIPRO(Most Important Prompt Optimization):迭代改进提示词。
  • BootstrapFinetune:为模型微调创建数据集。

构建复杂系统

支持多阶段流水线(如 MultiHopQA:生成搜索查询 → 检索上下文 → 生成答案)和带优化的 RAG 系统(结合 ChromadbRM 检索器与 ChainOfThought 生成器,再用 BootstrapFewShot 优化)。

LM 提供商配置

支持 Anthropic Claude、OpenAI、本地模型(Ollama)等,并可通过 dspy.settings.context 为不同任务使用不同模型(如用廉价模型做检索、强模型做推理)。

常见模式

  • 结构化输出(结合 Pydantic 的 TypedPredictor)。
  • 断言驱动优化(dspy.Assert 与 backtrack_handler)。
  • 自一致性(多次采样取众数)。
  • 带重排序的检索(检索候选后按相关性打分取前几名)。

评估与指标

支持自定义指标(如精确匹配、F1 分数),并通过 dspy.evaluate.Evaluate 在测试集上评估,可对比优化前后的效果。

使用方式

基本流程:配置 LM(如 dspy.settings.configure(lm=lm))→ 定义 Signature → 创建 Module → 调用模块。有训练数据后,用 Optimizer 的 compile 方法优化模块,可保存(save)和加载(load)优化后的模型。通过 dspy.settings.configure(lm=lm, trace=[]) 启用追踪以监控和调试。

最佳实践包括:从简单开始迭代(Predict → ChainOfThought → 优化)、使用描述性签名、用有代表性的数据优化、保存和加载优化模型、监控和调试。

适用场景

  • 拥有或能生成训练数据,需要系统性提示改进。
  • 构建复杂多阶段系统。
  • 希望跨不同 LM 进行优化。

限制

  • 学习曲线为中等偏高。
  • 快速原型或简单链式任务可能更适合手工提示或 LangChain。
  • 需要自定义优化逻辑时可能不适合。

资源

  • 文档:https://dspy.ai
  • GitHub:https://github.com/stanfordnlp/dspy
  • Discord:https://discord.gg/XCGy2WDCQB
  • Twitter:@DSPyOSS
  • 论文:"DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines"

另见:references/modules.md(模块详细指南)、references/optimizers.md(优化算法)、references/examples.md(真实示例)。