mcpField
D
dspy

dspy

github.com/magnus919Agent 工作流16160 次安装1 天前更新
代码仓库

关于 dspy

dspy 是帮助开发者构建和优化 LLM 程序的技能,适用于使用 Python、类型化签名和评估指标的开发工作。它介绍如何编译优化提示词,而非采用链式组合方式。

主要功能

  1. 01用类型化签名定义任务
  2. 02组合预测、推理和工具调用模块
  3. 03依据指标优化提示词
  4. 04评估程序并保存或加载
  5. 05提供 RAG 与多步程序参考

适用场景

  1. 01将现有提示词改造成可优化程序
  2. 02构建多步 LLM 工作流
  3. 03优化工具调用 Agent
  4. 04评估分类或 RAG 程序

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/magnus919/agent-skills --skill dspy

安装后在 Claude Code 中输入/dspy确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
evals/
evals.json
references/
agent-patterns.md
compilation-guide.md
core-modules.md
evaluation.md
example-rag-compilation.md
faq-and-troubleshooting.md
optimizer-guide.md
program-patterns.md
validation-audit.md
scripts/
check-setup.py
templates/
classification.py
multi-step.py
rag-program.py

详细介绍

DSPy 专家技能

DSPy 是一种提示词程序编译器,而不是链式或 RAG 框架。你可以编写带类型签名的 Python 程序,DSPy 会自动优化提示词。

⚠️ DSPy 不是链式框架。 它不使用 prompt | model | parser,也没有 LCEL。DSPy 作用于不同的层级:你用 Python 控制流和类型签名定义程序,然后由编译器针对某项指标优化提示词。如果你期待的是 LangChain 风格的组合方式,那么 DSPy 就不是你要找的工具。

可以把它看作适用于 LM 的 PyTorch——你定义架构,编译器调整权重(提示词)。

核心范式

请先阅读这一部分。这是理解 DSPy 最重要的内容。

import dspy

# 1. Configure the LM
lm = dspy.LM("openai/gpt-4o-mini")
dspy.configure(lm=lm)

# 2. Define a signature (input/output schema)
class QASignature(dspy.Signature):
    """Answer questions concisely."""
    question: str = dspy.InputField()
    answer: str = dspy.OutputField()

# 3. Build a program using modules
qa = dspy.ChainOfThought(QASignature)

# 4. Compile against a metric
optimizer = dspy.MIPROv2(metric=dspy.answer_exact_match)
compiled_qa = optimizer.compile(qa, trainset=trainset, num_trials=25)

# 5. Use the compiled program (portable artifact)
answer = compiled_qa(question="What is DSPy?").answer

核心原则

  1. DSPy 是编译器,而不是链式框架。 你用 Python 控制流和类型签名定义程序结构,由编译器优化提示词。这与 LangChain 的显式提示词组合有本质区别。

  2. 签名定义任务。 输入/输出字段对及其可选描述共同构成任务定义。语法为 input1, input2 -> output1, output2。

  3. 模块是程序组件。 包括 dspy.Predict(直接预测)、dspy.ChainOfThought(推理)、dspy.ReAct(工具使用)和自定义的 dspy.Module 子类。通过 Python 控制流(if/for/while)组合这些模块。

  4. 优化器调整提示词,而不是权重。 多种优化器(teleprompter)可调整指令、少样本示例,或两者兼顾。选择取决于瓶颈和预算。请参阅优化器速查表。

  5. 编译一次,服务多次。 编译开销很大($3-$300+)。通过 program.save(path) 可将输出保存为可移植的制品。推理开销很低。

  6. 积极使用缓存。 DSPy 默认缓存所有 LM 调用。请为当前客户端设置 DSPY_CACHEDIR。使用 dspy.LM(..., cache=False) 可禁用缓存。

从哪里开始

