Trampoline-AI/predict-rlm

Production focused Self-harnessed LM runtime (RLM) that allows the LM to call its sub-lm with DSPy signatures. Define your inputs, outputs, and tools — the model handles its own control flow. Get fully interpretable trajectories and performance that scales directly with model improvements. Without context rot.

📚 predict‑rlm でできること

predict‑rlm は、大規模言語モデル (LLM) にランタイムを提供するPythonライブラリです。これは、モデルがタスクに取り組む際にPythonコードを記述、実行、反復できるサンドボックス化されたREPLです。すべてを単一のプロンプトに詰め込む代わりに、以下を記述します:

  • 入力 (ファイル、文字列、画像など)
  • 出力 (型指定された結果、生成されたファイル)
  • ツール / スキル モデルが呼び出す可能性のあるもの (例: PDFリーダー、スプレッドシートライブラリ、カスタムCLIツール)
  • 高レベルな手順 (契約として機能するDSPyシグネチャ)

実行時、外部のLLMは契約を受け取り、サンドボックス内でPython REPL (JSPI/Deno、Pyodide、またはオプションのDockerベースのサンドボックス) を起動します。これにより、以下が可能になります:

  • ファイルの検査、可変状態の保持、分岐/再試行。
  • predict() を介した、狭い型指定のDSPyシグネチャを持つサブモデルの呼び出し (画像を含むマルチモーダル呼び出しも可能)。
  • 非同期ツール呼び出しの使用、「コンテキストの腐敗」なしでの大規模コンテキストの管理、および型指定された再現可能な出力の生成。
  • 人間が検査したり、GEPA のような最適化ツールに供給したりできる完全なトレース (コード、ツール呼び出し、タイミング、トークン使用量、エラー) の出力。

どのような時に使うべきか

  • 複雑な文書やコードベースの調査 (監査、コンプライアンス、インシデント分析)。
  • 複数ファイルにわたるデータ抽出、墨消し、または変換パイプライン。
  • スプレッドシートを多用する財務モデルのワークフロー。
  • 最終的な回答の前に推論、分岐、または検証が必要なあらゆるタスク。

これは、単純な一問一答のチャットや、単一のLLM呼び出しで十分な決定論的なETLを目的としたものではありません。


🛠️ 主な機能 (READMEより)

機能 意味
ランタイム REPL モデルがサンドボックス内でPythonを記述・実行し、反復を通じて状態を保持する。
型指定された契約 DSPyシグネチャ (または単純な question -> answer 文字列) が入出力型を定義。サブモデル呼び出しはPydantic/DSPyで型チェックされる。
マルチモーダルサポート 画像やレンダリングされた文書ページを、ネイティブのプロバイダーAPIを使用してサブモデルに送信可能。
非同期ツール呼び出し WASMサンドボックス内での並行サブモデル呼び出しや外部ツール呼び出し。
スキルとツール RLMがインポートして使用できる、ドメイン固有の命令、PyPIパッケージ、ホスト側のユーティリティのバンドル。
観測可能性 実行ごとに、コード、出力、タイミング、トークン使用量、エラーを含む trace.json と evidence.json が生成される。
最適化対応 トレースをGEPAに供給し、スコアリングされた例からRLM戦略を自動的に改善可能。
サンドボックスバックエンド デフォルトのJSPI/Deno/Pyodideサンドボックス。Linux Pythonランナー用のオプションのDockerベース sbx バックエンド。
スプレッドシートスキル openpyxl、pandas、および数式評価ヘルパーを読み込む、スプレッドシート中心タスク用の組み込みスキル。
ライフサイクルコールバック 反復の開始/終了 (同期または非同期) にフックし、進捗のブロードキャスト、ログ記録、UIパイプラインとの統合を行う。

🚀 クイックスタート例 (READMEより)

import dspy
from predict_rlm import CtxStr, File, PredictRLM

class AnalyzeImages(dspy.Signature):
    """Analyze images and answer the query. Load each image as a base64 data
    URI and use predict() with dspy.Image to extract visual information."""
    images: list[File] = dspy.InputField()
    query: CtxStr = dspy.InputField()
    answer: str = dspy.OutputField()

