File size: 2,807 Bytes
00bd2b1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/env python3
"""List available models for the configured GOOGLE_API_KEY.



Run:

  $env:GOOGLE_API_KEY="your_key_here"

  python .\scripts\list_models.py



This prints a sample of models you can set as MODEL_NAME.

"""
import os
import sys
import json

try:
    from langchain_google_genai import GoogleGenerativeAI
except Exception as e:
    print("Missing dependency: langchain_google_genai (or import failed):", e)
    sys.exit(2)


def main():
    key = os.getenv("GOOGLE_API_KEY")
    if not key:
        print("ERROR: Set the GOOGLE_API_KEY environment variable before running this script.")
        print("In PowerShell: $env:GOOGLE_API_KEY=\"your_key_here\"")
        print("In Bash/Mac/Linux: export GOOGLE_API_KEY=\"your_key_here\"")
        return

    print("🔍 Connecting to Google Generative AI...")
    client = GoogleGenerativeAI(google_api_key=key)
    
    try:
        print("🔄 Fetching available models...")
        models = client.list_models()
    except Exception as e:
        print("❌ Failed to list models:", e)
        print("\n💡 Troubleshooting tips:")
        print("   1. Check that your API key is valid and properly set")
        print("   2. Ensure you have internet connectivity")
        print("   3. Check if there are any firewall restrictions")
        return

    print("\n✅ Available models:")
    print("=" * 60)
    
    # models may be a list of strings or dict-like objects; print readable representation
    try:
        model_list = []
        for i, m in enumerate(models):
            if hasattr(m, 'name'):
                # It's likely a Model object
                model_name = m.name.replace('models/', '') if m.name.startswith('models/') else m.name
                model_list.append(model_name)
                print(f"{i+1:2d}. {model_name}")
            else:
                # It's likely a string or dict
                model_str = str(m)
                model_name = model_str.replace('models/', '') if model_str.startswith('models/') else model_str
                model_list.append(model_name)
                print(f"{i+1:2d}. {model_name}")
                
        print(f"\n📊 Total models found: {len(model_list)}")
    except TypeError:
        print(models)
    
    print("\n📝 To use a specific model, set the MODEL_NAME environment variable:")
    print("PowerShell: $env:MODEL_NAME=\"model_name_from_list\"")
    print("Bash/Linux: export MODEL_NAME=\"model_name_from_list\"")
    
    print("\n⭐ Recommended models:")
    recommended = [m for m in model_list if any(r in m.lower() for r in ['gemini-1.5', 'gemini-pro', 'gemma'])]
    for model in recommended[:5]:
        print(f"  • {model}")

if __name__ == "__main__":
    main()