递归语言模型学习项目

一个教育性的递归语言模型(RLM)重新实现项目,旨在通过LLM编写和运行代码来递归分析数据。

  • by Todmy
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Todmy/deep-mcp

使用说明

RLM研究(学习项目)

教育再实施 递归语言模型 (RLM)——推理范式,LLM编写并运行代码来分析数据,递归地将子任务委托给新的LLM实例。

这不是一个新颖的工具。 这是一个学习项目,试图重现Alex L.Zhang、Tim Kraska和Omar Khattab(麻省理工学院CSAIL/斯坦福大学)在论文中描述的RLM方法。有关生产用途,请参阅 正式执行 由论文作者(约2.4k星,MIT许可,积极维护)。

什么是RLM?

传统的LLM将输入作为平面令牌序列进行处理。RLM改变了这一点:它不是将数据输入上下文窗口,而是将数据作为Python变量存储在REPL环境中。然后,LLM编写代码来检查、切片和转换数据,并调用 sub_lm() 递归地将子问题委托给新的模型实例。

这允许通过系统分解处理远远超过上下文窗口限制(10M+令牌)的输入。

此项目与参考实现有何不同

Alex Zhang13/rlm ysz/递归llm 这个项目
目的 参考实施 替代实施 学习练习
沙盒 Docker、Modal、本地 受限Python 仅本地
LLM提供商 OpenAI、Anthropic、OpenRouter、Portkey 通过LiteLLM提供100+服务 OpenRouter(兼容OpenAI)
接口 Python API+可视化 Python API CLI+MCP服务器
成熟度 生产能力 稳定 实验性

已知限制

  • 没有沙盒代码执行——不适合不受信任的输入
  • 框架基准精度(~40-45%闭合模式)低于论文报告的结果
  • 预算调整(最大转弯次数、sub_lm呼叫限制)会显著影响质量
  • 卡住检测启发式方法需要进一步的工作
  • 单一提供程序支持(仅限与OpenAI兼容的API)

项目结构

src/rlm_research/
  engine.py    — core code-observe loop with recursive sub_lm calls
  repl.py      — Python REPL with variable injection
  llm.py       — LLM client (OpenAI-compatible API)
  config.py    — YAML + env vars + CLI overrides configuration
  loaders.py   — file/URL/web source loading
  search.py    — web search providers (Tavily, Brave, SearxNG)
  cli.py       — typer CLI interface
  server.py    — MCP server (deep_research tool)
  benchmark.py — FRAMES benchmark runner
  judge.py     — LLM-as-judge for answer evaluation
  report.py    — markdown report generation

快速开始

pip install -e .
export RLM_API_KEY=sk-...  # OpenRouter API key

# CLI
rlm-research run "analyze this document" --source doc.pdf

# MCP server
rlm-research-mcp

基准

pip install datasets
python scripts/run_frames.py --mode closed --limit 20 --max-depth 1 --temperature 0 -v

参考文献

许可证

麻省理工学院