Skip to main content

What is a rollout processor?

A rollout processor is how Eval Protocol turns input rows into trajectories:
  • Takes a batch of EvaluationRows
  • Calls a model, agent, or environment as needed
  • Returns updated rows with new messages attached
You choose one rollout processor per @evaluation_test, and Eval Protocol handles:
  • Concurrency and retries
  • Logging and cost tracking
  • Cleanup of external resources (e.g., MCP servers)
For the full catalog and configuration options, see the reference page. This guide focuses on choosing and using a processor quickly.

Quick decision guide

  • Already have model outputs?NoOpRolloutProcessor
  • Single chat completion per row?SingleTurnRolloutProcessor
  • Tools / function calling via MCP?AgentRolloutProcessor
  • Interactive MCP “gym” environment?MCPGymRolloutProcessor
  • Already have an in‑production agent/service you want to eval or train?RemoteRolloutProcessor (see the next page: Remote Rollout Processor)
The examples below all assume you are inside an @evaluation_test.

Single-turn model calls

Use SingleTurnRolloutProcessor for classic “prompt → answer” tasks:
tutorial_single_turn.py
  • Good for QA, grading, and static benchmarks
  • For more knobs (e.g., extra_body.reasoning_effort), see the full reference.

No-op processor for offline evaluation

If you have pre-generated model outputs, use NoOpRolloutProcessor:
tutorial_noop.py
This is ideal when you don’t want Eval Protocol to call any models.

Agents and tools via MCP

Use AgentRolloutProcessor when your eval requires tools or function calling:
tutorial_agent.py
  • The agent will:
    • Call the model with available tools
    • Execute any returned tool calls
    • Loop until there are no more tools to call or steps is reached

MCP gym environments

Use MCPGymRolloutProcessor for interactive environments exposed via MCP:
tutorial_gym.py
This is the pattern used by benchmarks like TauBench or custom gym‑style environments.

When to read the full reference

Stay on this page until you need:
  • Fine‑grained RolloutProcessorConfig usage
  • Pydantic AI–specific integrations
  • Detailed concurrency and retry behavior
  • CLI flags (pytest plugin) for CI tuning
When you do, jump to the Rollout Processors reference for complete details and edge cases.