Cloud LLM Evaluation Tools — Bedrock, Azure AI Foundry & Vertex AI¶
What this is: how the three major clouds let you evaluate LLM quality as a managed service — Amazon Bedrock Evaluations, Azure AI Foundry evaluation, and Google Vertex AI's Gen AI Evaluation Service — and how they compare to open-source frameworks like Ragas and DeepEval. Written from the QA/evaluation angle: what each service measures, how it fits a CI pipeline, and when to choose cloud vs open source.
Prerequisites: LLM & Agent Evaluation Matrix (the metrics), Enterprise LLM Platforms (the platforms themselves).
1. Why Cloud Evaluation Services Exist¶
Open-source eval frameworks (Ragas, DeepEval, promptfoo) run your code against your judge model. The clouds productised the same idea as a managed service:
- No harness to build — upload a prompt dataset, pick metrics, get a report.
- Curated judge models & rubrics — the LLM-as-judge prompts are pre-engineered and calibrated.
- Governance built in — results land in the same console as your deployment, with IAM, audit trails, and region controls (matters in regulated environments).
- Human-review workflows — managed UIs for SME review teams, not just automated scoring.
flowchart LR
DS["📋 Your dataset<br/>(prompts + optional references)"] --> SVC["☁️ Managed evaluation job<br/>Bedrock / AI Foundry / Vertex"]
TGT["🤖 Target: hosted model,<br/>RAG pipeline, or<br/>bring-your-own responses"] --> SVC
SVC --> J["⚖️ Judge model + curated rubrics<br/>(LLM-as-a-judge)"]
J --> REP["📊 Scored report in console<br/>+ exportable results"]
REP --> GATE["🚦 CI/CD threshold gate"]
2. Amazon Bedrock Evaluations¶
Bedrock's evaluation service (LLM-as-a-judge generally available since 2025) evaluates models and full RAG systems (Knowledge Bases) with automated, judge-based, and human-based modes.
| Mode | What it does |
|---|---|
| Automatic (programmatic) | Classic NLP metrics (accuracy, robustness, toxicity) on built-in or custom datasets |
| LLM-as-a-judge | A curated judge model scores outputs on quality metrics — correctness, completeness, style/tone — and responsible-AI metrics — harmfulness, answer refusal |
| Human evaluation | Managed workflow for your own SME review team with custom metrics |
| RAG evaluation | Evaluates retrieve-and-generate quality for Knowledge Bases (context relevance, groundedness-style checks) |
QA-relevant details:
- Bring your own inference responses — you can evaluate outputs from any model or system hosted anywhere by including the responses in your input dataset. Your system under test does not have to run on Bedrock.
- Datasets are JSONL in S3; jobs run via console or
boto3/CLI — scriptable into CI. - Judge-based jobs cost a fraction of human review (AWS cites large cost reductions vs human evaluation at scale).
# CI-friendly: kick off a Bedrock LLM-as-judge evaluation job
import boto3
bedrock = boto3.client("bedrock")
job = bedrock.create_evaluation_job(
jobName="rag-regression-2026-07",
evaluationConfig={"automated": {
"datasetMetricConfigs": [{
"taskType": "QuestionAndAnswer",
"dataset": {"name": "golden-set",
"datasetLocation": {"s3Uri": "s3://evals/golden.jsonl"}},
"metricNames": ["Builtin.Correctness", "Builtin.Completeness",
"Builtin.Harmfulness"],
}],
"evaluatorModelConfig": {"bedrockEvaluatorModels": [
{"modelIdentifier": "anthropic.claude-sonnet"}]}, # the judge
}},
inferenceConfig={"models": [{"bedrockModel":
{"modelIdentifier": "my-app-model"}}]},
outputDataConfig={"s3Uri": "s3://evals/results/"},
roleArn="arn:aws:iam::123456789:role/BedrockEvalRole",
)
3. Azure AI Foundry Evaluation¶
Azure AI Foundry (the evolution of Azure AI Studio) bakes evaluation into the project workflow: evaluate in the playground, in bulk runs, or locally in code via the azure-ai-evaluation SDK — then track results in the portal.
Built-in evaluator families:
| Family | Example evaluators |
|---|---|
| RAG / quality (AI-assisted) | Groundedness, Relevance, Coherence, Fluency, Retrieval quality |
| Similarity / classic | Similarity, F1, BLEU/ROUGE-style comparisons to a reference |
| Risk & safety | Violence, sexual, self-harm, hate/unfairness, protected-material, jailbreak detection |
| Agentic (newer) | Intent resolution, tool-call accuracy, task adherence |
| Custom | Your own prompt-based or code-based evaluators |
# azure-ai-evaluation SDK — run evaluators locally / in CI
from azure.ai.evaluation import evaluate, GroundednessEvaluator, RelevanceEvaluator
model_config = {"azure_endpoint": ENDPOINT, "azure_deployment": "gpt-judge"}
result = evaluate(
data="golden_set.jsonl", # query, context, response columns
evaluators={
"groundedness": GroundednessEvaluator(model_config),
"relevance": RelevanceEvaluator(model_config),
},
)
assert result["metrics"]["groundedness.mean"] >= 4.0 # CI threshold gate
QA-relevant details:
- The same evaluators run pre-production (bulk eval on datasets) and in production (continuous evaluation / monitoring) — one metric vocabulary across the lifecycle.
- Safety evaluators use Azure's content-safety stack — useful for regulated sign-off evidence.
- Results are versioned per run in the Foundry portal — an audit trail for "quality at release" questions.
4. Google Vertex AI — Gen AI Evaluation Service¶
Vertex AI's evaluation service centres on judge-model scoring with pointwise and pairwise modes, tightly integrated with the Vertex SDK.
| Concept | Meaning |
|---|---|
| Pointwise | Judge scores one model's output against criteria (e.g. groundedness 1–5) |
| Pairwise | Judge compares two models/prompts head-to-head and picks a winner — ideal for "is the new prompt actually better?" A/B decisions |
| Bias controls | Response flipping and multi-sampling reduce judge position/order bias |
| Metric types | Model-based (fluency, coherence, safety, groundedness, instruction following) + computation-based (BLEU, ROUGE, exact match) + custom rubrics |
# Vertex AI rapid evaluation — pairwise prompt comparison
from vertexai.evaluation import EvalTask, PairwiseMetric
eval_task = EvalTask(
dataset=golden_df, # prompts + responses A/B
metrics=[PairwiseMetric(metric="pairwise_summarization_quality")],
)
result = eval_task.evaluate()
# result tells you the win-rate of candidate B over baseline A
QA-relevant details: pairwise mode is the cleanest managed answer to prompt-regression testing — "did this prompt change make answers better or worse?" — which is awkward to do rigorously by hand.
5. Comparison & Choosing¶
| Bedrock Evaluations | Azure AI Foundry | Vertex AI Eval | |
|---|---|---|---|
| LLM-as-judge | ✅ GA, curated judges | ✅ AI-assisted evaluators | ✅ default judge, pointwise + pairwise |
| RAG-specific eval | ✅ Knowledge Bases eval | ✅ Groundedness/Retrieval evaluators | ✅ grounding metrics |
| Safety metrics | ✅ harmfulness, refusal | ✅ full content-safety family + jailbreak | ✅ safety criteria |
| Human review workflow | ✅ managed | ✅ portal-based | ✅ via labelling services |
| Evaluate external systems | ✅ bring-your-own responses | ✅ SDK runs anywhere | ✅ SDK-based, bring your data |
| Local/CI SDK | boto3 (job-based) | azure-ai-evaluation (runs locally) |
Vertex SDK |
| Standout | RAG + BYO responses + cost-efficient judge | one metric vocabulary dev→prod + safety depth | pairwise A/B with bias controls |
Cloud service vs open source (Ragas / DeepEval)¶
| Choose cloud eval when… | Choose open source when… |
|---|---|
| Your stack already lives on that cloud (IAM, audit, data residency) | You need portability across providers |
| You need managed human-review workflows | You want full control of judge prompts & metric logic |
| Governance/audit evidence matters (regulated releases) | You want free/cheap local runs in every PR |
| You want zero eval-harness maintenance | You need custom metrics beyond the built-ins |
Pragmatic pattern: open-source evals (fast, free, per-PR) as the inner loop; a cloud evaluation job as the release gate — the versioned, auditable "quality at sign-off" record. They complement rather than compete.
6. CI/CD Integration Pattern¶
Regardless of vendor, the pipeline shape is identical to any LLM eval gating:
flowchart LR
PR["PR: prompt / model / RAG change"] --> FAST["⚡ Inner loop<br/>Ragas / DeepEval on 50-case subset"]
FAST -->|pass| FULL["☁️ Cloud eval job<br/>full golden set + safety metrics"]
FULL --> GATE{"thresholds met?<br/>e.g. groundedness ≥ 4.0<br/>harmfulness = 0"}
GATE -->|yes| SHIP["✅ merge / deploy<br/>report archived as evidence"]
GATE -->|no| FIX["❌ block + scored failures<br/>back to author"]
Checklist for any of the three services:
- Golden dataset versioned in repo / S3 / blob — not ad hoc
- Judge model pinned (a judge upgrade is an environment change — re-baseline)
- Thresholds explicit and reviewed like code
- Results exported and archived per release (audit trail)
- Safety metrics always on, not only quality metrics
Where to Go Next¶
- From ML to Generative AI — why these evaluation needs exist at all
- LLM & Agent Evaluation Matrix — the metric catalogue behind these services
- Ragas FAQ · DeepEval FAQ — the open-source inner loop
- Enterprise LLM Platforms — the platforms these evals plug into
- Official docs: Bedrock Evaluations · Azure AI Foundry evaluation · Vertex AI Gen AI evaluation