用途:dspy.ReAct 用于构建会调用外部工具的智能体。它把“推理—行动—观察”循环封装为可优化模块,由 DSPy 负责循环机制与提示构造,智能体自行决定调用哪些工具及顺序,直到能作答。
主要能力:支持多工具,工具为带类型标注和 docstring 的 Python 函数,DSPy 据此生成工具描述与参数结构;工具返回值作为 Observation。构造参数为 signature(字符串或类签名)、tools、max_iters(默认 20),达到上限时返回当前最佳答案。可通过类签名声明结构化输出如 confidence。返回的 Prediction 含 trajectory,保存完整的思考—行动—观察轨迹,便于调试。
使用方式:配置 LM 后,例如 dspy.configure(lm=dspy.LM("openai/gpt-4o-mini")),再创建 agent = dspy.ReAct("question -> answer", tools=[search]),调用 agent(question="...")。生产环境可用 dspy.Module 包装以加入上下文或前处理,并配合 dspy.Refine 加质量约束。支持用 BootstrapFewShot、MIPROv2 等优化器调优,并可 save/load 状态。安装:npx skills add lebsral/DSPy-Programming-not-prompting-LMs-skills --skill <name>。
适用场景:需要调用搜索、API、数据库等多步真实数据的任务;需要可解释的工具调用轨迹;希望智能体自行决定工具选择。若只需输入到输出无工具,宜用 ChainOfThought;纯代码计算宜用 CodeAct;固定流水线宜用 Module 组合。
限制与注意:工具应返回错误字符串而非抛出异常,否则循环会崩溃;不要在签名中声明 reasoning、trajectory 等内部字段,以免冲突;docstring 应写成面向智能体的行动说明。资料提及 DSPy 3.3.0 beta 的 ReActV2 将支持原生工具调用,尚未稳定,生产建议以 DSPy 3.2.1 为准。优化收益的具体数值来自资料所述经验,实际效果因任务而异。