menamiai / test_api_keys.py
dfdfdsfgs's picture
Add Hugging Face Spaces frontend with API key fallback system
4588d9f
#!/usr/bin/env python3
"""
Test script to validate API keys for TheoremExplainAgent
Usage: python test_api_keys.py
"""
import os
import sys
from dotenv import load_dotenv
def test_gemini_api():
"""Test Gemini API key(s)"""
print("Testing Gemini API...")
try:
import google.generativeai as genai
import random
# Load environment variables
load_dotenv()
# Get API key with fallback support
gemini_key_env = os.getenv("GEMINI_API_KEY") or os.getenv("GOOGLE_API_KEY")
if not gemini_key_env:
print("❌ No GEMINI_API_KEY found in environment")
print(" Please set GEMINI_API_KEY in your .env file")
print(" Get your API key from: https://aistudio.google.com/app/apikey")
return False
# Handle multiple keys
if ',' in gemini_key_env:
keys = [key.strip() for key in gemini_key_env.split(',') if key.strip()]
print(f" Found {len(keys)} API keys to test")
api_key = random.choice(keys)
print(f" Testing random key: {api_key[:20]}...")
else:
api_key = gemini_key_env
print(f" Testing key: {api_key[:20]}...")
# Configure and test
genai.configure(api_key=api_key)
model = genai.GenerativeModel('gemini-1.5-pro')
# Simple test
response = model.generate_content("Say hello in one word")
print(f"βœ… Gemini API works! Response: {response.text.strip()}")
return True
except Exception as e:
print(f"❌ Gemini API test failed: {e}")
return False
def test_elevenlabs_api():
"""Test ElevenLabs API key"""
print("\nTesting ElevenLabs API...")
try:
import requests
# Load environment variables
load_dotenv()
api_key = os.getenv("ELEVENLABS_API_KEY")
if not api_key:
print("❌ No ELEVENLABS_API_KEY found in environment")
print(" Please set ELEVENLABS_API_KEY in your .env file")
print(" Get your API key from: https://elevenlabs.io/app/settings/api-keys")
return False
print(f" Testing key: {api_key[:20]}...")
# Test API with a simple request
headers = {
"Accept": "application/json",
"xi-api-key": api_key
}
response = requests.get("https://api.elevenlabs.io/v1/user", headers=headers)
if response.status_code == 200:
user_data = response.json()
print(f"βœ… ElevenLabs API works! User: {user_data.get('email', 'Unknown')}")
return True
else:
print(f"❌ ElevenLabs API test failed: {response.status_code} - {response.text}")
return False
except Exception as e:
print(f"❌ ElevenLabs API test failed: {e}")
return False
def main():
"""Main test function"""
print("πŸ” Testing API Keys for TheoremExplainAgent\n")
# Check if .env file exists
if not os.path.exists('.env'):
print("❌ No .env file found!")
print(" Please create a .env file based on .env.template")
print(" Run: cp .env.template .env")
return
gemini_ok = test_gemini_api()
elevenlabs_ok = test_elevenlabs_api()
print("\n" + "="*50)
if gemini_ok and elevenlabs_ok:
print("βœ… All API keys are working correctly!")
print(" You can now run generate_video.py")
elif gemini_ok:
print("⚠️ Gemini API works, but ElevenLabs API failed")
print(" Video generation will work but TTS might fail")
elif elevenlabs_ok:
print("⚠️ ElevenLabs API works, but Gemini API failed")
print(" TTS will work but video generation will fail")
else:
print("❌ Both API keys failed")
print(" Please check your .env file and API keys")
if __name__ == "__main__":
main()