73 lines
2.4 KiB
Bash
Executable File
73 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Generate model TOML files for Cloudflare AI Gateway
|
|
#
|
|
# This script runs the generation pipeline:
|
|
# 1. Fetch models from Cloudflare AI Gateway API
|
|
# 2. generate_model_names.sh - Updates model_names.json with new model IDs
|
|
# 3. generate_model_toml.sh - Generates TOML files for each model
|
|
#
|
|
# Required environment variables:
|
|
# CLOUDFLARE_API_TOKEN - Your Cloudflare API token
|
|
# CLOUDFLARE_ACCOUNT_ID - Your Cloudflare account ID
|
|
# CLOUDFLARE_GATEWAY_ID - Your AI Gateway name/ID
|
|
#
|
|
# Usage:
|
|
# CLOUDFLARE_API_TOKEN=xxx CLOUDFLARE_ACCOUNT_ID=xxx CLOUDFLARE_GATEWAY_ID=xxx ./generate_models.sh
|
|
#
|
|
|
|
set -eo pipefail
|
|
|
|
# =============================================================================
|
|
# Step 1: Fetch models from Cloudflare AI Gateway
|
|
# =============================================================================
|
|
|
|
echo "=== Step 1: Fetching models from Cloudflare AI Gateway ==="
|
|
|
|
# =============================================================================
|
|
# Main script
|
|
# =============================================================================
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROVIDER_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
DATA_DIR="${PROVIDER_DIR}/data"
|
|
API_RESPONSE_FILE="${DATA_DIR}/api_response.json"
|
|
|
|
# Validate required environment variables
|
|
if [[ -z "${CLOUDFLARE_API_TOKEN:-}" ]]; then
|
|
echo "Error: CLOUDFLARE_API_TOKEN environment variable is required" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -z "${CLOUDFLARE_ACCOUNT_ID:-}" ]]; then
|
|
echo "Error: CLOUDFLARE_ACCOUNT_ID environment variable is required" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -z "${CLOUDFLARE_GATEWAY_ID:-}" ]]; then
|
|
echo "Error: CLOUDFLARE_GATEWAY_ID environment variable is required" >&2
|
|
exit 1
|
|
fi
|
|
|
|
API_URL="https://gateway.ai.cloudflare.com/v1/${CLOUDFLARE_ACCOUNT_ID}/${CLOUDFLARE_GATEWAY_ID}/compat/models"
|
|
|
|
mkdir -p "${DATA_DIR}"
|
|
RESPONSE=$(curl -s -H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" "${API_URL}")
|
|
|
|
# Check if the response is valid JSON with data
|
|
if ! echo "${RESPONSE}" | jq -e '.data' > /dev/null 2>&1; then
|
|
echo "Error: Invalid API response or no data returned" >&2
|
|
echo "Response: ${RESPONSE}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
MODEL_COUNT=$(echo "${RESPONSE}" | jq '.data | length')
|
|
|
|
if [[ "${MODEL_COUNT}" -eq 0 ]]; then
|
|
echo "Error: No models found in API response" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Found ${MODEL_COUNT} models from API"
|
|
echo "${RESPONSE}" > "${API_RESPONSE_FILE}"
|
|
echo "Saved API response to ${API_RESPONSE_FILE}" |