# Retool: from SFT to RL This example demonstrates how to use the retool functionality for tool-enabled language model generation. ## Overview The retool example provides: - Safe Python code execution in a sandbox environment - Tool registry for managing available tools - Integration with language model generation - Reward calculation for tool usage ## Files - `generate_with_retool.py`: Main generation function with tool support - `tool_sandbox.py`: Tool execution and safety management - `sft_data_processing.py`: Process SFT dataset ## Usage 1. Setup and download datasets: ```bash cd slime pip install -e . --no-deps # For SFT part, you can use later model to RL directly and skip SFT. hf download --repo-type dataset JoeYing/ReTool-SFT --local-dir /root/JoeYing/ReTool-SFT hf download Qwen/Qwen3-4B-Instruct-2507 --local-dir /root/Qwen/Qwen3-4B-Instruct-2507 # For RL part hf download --repo-type dataset zhuzilin/dapo-math-17k --local-dir /root/dapo-math-17k hf download --repo-type dataset zhuzilin/aime-2024 --local-dir /root/aime-2024 # download our SFT model if you want to skip SFT hf download font-info/qwen3-4b-sft-SGLang-RL --local-dir /root/font-info/qwen3-4b-sft ``` 2. Create torch dist For SFT ```bash source scripts/models/qwen3-4B.sh PYTHONPATH=/root/Megatron-LM python tools/convert_hf_to_torch_dist.py \ ${MODEL_ARGS[@]} \ --hf-checkpoint /root/Qwen/Qwen3-4B-Instruct-2507 \ --rotary-base 5000000 \ --save /root/Qwen/Qwen3-4B-Instruct-2507_torch_dist ``` Or RL only ```bash source scripts/models/qwen3-4B.sh PYTHONPATH=/root/Megatron-LM python tools/convert_hf_to_torch_dist.py \ ${MODEL_ARGS[@]} \ --hf-checkpoint /root/font-info/qwen3-4b-sft \ --rotary-base 5000000 \ --save /root/font-info/qwen3-4b-sft_torch_dist ``` 3. SFT: ```bash python examples/retool/sft_data_processing.py bash examples/retool/retool_qwen3_4b_sft.sh ``` 4. RL: ```bash bash examples/retool/retool_qwen3_4b_rl.sh ``` 5. Use in your training scripts by importing the generate function: ```python from generate_with_retool import generate, reward_func ``` ## Tool Format The system uses the following tool format: ``` You may call one or more functions to assist with the user query. You are provided with function signatures within XML tags: {"type": "function", "function": {"name": "code_interpreter", "description": "A tool for executing code.", "parameters": {"type": "object", "properties": {"code": {"type": "string", "description": "The code to execute."}}, "required": ["code"]}}} For each function call, return a json object with function name and arguments within XML tags: {"name": , "arguments": } ``` ## Safety Features - Code execution in isolated sandbox - Memory and time limits - Dangerous operation detection - Allowed module restrictions