你已有……从这里开始
什么都没有——正在探索 DSPy了解其范式(先阅读本页),然后构建一个简单的 Predict 程序
一个想要优化的可用提示词将其迁移到 DSPy Signature,添加 ChainOfThought,然后使用 BootstrapFewShot 编译
一个多步骤流水线使用 Python 控制流构建自定义 dspy.Module,然后使用 MIPROv2 编译
一个 Agent/工具使用任务使用带工具的 dspy.ReAct,并通过 GEPA 或 AvatarOptimizer 编译
正在比较框架请参阅框架选择指南

快速参考

任务方法参考
基本预测dspy.Predict(signature)references/core-modules.md
带推理dspy.ChainOfThought(signature)references/core-modules.md
使用工具dspy.ReAct(tools=tools)references/agent-patterns.md
自定义程序class MyProgram(dspy.Module)references/program-patterns.md
快速优化dspy.BootstrapFewShot(metric)references/optimizer-guide.md
完整优化dspy.MIPROv2(metric, auto="medium")references/optimizer-guide.md
评估dspy.Evaluate(metric=fn, devset=examples)references/evaluation.md
保存/加载program.save(path) / program.load(path)references/compilation-guide.md
检索dspy.Retrieve(k=5)references/program-patterns.md

框架选择指南

场景选择原因
提示词优化/编译程序DSPy唯一能针对某项指标自动优化提示词的框架
文档查询/RAGLlamaIndex数据摄取和检索是其一等功能
链/Agent 组合LangChainLCEL 是最简洁的管道式组合模型
状态机式多 AgentLangGraph图拓扑、子图和人在回路
搜索流水线Haystack对搜索工作负载而言,其流水线模型更成熟
基于角色的团队CrewAI更高层级的 Agent 抽象

参考文件

参考资料加载时机文件
核心模块使用 Predict、ChainOfThought、ReAct 构建程序时references/core-modules.md
优化器指南选择和配置优化器时references/optimizer-guide.md
程序模式RAG、分类、多步骤任务、工具使用references/program-patterns.md
评估指标、评估循环、数据集创建references/evaluation.md
编译指南缓存、成本管理、保存/加载references/compilation-guide.md
Agent 模式ReAct Agent、工具使用、AvatarOptimizerreferences/agent-patterns.md
常见问题与故障排除常见错误及其修复方法references/faq-and-troubleshooting.md
验证审计对所有 API 声明进行研究验证references/validation-audit.md
RAG 完整示例完整的 RAG 编译及预期输出references/example-rag-compilation.md

模板文件

模板使用时机文件
分类使用 BootstrapFewShot 进行文本分类时templates/classification.py
RAG 程序使用 ColBERT 检索和 ChainOfThought 构建 RAG 时templates/rag-program.py
多步骤推理使用工具构建多步骤程序时templates/multi-step.py

脚本

脚本用途文件
check-setup验证 DSPy 的安装和配置scripts/check-setup.py

故障排除

症状可能原因修复方法参考资料
编译速度过慢候选项/线程过多减少 num_candidates 或使用 auto="light"references/optimizer-guide.md
编译成本过高未启用缓存启用 DSPY_CACHEDIRreferences/compilation-guide.md
上下文过长示例过多减少 max_bootstrapped_demos 和 max_labeled_demosreferences/faq-and-troubleshooting.md
编译后质量下降瓶颈对应的优化器选择错误查看速查表:指令、示例还是权重references/optimizer-guide.md
程序没有改进指标缺乏区分度使用返回 float 而不是 bool 的指标references/evaluation.md
子模块未更新已设置 _compiled 标记重新编译前设置 module._compiled = Falsereferences/compilation-guide.md

何时不应使用 DSPy

  • 简单的单提示词应用——直接调用原始 API 更简单
  • 需要预构建的应用模块(PDF 问答、文本转 SQL)——使用 LlamaIndex 或 LangChain
  • 没有优化预算的一次性任务——DSPy 编译器的开销无法摊销
  • 对延迟有实时严格要求——编译在开发时进行,但不会增加推理开销

评论

支持 Markdown