用途:指导使用 DSPy 的 ChainOfThought 模块,在给出答案前插入推理步骤。它是 dspy.Predict 的直接替代,签名不变,只需把 Predict 换成 ChainOfThought,模型会先逐步推理再回答。推理内容始终通过 result.reasoning 获取,无需在签名中声明。
适用场景:多步逻辑(数学、谜题、条件推理)、分析与判断(代码是否有 bug、是否批准贷款)、需要权衡多因素的细粒度分类、需要展示原因的解释型任务、存在歧义的复杂抽取。经验法则:如果人类回答前需要思考,就用 ChainOfThought。
不适用场景:简单查询、从结构化文本直接抽取、对延迟和成本敏感的路径、高并发低复杂度任务;这些情况用 dspy.Predict 更合适。CoT 会生成额外推理文本,增加延迟与 token 成本(每次约 100–300 token 开销)。
主要能力:支持与 Predict 相同的类型约束(Literal、int、float、bool、list[str] 及 Pydantic 模型);可嵌入 dspy.Module 构建多步流水线,推理结果可传给下游子模块;可与 BootstrapFewShot、MIPROv2 等优化器配合,自动发现高质量推理轨迹作为少样本示例,并在生产前用 Evaluate 对比优化前后准确率。
必要用法:先配置 LM,例如 lm = dspy.LM("openai/gpt-4o-mini"),dspy.configure(lm=lm);然后调用 ChainOfThought,如 assessor = dspy.ChainOfThought(AssessRisk),并通过 result.reasoning、result.assessment 取值。优化器示例:optimizer = dspy.BootstrapFewShot(metric=ticket_metric, max_bootstrapped_demos=4),optimized = optimizer.compile(classifier, trainset=trainset),optimized.save("ticket_classifier.json")。
注意事项:不要在签名中重复声明 reasoning,否则会产生重复字段;调整 rationale_field 前缀不影响输出访问名,仍是 result.reasoning;max_tokens 需留至少约 500 token 余量,否则推理可能被截断导致解析失败;安装命令为 npx skills add lebsral/DSPy-Programming-not-prompting-LMs-skills --skill <name>。价格、具体平台支持与效果数据暂未提供。