Skip to main content

sdk-ai-bot-run-evaluation

Run Azure SDK QA bot evaluations on curated datasets locally, including a single test case. WHEN: "run evaluation", "run eval", "evaluate the bot", "run perf evaluation", "run basic evaluation", "run a single test case", "evaluate one question", "run all scenarios", "score the bot", "run evals locally". DO NOT USE FOR: preparing or uploading datasets, pipeline troubleshooting, knowledge-graph indexing.

Source facts

Repository
Azure/azure-sdk-tools
Last source activity
July 2, 2026 at 05:50
Detected SKILL.md language
English
Stars
134
Forks
262

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
2 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
sdk-ai-bot-run-evaluation
license
MIT
metadata
{"version":"1.0.0","distribution":"local"}
description
Run Azure SDK QA bot evaluations on curated datasets locally, including a single test case. WHEN: "run evaluation", "run eval", "evaluate the bot", "run perf evaluation", "run basic evaluation", "run a single test case", "evaluate one question", "run all scenarios", "score the bot", "run evals locally". DO NOT USE FOR: preparing or uploading datasets, pipeline troubleshooting, knowledge-graph indexing.
compatibility
local azure-sdk-tools clone, python 3.12 venv, az login, bot /completion endpoint
# Run QA Bot Evaluation Run the Azure SDK QA bot evaluation locally with `evals_run.py` in the package `tools/sdk-ai-bots/azure-sdk-qa-bot-evaluation`. It calls the bot `/completion` endpoint concurrently to collect answers, then grades them with the Foundry builtin LLM evaluators. Run all commands from `tools/sdk-ai-bots/azure-sdk-qa-bot-evaluation` with the package `.venv` active and `az login` done. See [running evaluations](references/running-evaluations.md) for flags, the bot endpoint options, single-case and all-scenario recipes, and how to read results. ## Triggers USE FOR: run an evaluation on a curated dataset (basic or perf); run a single scenario; run all scenarios; run a single test case; grade against the local or deployed bot; inspect results and the pass/fail gate WHEN: "run evaluation", "run eval", "evaluate the bot", "run perf evaluation", "run basic evaluation", "run a single test case", "evaluate one question", "run all scenarios", "score the bot", "run evals locally" DO NOT USE FOR: preparing or uploading datasets, pipeline troubleshooting, knowledge-graph indexing ## Rules - `--dataset` accepts a local `evaluation_datasets/<target>/<scenario>.jsonl` path **or** a Foundry asset name `qa-bot-<target>-<scenario>[:version]` (the asset name resolves to the local file; the version is informational). - There is **no single-testcase flag**. To run **one case**, make a one-row JSONL file and pass it as `--dataset` (see the reference). - Use `--is_ci False` locally (uses `az login`); CI uses pipeline identity. - The bot endpoint comes from `BOT_SERVICE_ENDPOINT`; if unset it defaults to the **local** `http://localhost:8089` — start the agent `server.py` first for local runs. - Default evaluators are all seven; pass `--evaluators` to subset. ## Environment Confirm and remind the user to set these before running (loads `.env`; copy and fill `tools/sdk-ai-bots/azure-sdk-qa-bot-evaluation/env-variables`): | Purpose | Variables | | --------------- | -------------------------------------------------------------------------------------------- | | Foundry grading | `AZURE_AI_PROJECT_ENDPOINT`, `AZURE_EVALUATION_MODEL_NAME`, `EVALUATE_THRESHOLD` (default 3) | | Deployed bot | `BOT_SERVICE_ENDPOINT` + (`BOT_AGENT_TOKEN_RESOURCE` or `BOT_AGENT_ACCESS_TOKEN`) | | Local bot | none — run agent `server.py` (defaults to `http://localhost:8089`) | | Tenant routing | `STORAGE_BLOB_ACCOUNT`, `BOT_CONFIG_CONTAINER`, `BOT_CONFIG_CHANNEL_BLOB` | | Auth | `az login` (with `--is_ci False`) | ## Common commands ```bash # One scenario (all evaluators), against the local server, no baseline gate: python evals_run.py --dataset evaluation_datasets/perf/typespec.jsonl \ --is_ci False --baseline_check False --cache_result full # Same via the asset name: python evals_run.py --dataset "qa-bot-perf-typespec:latest" --is_ci False --baseline_check False # Subset of evaluators: python evals_run.py --dataset "qa-bot-basic-python:latest" \ --evaluators "bot_evals,groundedness" --is_ci False --baseline_check False ``` For a **single test case**, **all scenarios**, the **deployed bot**, and reading results / the gate, see [running evaluations](references/running-evaluations.md). ## Steps 1. Ensure the required env vars are set; for a local run, start the agent `server.py`. 2. Choose the dataset: a scenario file, an asset name, or a one-row file for a single case. 3. Run `python evals_run.py --dataset <...> --is_ci False` (add `--baseline_check False` for ad-hoc runs, `--evaluators` to subset). 4. Open the printed Foundry **Report URL** and review the per-case score table. 5. With `--cache_result full`, inspect `cache/<scenario>-*.json` for per-case and failed-case detail.
View on GitHub