SuperAPI AI 工具集

dspy

智能体与模型

查看项目

更新于 10-15 13:02

技能介绍

用途

DSPy 适用于以下场景:构建包含多个组件与工作流的复杂 AI 系统;以声明式方式编程语言模型,替代手工提示工程;使用数据驱动的方法自动优化提示词;创建可维护、可移植的模块化 AI 流水线;通过优化器系统化地改进模型输出;构建更可靠的 RAG 系统、智能体或分类器。该项目由斯坦福 NLP 创建,GitHub 星标 22,000+。

主要能力

DSPy 的核心概念包括 Signatures、Modules 与 Optimizers。

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

Modules 是将输入转换为输出的可复用组件,包括:dspy.Predict(基础预测模块)、dspy.ChainOfThought(在回答前生成推理步骤)、dspy.ReAct(带工具的智能体式推理)、dspy.ProgramOfThought(生成并执行代码进行推理)。

Optimizers 使用训练数据自动改进模块:BootstrapFewShot(从示例中学习)、MIPRO(迭代改进提示词)、BootstrapFinetune(为模型微调生成数据集)。

此外还提供评估能力,支持自定义指标(如精确匹配、F1 分数)并使用 dspy.evaluate.Evaluate 进行评估,可对比优化前后的表现。

使用方式

安装:pip install dspy(稳定版),或 pip install git+https://github.com/stanfordnlp/dspy.git(最新开发版)。按提供商安装:pip install dspy[openai]、pip install dspy[anthropic]、pip install dspy[all]。

基本流程:配置语言模型(如 dspy.Claude、dspy.OpenAI、dspy.OllamaLocal,通过 dspy.settings.configure(lm=lm));定义签名;创建模块;调用模块得到结果。可通过 dspy.settings.context(lm=...) 为不同任务切换不同模型(如检索用廉价模型、推理用强模型)。

构建复杂系统:可继承 dspy.Module 编写多阶段流水线(如 MultiHopQA:生成查询→检索上下文→生成答案),或构建带优化的 RAG 系统。RAG 示例中使用 dspy.Retrieve 检索、dspy.ChainOfThought 生成答案,并通过 BootstrapFewShot 优化。支持 ChromadbRM 等检索器配置。

其他常见模式:结构化输出(结合 Pydantic,使用 dspy.TypedPredictor)、断言驱动的优化(dspy.Assert 与 backtrack_handler)、自一致性(多次采样取多数答案)、检索后重排序(retrieve → rerank → answer)。

优化模块:定义训练集(dspy.Example(...).with_inputs(...))与度量函数,使用 optimizer.compile(module, trainset=...) 生成优化后的模块。优化后的模型可保存与加载(module.save / module.load)。

调试:通过 dspy.settings.configure(lm=lm, trace=[]) 启用追踪,运行后检查 dspy.settings.trace 中的 prompt 与 response。

适用场景与限制

适用场景:拥有或能生成训练数据、需要系统性改进提示词、构建复杂多阶段系统、希望跨不同语言模型进行优化时,适合选用 DSPy。

相对取舍:与手工提示工程相比,DSPy 提示工程为自动、基于数据驱动优化、模块化程度高、具备签名带来的类型安全、可移植性高,但学习曲线为中等偏高。手工提示工程适合快速原型;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(真实示例:RAG、智能体、分类器)。