rlm = PredictRLM(
    AnalyzeImages,
    lm="openai/gpt-5.4",
    sub_lm="openai/gpt-5.1",
)

result = rlm(
    images=[File(path="page.png")],
    query="Extract all visible text, then count each letter A‑Z (case‑insensitive).",
)

print(result.answer)

外部モデル (gpt‑5.4) がREPLを駆動し、画像分析呼び出しにはより狭いサブモデル (gpt‑5.1) が使用されます。


📂 プロジェクト構造 (READMEより推測)

  • predict_rlm/ – コアライブラリ (ランタイム、サンドボックスアダプター、DSPy統合、トレース処理)。
  • examples/ – エンドツーエンドのデモ:文書分析、墨消し、請求書処理、契約比較。各例は実行ごとのトレースを .run/<timestamp>/ に保存。
  • skills/ – 再利用可能なスキルバンドル (例: pdf, spreadsheet, rlm)。
  • tests/ – 広範なユニット、統合、およびバックエンド固有のテストスイート (ランタイム契約、GEPA、Codex LM、Dockerサンドボックス)。
  • docs/ – より詳細な設計ドキュメント (アーキテクチャ、観測可能性、カスタムパス入力)。
  • CI / パッケージング – GitHub Actions, Codecov, PyPI配布, オプションの拡張機能 (gepa, codex‑lm, sbx)。

🎯 ターゲットユーザー

  • AIエンジニア:単一のLLM呼び出しでは分岐ロジックを処理できない、複雑なRAGスタイルのパイプラインを構築するエンジニア。
  • データ運用/コンプライアンスチーム:監査可能で再現性のある文書処理ワークフローを必要とするチーム。
  • 研究者:再帰的言語モデル (Recursive Language Model) パラダイムを探求する研究者。
  • プロダクトチーム:Claude Code, Cursor, Codexのようなコーディングエージェントに「スキル」(例: スプレッドシートの更新) を公開したいチーム。

📦 インストールと拡張機能

uv add predict-rlm                 # core package
uv add "predict-rlm[gepa]"        # GEPA optimisation support
uv add "predict-rlm[codex-lm]"   # Codex‑backed LM and CLI
uv add "predict-rlm[sbx]"        # Docker sandbox backend

このライブラリは Codex LM バックエンド (gpt‑5.6‑terra など) で動作しますが、lm/sub_lm 引数を介してOpenAI互換のあらゆるモデルを指定することも可能です。


🧩 拡張性

  • 新しいスキルの追加 – PyPIパッケージ、カスタムツール、またはプロンプトテンプレートをバンドルし、PredictRLM を構築する際に skills= にリストします。
  • カスタムサンドボックス – バックエンド契約を実装し (ARCHITECTURE.md を参照)、sandbox_backend= を介してプラグインします。
  • コールバック – BaseCallback をサブクラス化し、on_rlm_iteration_start / on_rlm_iteration_end を実装して、UI更新、ログ記録、または外部の観測パイプラインに対応します。

📊 観測可能性とデバッグ

  • 人間が読めるカラー表示のトレース がstderrに出力されます (verbose=False で無効化可能)。
  • エクスポート可能なJSON:prediction.trace.to_exportable_json("trace.json") および prediction.evidence.to_exportable_json("evidence.json")。
  • ライブイベントシンク – コールバックは同じ構造化データをリアルタイムで受信します。

✅ 結論

predict‑rlm は、LLMをプログラム可能でステートフルなランタイムに変える、真にアクティブにメンテナンスされているオープンソースフレームワークです。モデルが反復的にコードを記述・実行し、より狭いサブモデルを呼び出し、完全に追跡可能で型指定された結果を生成する、新興の「再帰的言語モデル」ワークフローをターゲットにしています。READMEにはデモ、堅牢なテストスイート、オプションのDockerサンドボックス、最適化ツールとの統合ポイントが用意されており、洗練された監査可能なLLM駆動パイプラインを必要とするすべての人にとって確実な選択肢となります。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト