scripts/run_all_benchmarks.sh
#!/usr/bin/env bash
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the terms described in the LICENSE file in
# the root directory of this source tree.

#
# Run all verified llama-verifications benchmarks for a given model/provider.
#
# Usage: ./run_all_verified.sh <model-id> <provider-id>
# (<model-id> should be the provider-specific model ID)
#
# Prerequisites:
#   git clone https://github.com/meta-llama/llama-verifications.git
#   cd llama-verifications
#   uv tool install --with-editable . --python 3.12 llama-verifications
#
# -----------------------------------------------------------------------------

set -euo pipefail

###############################################################################
# 0. Parse args
###############################################################################
[[ $# -eq 2 ]] || {
  echo "Usage: $0 <model-id> <provider-id>"
  exit 1
}
MODEL=$1
PROVIDER=$2

###############################################################################
# 1. Verify the model is offered by this provider
###############################################################################
MODELS=$(
  uvx llama-verifications list-models "$PROVIDER" |
  awk -F'│' 'NF>1 {gsub(/^[ \t]+|[ \t]+$/, "", $2); print $2}'
)
echo "$MODELS" | grep -Fqx -- "$MODEL" ||
  { echo "ERROR: model '$MODEL' not found for provider '$PROVIDER'"; exit 1; }

###############################################################################
# 2. Grab the list of VERIFIED benchmarks (JSON-less ASCII table → awk)
###############################################################################
BENCHMARKS=$(
  uvx llama-verifications list-benchmarks |
  awk -F'│' 'NF>1 {gsub(/^[ \t]+|[ \t]+$/, "", $2);
                   if ($2 && $2 != "Benchmark ID") print $2}'
)

echo "▶ Running verified benchmarks for model: $MODEL  provider: $PROVIDER"
echo "▶ Benchmarks: $BENCHMARKS"
echo

###############################################################################
# 3. Run benchmarks
###############################################################################
for BM in $BENCHMARKS; do
  echo "──▶ $BM"
  uvx --with 'git+https://github.com/ShishirPatil/gorilla.git@main#subdirectory=berkeley-function-call-leaderboard' \
    llama-verifications run-benchmarks \
      --benchmarks "$BM" \
      --model      "$MODEL" \
      --provider   "$PROVIDER"
  echo
done

###############################################################################
# 5. Generate the consolidated report
###############################################################################
echo "▶ Generating report…"
uvx llama-verifications generate-benchmarks-report

echo "✔ All benchmarks complete for $MODEL"
