Skip to main content
The beam-verifier CLI has two parts, each run against a live Beam endpoint.

Verify

Checks functional correctness of your endpoint.Needs: a /v1 base URL that serves chat completions.

Evaluate

Evaluates your endpoint on main benchmarks.Needs: a /v1 base URL.
Start with verify to catch any API and conformance problems. Use evaluate to measure benchmark scores and compare against our reference scores.

Install Beam Verifier

Requires Python 3.12 or later and uv.
To confirm the install worked, run a command that needs no endpoint:
If it prints the dataset table, you’re set.

Verify your endpoint

beam-verifier verify checks that your deployment complies with our chat API contract. It runs the functional conformance suite against a live /v1/chat/completions endpoint: parameter acceptance, request validation, chat, tool calling, structured output, tool_choice, multi-turn, and streaming. Evaluate assumes a green verify run first.

Run the required tests

You need beam-verifier installed. In the commands below, replace http://localhost:8000/v1 with your endpoint’s base URL and my-model with your model ID. If your endpoint requires an API key, pass it with --api-key.
--model-name must match the ID the endpoint serves under, not the checkpoint name.
A conforming endpoint passes every case. The expected result is 100%. The required tests check several aspects of the API, split into three suites: Each suite runs in both transport modes, buffered and streaming, wherever the behavior should not depend on transport.

Optional tests

These run only when their flag is passed to the command (--parse-url, --format-url, --completions-url); otherwise they are skipped. They hit a parser, formatter and completions endpoint to localize any failure that is not detectable from the chat endpoint.

Parser

Accepts tokens (integer token IDs) and tools (OpenAI-style tool definitions). Returns a top-level assistant message with role: "assistant", content (string or null), and, when present, reasoning_content (string or null) and tool_calls (array or null). Each tool call must have type: "function" and a function containing name and JSON-encoded string arguments, with values matching the supplied tool schema. Returns HTTP 400 for malformed or truncated tool-call inputs. Example request and response for POST /parse:

Formatter

Accepts messages, optional tools, and the formatting options add_generation_prompt, add_special_tokens, and chat_template_kwargs. Applies the endpoint’s chat template and tokenizer and returns tokens: a nonempty array of integer IDs matching the fixtures exactly, including special tokens. Returns HTTP 400 for invalid chat inputs. Example request and response for POST /format:

Raw completions

Generates directly from a preformatted Harmony prompt, honoring max_tokens, temperature, stream: false, and n: 1. Returns choices with exactly one entry containing text (string) and finish_reason ("stop" or "length"). Honors skip_special_tokens: false and no_stop_trim: true to preserve all Harmony special tokens, including the final <|return|> or <|call|>. Truncated completions fail the suite.

Read the result

By default results are stored under .runs/<timestamp>-<model>-verify/:

Evaluate your endpoint

beam-verifier eval scores your deployment on knowledge/reasoning benchmarks (GPQA-Diamond and AIME, through InspectAI). Use these scores to compare against our published results.

Pick datasets

Reference scores are Beam’s BF16 results from Beam’s model card, measured at temperature 0.7 and top_p 0.99. The model card also lists FP8 and NVFP4 scores.
These are the datasets eval runs when you name none. list-datasets also shows optional ones without a reference score: GSM8K and three InfiniteBench long-context sets.

Run an eval

You need a green verify run first. Start with a smoke run of five examples per dataset, to check connectivity and scoring before committing to a full run:
Smoke run

Configure the run

  • --parallel-tasks — how many tasks run concurrently against the endpoint. It has the biggest effect on wall-clock time. A task may make more than one request.
  • --reasoning-effort, --temperature, --max-tokens, --top-p — sent with each request. Each dataset’s preset sets temperature, top_p and reasoning effort, and a value you pass overrides it. An unset --max-tokens sends nothing.
  • --model-kwargs KEY=VALUE — merged into every model request, wherever the request is made from.
  • --harness-kwargs KEY=VALUE — forwarded verbatim to the eval library’s own API (epochs=4, retry_on_error=5 for InspectAI).
--model-kwargs and --harness-kwargs each accept multiple KEY=VALUE pairs after one flag, with YAML values. Repeating the flag also works. Run beam-verifier eval --help for all options.

Knowledge and reasoning benchmarks

These run through InspectAI and need nothing beyond the endpoint.
InspectAI logs land in <run>/inspect_logs/<dataset-id>/.

Resume

The dataset list comes from the run and cannot change, and --base-url / --model-name must match the saved ones. The API key is never written to the artifacts, so supply it again. Saved settings are reused; a setting named again overrides the saved value, and the resumed run reports both the override and anything it could not apply.

Read the result and view your traces

These commands generate a detailed report with all the traces and detailed results per task:
  • An ungraded task counts as zero in the aggregate score. If no task was graded at all, the run reports no metrics.
Last modified on October 16, 2026