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 기반 파이프라인이 필요한 모든 사람에게 확실한 선택이 됩니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트