| |
| |
| |
| |
| |
|
|
| """ |
| REPL Environment for OpenEnv. |
| |
| A Python REPL environment for training language models on code execution tasks, |
| based on the Recursive Language Models (RLM) paradigm. |
| |
| This environment allows language models to: |
| - Execute Python code in a sandboxed REPL |
| - Work with large contexts loaded as variables |
| - Finalize answers via FINAL(), FINAL_VAR(), or answer dict pattern |
| - Optionally make recursive LLM calls via llm_query() / llm_query_batched() |
| |
| Example: |
| >>> from repl_env import REPLEnv, REPLAction |
| >>> |
| >>> # Start from Docker |
| >>> env = REPLEnv.from_docker_image("repl-env:latest") |
| >>> |
| >>> # Reset with context |
| >>> result = env.reset(context="Hello World", task_prompt="Count characters") |
| >>> |
| >>> # Execute code |
| >>> result = env.execute("count = len(context)") |
| >>> result = env.execute("print(f'FINAL({count})')") |
| >>> |
| >>> # Check result |
| >>> print(f"Done: {result.done}, Answer: {result.observation.metadata['final_answer']}") |
| >>> |
| >>> env.close() |
| |
| References: |
| - RLM Paper: https://arxiv.org/abs/2512.24601 |
| - Prime Intellect Blog: https://www.primeintellect.ai/blog/rlm |
| - Alex Zhang Blog: https://alexzhang13.github.io/blog/2025/rlm/ |
| """ |
|
|
| from .client import REPLEnv |
| from .models import CodeBlockResult, REPLAction, REPLObservation, REPLState |
| from .prompts import ( |
| build_initial_prompt, |
| build_rlm_system_prompt, |
| build_user_prompt, |
| |
| extract_code_blocks, |
| format_observations, |
| |
| QueryMetadata, |
| |
| RLM_SYSTEM_PROMPT, |
| RLM_SYSTEM_PROMPT_QWEN, |
| ) |
|
|
| __all__ = [ |
| |
| "REPLAction", |
| "REPLObservation", |
| "REPLState", |
| "CodeBlockResult", |
| |
| "REPLEnv", |
| |
| "RLM_SYSTEM_PROMPT", |
| "RLM_SYSTEM_PROMPT_QWEN", |
| |
| "QueryMetadata", |
| "build_rlm_system_prompt", |
| "build_user_prompt", |
| "build_initial_prompt", |
| |
| "extract_code_blocks", |
| "format_observations", |
| ] |
|
|