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.Install Beam Verifier
Requires Python 3.12 or later and uv.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 needbeam-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.
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
Acceptstokens (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
Acceptsmessages, 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 Harmonyprompt, 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.
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 greenverify 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-tokenssends 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=5for 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.<run>/inspect_logs/<dataset-id>/.
Resume
--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.