用途:dspy.CodeAct 让智能体不通过固定工具接口调用,而是生成可执行 Python 代码片段来完成任务,适合计算、数据转换、多步逻辑等场景。
主要能力:智能体循环执行“生成代码—沙箱执行—观察结果—继续迭代”,可在一个步骤内串联多个工具调用、使用循环、变量和条件,并对数据进行转换、过滤、聚合。它继承自 ReAct 与 ProgramOfThought。
使用方式:先配置 LM,例如 dspy.LM("openai/gpt-4o-mini") 并 dspy.configure(lm=lm);将工具定义为带类型注解和 docstring 的纯函数;再创建 dspy.CodeAct("question -> answer", tools=[...], max_iters=5),调用 agent(question=...)。构造参数包括 signature、tools、max_iters(默认 5)、interpreter。可用 dspy.inspect_history(n=1) 查看生成的代码。
限制:工具必须是纯函数,不能是可调用对象、类方法或 lambda;工具内不能导入 numpy、pandas 等外部库,逻辑须自包含。生成代码在基于 Deno 的沙箱解释器中运行,仅标准库,无法访问文件系统、网络或环境变量;工具函数本身在正常 Python 进程执行。max_iters 过小可能提前停止,过大消耗 token。简单工具调用宜用 ReAct。
安装:npx skills add lebsral/DSPy-Programming-not-prompting-LMs-skills --skill <name>。