用途:dspy.RLM 实现递归语言模型(Recursive Language Models,Zhang、Kraska、Khattab 2025)思路,适合输入超出上下文窗口、需要以代码方式探索数据的任务,如超长文本、日志、结构化数据转储、多文档集合的分析与抽取。
主要能力:LM 只看到每个输入的类型、长度与预览,而非全文;它在沙箱 REPL 中生成 Python 代码来搜索、过滤、聚合、转换数据;可调用 llm_query(prompt) 或 llm_query_batched(prompts) 对数据切片做语义分析;循环执行“写码—执行—观察”,直到调用 SUBMIT(output) 返回最终答案。支持类型化输出字段、自定义工具函数、独立且更便宜的 sub_lm、异步 aforward,并可通过 result.trajectory 查看每步代码与输出。
使用方式:先安装 Deno(默认沙箱基于 Pyodide WASM):curl -fsSL https://deno.land/install.sh | sh。基本用法为 dspy.configure(lm=dspy.LM("openai/gpt-4o")),再 rlm = dspy.RLM("context, query -> answer"),调用 rlm(context=..., query=...) 后读取 result.answer。构造参数包括 max_iters=20、max_llm_calls=50、max_output_chars=10_000、verbose、tools、sub_lm、interpreter。REPL 内置 llm_query、llm_query_batched、print()、SUBMIT()。
适用场景:10 万字符以上大上下文、数据探索、需要代码与推理结合、结构化数据多步分析。
限制与注意:RLM 在 DSPy 中标记为实验性,API 可能变化;简单输入输出任务应改用 dspy.Predict 或 dspy.ChainOfThought,需要外部 API/数据库工具时用 dspy.ReAct;未装 Deno 会报晦涩的子进程错误;REPL 中必须 print() 才能看到结果;max_iters 过低会限制复杂探索;未设 sub_lm 时每次 llm_query 都用主 LM,成本较高;带自定义 interpreter 的实例非线程安全。安装技能命令:npx skills add lebsral/DSPy-Programming-not-prompting-LMs-skills --skill <name>。