A cookbook is a small Python package that ships anDocumentation Index
Fetch the complete documentation index at: https://docs.rllm-project.com/llms.txt
Use this file to discover all available pages before exploring further.
AgentFlow + an Evaluator together with a prepare_data.py and a pair of train_{tinker,verl}.sh scripts. Each cookbook is self-contained: install it once with pip install -e cookbooks/<name>, and the rLLM CLI discovers the agent and the evaluator by name through Python entry points.
Episode. See AgentFlow & Evaluator for the protocol.
Available cookbooks
| Cookbook | Pattern | Description |
|---|---|---|
frozenlake | Multi-turn gym | Navigates procedurally-generated FrozenLake grids; demonstrates direct integration with a Gymnasium environment. |
math | Single-turn | Solves competition / textbook math with \boxed{} answer extraction. |
math_tool_agent | Multi-turn + tool | Solves math with a calculator tool via native OpenAI function calling. |
deepcoder | Single-turn | Competition coding with \“python```` answer extraction; the evaluator runs the code against hidden tests. |
finqa | Multi-turn + 4 tools | Financial QA over SEC 10-K tables: get_table_names / get_table_info / sql_query / calculator, judge-LLM grading. |
geo3k | VLM single-turn | Multimodal geometry on the Geometry3K dataset. |
solver_judge_flow | Multi-agent | Solver–judge pattern on the countdown task. |
cookbooks/ on GitHub.
Anatomy of a cookbook
Every cookbook follows the same shape:Entry-point declaration
Inpyproject.toml, the cookbook registers its flow and evaluator under two well-known groups:
--agent <name> and --evaluator <name> flags resolve through these groups (see rllm.eval.agent_loader and rllm.eval.evaluator_loader).
Module-name collision gotcha
Top-level Python module names must be unique across all installed cookbooks —pip install -e puts each cookbook’s modules at the import root. If two cookbooks both ship a top-level evaluator.py, only one wins.
Convention: prefix module names with the cookbook name. cookbooks/math/ ships math_flow.py + math_eval.py, not flow.py + evaluator.py. cookbooks/finqa/ ships finqa_flow.py + finqa_eval.py + finqa_tools.py + finqa_constants.py.
Install + run
Authoring a new cookbook
The cleanest starting point is to copy an existing cookbook that matches your interaction shape:| Your agent looks like… | Copy from |
|---|---|
| One LLM call, parse answer | cookbooks/math |
| Multi-turn with a tool | cookbooks/math_tool_agent |
| Multi-turn with multiple tools + complex grading | cookbooks/finqa |
| Drives a Gym environment | cookbooks/frozenlake |
| Solver + judge multi-agent | cookbooks/solver_judge_flow |
- Rename the modules (prefix with your cookbook name to avoid collisions).
- Rewrite the flow body — call the LLM, drive your loop, return an
Episodewith the model’s final answer inepisode.artifacts["answer"]. - Rewrite the evaluator — read
artifacts["answer"], return anEvalOutput. - Update the entry-point names in
pyproject.toml. pip install --no-deps -e cookbooks/<name>and test withrllm eval.

