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
Click into any row for the deep-dive page — install flow, dataset, eval and train commands, and key code snippets. The full source, including the launch scripts, lives at
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:
Then:
- 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.

