用途
DSPy 将提示词工程从手工编写字符串转变为编写程序。传统流程是“写提示词 -> 测试 -> 手动调整 -> 重复”,而 DSPy 的流程是“定义签名 -> 用优化器编译 -> 部署优化后的提示词”。它适合需要程序化优化提示、构建提示质量至关重要的流水线、希望提示工程可复现可测试、处理复杂多步推理任务、自动寻找有效少样本示例、构建能随训练数据改进的系统、系统评估和比较提示策略,以及将提示工程从应用逻辑中抽象出来的场景。
不适合的场景包括:简单单次提示已足够、需要精确控制提示措辞、LLM 交互极少的应用、快速原型迭代优先于优化、资源受限环境(优化需要调用 API)。
主要能力
签名(Signatures)
签名定义输入/输出规范。支持内联签名(如 dspy.Predict("document -> category"))和基于类的签名(推荐),后者可包含多个输入输出字段及描述。例如可定义情感分析签名,包含 feedback、sentiment、confidence 字段;也可定义复杂工程分析签名,包含 report_text、domain 输入和 summary、key_metrics、risk_factors、recommendations、confidence_level 输出。
模块(Modules)
模块实现推理模式。ChainOfThought 在回答前加入推理步骤;可构建多阶段流水线模块,如文档摘要 -> 关键点提取 -> 行动项生成;ReAct 模块支持工具使用,可结合自定义工具(如张力计算、标准检索)进行推理和行动。
检索增强生成(RAG)
支持配置检索器(如 ChromadbRM),构建 RAG 模块:检索相关段落,再基于上下文生成答案。还支持多跳 RAG,通过多次检索和推理处理需要多块信息的复杂问题。
优化器(Optimizers)
BootstrapFewShot 优化器可根据度量自动选择少样本示例;BootstrapFewShotWithRandomSearch 通过随机搜索寻找最佳示例组合;MIPRO 优化器可同时优化指令和示例。优化器通过编译模块并传入训练集来生成优化后的模块。
评估与度量(Evaluation and Metrics)
支持自定义度量函数,接收真实示例、预测结果和可选执行轨迹,返回 0 到 1 的分数。可实现精确匹配、部分匹配等评估逻辑。
使用方式
安装核心包:pip install dspy-ai。可选安装检索依赖:pip install chromadb faiss-cpu。设置 API 密钥:export OPENAI_API_KEY="your-api-key"。
基本流程:配置 LLM(如 dspy.OpenAI(model="gpt-4") 并 dspy.settings.configure(lm=lm)),定义签名,创建预测器或模块,调用并获取结果。优化时准备训练集(dspy.Example 列表),定义度量函数,使用优化器(如 BootstrapFewShot)编译模块。
适用场景
- 需要程序化优化提示而非手动调整
- 提示质量对成功至关重要的流水线
- 可复现、可测试的提示工程
- 复杂多步推理任务
- 自动寻找有效少样本示例
- 能随更多训练数据改进的系统
- 系统评估和比较提示策略
- 将提示工程从应用逻辑中抽象
限制
- 简单单次提示已足够时无需使用
- 需要精确控制提示措辞时不适用
- LLM 交互极少的应用不适用
- 快速原型迭代优先于优化时不适用
- 资源受限环境不适用,因为优化需要调用 API
- 具体收费、价格、平台支持等信息暂未提供