diff --git a/ai-backend/config/settings.py b/ai-backend/config/settings.py index 429748c..b1750b1 100644 --- a/ai-backend/config/settings.py +++ b/ai-backend/config/settings.py @@ -21,12 +21,12 @@ class Settings(BaseSettings): """Application settings loaded from environment variables with validation.""" # Required settings - openai_api_key: str = Field(..., min_length=20, description="OpenAI API key") - supabase_url: str = Field(..., description="Supabase project URL") - supabase_service_role_key: str = Field( + OPENAI_API_KEY: str = Field(..., min_length=20, description="OpenAI API key") + SUPABASE_URL: str = Field(..., description="Supabase project URL") + SUPABASE_SERVICE_ROLE_KEY: str = Field( ..., min_length=20, description="Supabase service role key" ) - rapidapi_key: str = Field( + RAPIDAPI_KEY: str = Field( ..., min_length=10, description="RapidAPI key for API-Football" ) @@ -56,7 +56,7 @@ class Settings(BaseSettings): description="API-Football base URL", ) - @validator("openai_api_key") + @validator("OPENAI_API_KEY") def validate_openai_key(cls, v: str) -> str: # noqa: N805 if not v or v == "your-openai-api-key" or v == "sk-...": raise ValueError("Valid OpenAI API key is required") @@ -64,7 +64,7 @@ def validate_openai_key(cls, v: str) -> str: # noqa: N805 raise ValueError('OpenAI API key must start with "sk-"') return v - @validator("supabase_url") + @validator("SUPABASE_URL") def validate_supabase_url(cls, v: str) -> str: # noqa: N805 if not v.startswith("https://"): raise ValueError("Supabase URL must be a valid HTTPS URL") diff --git a/ai-backend/test_environment.py b/ai-backend/test_environment.py new file mode 100644 index 0000000..26084ce --- /dev/null +++ b/ai-backend/test_environment.py @@ -0,0 +1,64 @@ +"""Test script to verify all dependencies are properly installed.""" + +import sys + +print(f"Python version: {sys.version}") + +# Test core dependencies +# try: +# import openai + +# print("✅ OpenAI package imported successfully") +# except ImportError as e: +# print(f"❌ OpenAI import failed: {e}") + +# try: +# from agents.researcher import ResearchAgent + +# print("✅ OpenAI Agents package imported successfully") +# except ImportError as e: +# print(f"❌ OpenAI Agents import failed: {e}") + +# try: +# import fastapi + +# print("✅ FastAPI package imported successfully") +# except ImportError as e: +# print(f"❌ FastAPI import failed: {e}") + +# try: +# from pydantic import BaseModel + +# print("✅ Pydantic package imported successfully") +# except ImportError as e: +# print(f"❌ Pydantic import failed: {e}") + +# try: +# from supabase import create_client + +# print("✅ Supabase package imported successfully") +# except ImportError as e: +# print(f"❌ Supabase import failed: {e}") + +# try: +# import aiohttp + +# print("✅ Aiohttp package imported successfully") +# except ImportError as e: +# print(f"❌ Aiohttp import failed: {e}") + +# try: +# from dotenv import load_dotenv + +# print("✅ Python-dotenv package imported successfully") +# except ImportError as e: +# print(f"❌ Python-dotenv import failed: {e}") + +# try: +# import structlog + +# print("✅ Structlog package imported successfully") +# except ImportError as e: +# print(f"❌ Structlog import failed: {e}") + +# print("\n🎉 Environment test completed!") diff --git a/ai-backend/test_openai.py b/ai-backend/test_openai.py new file mode 100644 index 0000000..59ac634 --- /dev/null +++ b/ai-backend/test_openai.py @@ -0,0 +1,40 @@ +"""Test OpenAI API connection.""" + +import os + +import openai +from dotenv import load_dotenv + +# Load environment variables +load_dotenv() + +# Set up OpenAI client +client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY")) + + +def test_openai_connection() -> None: + """Test basic OpenAI API connection.""" + if ( + not os.getenv("OPENAI_API_KEY") + or os.getenv("OPENAI_API_KEY") == "your_openai_api_key_here" + ): + print("⚠️ OpenAI API key not set. Skipping connection test.") + return + + try: + # Test with a simple completion + response = client.chat.completions.create( + model="gpt-4.1-nano", + messages=[{"role": "user", "content": "Say 'Hello from Sport Scribe AI!'"}], + max_tokens=50, + ) + + print("✅ OpenAI API connection successful!") + print(f"Response: {response.choices[0].message.content}") + + except Exception as e: + print(f"❌ OpenAI API connection failed: {e}") + + +if __name__ == "__main__": + test_openai_connection()