DSPy 介绍
了解工具的详细功能和使用方法
如果团队已经有一组任务样本和可重复的评分规则,DSPy 可以把提示词迭代放进 Python 程序:定义输入输出,组合任务模块,再用优化器搜索指令或示例。它更适合需要持续维护分类、抽取、RAG 或 Agent 流程的开发者,而不是只想生成一条通用提示词的人。
本文于 2026-10-18 核对当前文档与官方仓库。配套教程验证本地模拟流程,没有调用付费模型或测量真实模型效果提升。
DSPy 怎么组织一个应用?
Signature 定义任务契约
用 Signature 写明输入字段、输出字段和任务说明,例如把客服消息分成账单、技术支持和其他。字段类型有助于表达接口,但实际业务规则仍要由应用与评分器验证;输出通过解析,不代表标签或事实一定正确。
Module 组合处理步骤
Predict、ChainOfThought 和其他模块提供不同的任务组织方式,开发者也可以用 Python 控制流组合检索、抽取与工具调用。换模块会改变调用次数、上下文和错误处理,需要重新评估成本及结果。模块说明
Optimizer 根据样本和指标改进程序
不同优化器改动不同:BootstrapFewShot 收集通过评分的运行轨迹作为示例;MIPROv2 搜索指令与示例;GEPA 利用执行反馈提出候选指令并选择程序。优化提示或示例不等于修改模型权重,只有采用相应微调流程时才涉及权重训练。BootstrapFewShot、MIPROv2、GEPA
最有价值的前置条件:能判断结果好坏
以客服分类为例,应先定义标签及边界,准备包含容易混淆问题的样本,再建立评分规则。只有“输出非空”或“返回合法 JSON”的指标,可能奖励形式正确但内容错误的答案。
抽取任务还需要检查字段与原文证据;RAG 任务需要区分答案正确、引用支持和检索缺失;Agent 任务应单独验证敏感动作和工具参数。DSPy 会围绕你给出的信号搜索,评分目标遗漏的要求不会自动补齐。指标与评估
训练集、验证集和测试集各自做什么?
优化器可以反复查看训练样本;验证集可能参与候选选择。以 GEPA 为例,未提供 valset 时会复用 trainset,因此要评价未见数据上的表现,应明确传入独立验证集,并另留最终测试集。
按客户会话、来源文档或业务对象分组划分,比随机打散相邻片段更能减少泄漏风险。重复内容、相同原始对象和语义近似样本都应检查;精确去重只能发现其中一部分。GEPA 数据划分说明
免费和实际费用
当前官方仓库采用 MIT 许可,框架软件许可费用为 $0。实际成本来自学生模型、教师或反思模型、判分模型、检索和工具 API,以及计算、日志与维护。
GEPA 的 max_metric_calls 是优化工作量的控制单位,不能直接等同于所有模型调用数、token 数或美元硬上限。一个样本可能运行多个模块;反思和模型判分又有独立用量。应先做小规模实测,核对各角色用量,并结合供应商配额和应用侧预算控制扩大实验。GEPA 机制
数据会去哪里?
本地运行 Python 不代表样本只在本机:配置外部模型后,输入、示例、轨迹或反馈可能发送给相应供应商。还应检查缓存、追踪平台、错误日志与保存的程序。示例可能包含训练文本或参考输出,应按数据资产管理,而不只当成一份普通配置。
仅从可信来源加载程序或序列化文件,固定框架和依赖版本。换模型、adapter、任务定义或优化器后重新运行基线、保留集和成本检查。保存与加载
适合谁?
适合有 Python 开发能力、能维护任务样本与评分,并愿意把模型调用纳入回归流程的团队。不适合没有评价标准、只凭少量展示案例就期待自动优化始终有效的场景。
可以从数据划分、指标与优化预算教程开始;研究文本反馈优化可看 DSPy vs TextGrad,需要比较另一套组件与训练抽象可看 DSPy vs AdalFlow。