用途:dspy.ProgramOfThought 让语言模型把推理写成可执行的 Python 代码,代码在受限沙箱中运行,执行结果作为输出。与 ChainOfThought 不同,它由代码而非模型心算得出答案,因此对算术、计数和逻辑类任务更精确。
主要能力:支持行内签名与类签名;沙箱可访问 Python 标准库,如 math、datetime、collections、itertools、re、json、statistics;代码执行失败时可按 max_iters 重试(默认 3 次),模型能看到上次的报错轨迹以自我修正;可与其他模块组合,例如先计算再解释;也支持 DSPy 优化器(如 BootstrapFewShot)来调优生成代码的指令与示例。
使用方式:先 dspy.configure(lm=lm) 配置模型,再创建 solver = dspy.ProgramOfThought("question -> answer") 并调用 solver(question=...)。类签名需为输入输出字段加 dspy.InputField / dspy.OutputField。需要重试次数时传 max_iters=5。
适用场景:数学与算术(利息、税费、单位换算、统计)、计数与聚合、数据整理(排序、过滤、转换)、日期时间推理、精确字符串操作、逻辑谜题。若任务纯定性、无需计算,或需要工具调用与外部 API,应改用 dspy.Predict、dspy.ChainOfThought 或 dspy.ReAct。
限制:生成的代码只能用已安装的标准库,numpy、pandas 等外部包需环境预装;沙箱禁止文件 I/O、网络访问等副作用;生成代码比直接回答更耗 token,简单算术用 ChainOfThought 更快更省;模型能力影响代码质量,复杂计算建议用较强模型;代码返回值必须对应签名的输出字段。
资料未提供具体模型价格、平台支持范围与效果基准。