| | |
| | """ |
| | Script to map all :latest models to their underlying versions. |
| | Usage: |
| | export CBORG_API_KEY=... |
| | python map_latest_models.py |
| | """ |
| | import os |
| | import sys |
| | from openai import OpenAI |
| |
|
| | def test_model_mapping(client, model_id): |
| | """Test a model and return the underlying model name.""" |
| | try: |
| | response = client.chat.completions.create( |
| | model=model_id, |
| | messages=[{"role": "user", "content": "Hi"}], |
| | max_tokens=5 |
| | ) |
| | return response.model |
| | except Exception as e: |
| | return f"ERROR: {str(e)[:100]}" |
| |
|
| | def main(): |
| | api_key = os.environ.get('CBORG_API_KEY') |
| | if not api_key: |
| | print("Error: CBORG_API_KEY environment variable not set.") |
| | sys.exit(1) |
| |
|
| | client = OpenAI( |
| | api_key=api_key, |
| | base_url="https://api.cborg.lbl.gov" |
| | ) |
| | |
| | |
| | try: |
| | response = client.models.list() |
| | all_models = [model.id for model in response.data] |
| | except Exception as e: |
| | print(f"Error fetching model list: {e}") |
| | sys.exit(1) |
| | |
| | |
| | latest_models = [m for m in all_models if ':latest' in m] |
| | |
| | |
| | base_models = [] |
| | for latest in latest_models: |
| | base = latest.replace(':latest', '') |
| | if base in all_models: |
| | base_models.append(base) |
| | |
| | print("=" * 100) |
| | print("MAPPING OF :latest MODELS TO UNDERLYING VERSIONS") |
| | print("=" * 100) |
| | |
| | results = [] |
| | |
| | |
| | print(f"\nTesting {len(latest_models)} models with :latest suffix...") |
| | for model in sorted(latest_models): |
| | print(f" Testing {model}...", end=" ", flush=True) |
| | underlying = test_model_mapping(client, model) |
| | results.append((model, underlying)) |
| | print("β") |
| | |
| | |
| | print(f"\nTesting {len(base_models)} corresponding base models (without :latest)...") |
| | for model in sorted(base_models): |
| | print(f" Testing {model}...", end=" ", flush=True) |
| | underlying = test_model_mapping(client, model) |
| | results.append((model, underlying)) |
| | print("β") |
| | |
| | |
| | print("\n" + "=" * 100) |
| | print("RESULTS") |
| | print("=" * 100) |
| | |
| | print("\nπ Models with :latest suffix:") |
| | print("-" * 100) |
| | for model, underlying in results: |
| | if ':latest' in model: |
| | if underlying.startswith('ERROR'): |
| | print(f"β {model:<50} {underlying}") |
| | else: |
| | status = "β" if model != underlying else "=" |
| | print(f" {model:<50} {status} {underlying}") |
| | |
| | print("\nπ Base models (without :latest):") |
| | print("-" * 100) |
| | for model, underlying in results: |
| | if ':latest' not in model: |
| | if underlying.startswith('ERROR'): |
| | print(f"β {model:<50} {underlying}") |
| | else: |
| | status = "β" if model != underlying else "=" |
| | print(f" {model:<50} {status} {underlying}") |
| | |
| | |
| | print("\nπ COMPARISON: Do :latest and base versions map to the same model?") |
| | print("-" * 100) |
| | |
| | latest_map = {m: u for m, u in results if ':latest' in m} |
| | base_map = {m: u for m, u in results if ':latest' not in m} |
| | |
| | for latest, underlying_latest in sorted(latest_map.items()): |
| | base = latest.replace(':latest', '') |
| | if base in base_map: |
| | underlying_base = base_map[base] |
| | if underlying_latest == underlying_base: |
| | print(f"β {latest:<50} SAME as {base}") |
| | print(f" ββ Both map to: {underlying_latest}") |
| | else: |
| | print(f"β οΈ {latest:<50} DIFFERENT from {base}") |
| | print(f" ββ :latest maps to: {underlying_latest}") |
| | print(f" ββ base maps to: {underlying_base}") |
| | |
| | print("\n" + "=" * 100) |
| |
|
| | if __name__ == '__main__': |
| | main() |
| |
|