|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
|
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 .models import REPLAction, REPLObservation, REPLState, CodeBlockResult |
|
|
from .client import REPLEnv |
|
|
from .prompts import ( |
|
|
|
|
|
RLM_SYSTEM_PROMPT, |
|
|
RLM_SYSTEM_PROMPT_QWEN, |
|
|
|
|
|
QueryMetadata, |
|
|
build_rlm_system_prompt, |
|
|
build_user_prompt, |
|
|
build_initial_prompt, |
|
|
|
|
|
extract_code_blocks, |
|
|
format_observation, |
|
|
) |
|
|
|
|
|
__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_observation", |
|
|
] |
|
|
|