| | import os |
| | from enum import Enum |
| | from pathlib import Path |
| | from dotenv import load_dotenv |
| |
|
| | |
| | load_dotenv() |
| |
|
| | |
| | AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID") |
| | AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY") |
| | OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") |
| | ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY") |
| | DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY") |
| |
|
| | |
| | print("="*30) |
| | print("🔧 CONFIGURATION DEBUG") |
| | print(f"OPENAI_API_KEY: {'✅ Found' if OPENAI_API_KEY else '❌ Missing'}") |
| | if OPENAI_API_KEY: |
| | print(f" Length: {len(OPENAI_API_KEY)}") |
| | print(f" Prefix: {OPENAI_API_KEY[:5]}...") |
| |
|
| | print(f"ANTHROPIC_API_KEY: {'✅ Found' if ANTHROPIC_API_KEY else '❌ Missing'}") |
| | print(f"DEEPSEEK_API_KEY: {'✅ Found' if DEEPSEEK_API_KEY else '❌ Missing'}") |
| | print(f"GEMINI_API_KEY: {'✅ Found' if os.getenv('GEMINI_API_KEY') else '❌ Missing'}") |
| | print("="*30) |
| |
|
| | |
| | GEMINI_API_KEY = os.getenv("GEMINI_API_KEY") |
| | if GEMINI_API_KEY: |
| | from google import genai |
| | |
| | genai_client = genai.Client(api_key=GEMINI_API_KEY) |
| |
|
| |
|
| | class ModelProvider(str, Enum): |
| | OPENAI = "openai" |
| | ANTHROPIC = "anthropic" |
| | GEMINI = "gemini" |
| | DEEPSEEK = "deepseek" |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| | |
| | def validate_environment(require_ai_provider: bool = True, require_aws: bool = False): |
| | """ |
| | Validate environment variables. |
| | |
| | Args: |
| | require_ai_provider: If True, requires at least one AI provider API key |
| | require_aws: If True, requires AWS credentials |
| | |
| | Returns: |
| | dict: Status of each provider (available/missing) |
| | """ |
| | status = { |
| | "openai": bool(os.getenv("OPENAI_API_KEY")), |
| | "anthropic": bool(os.getenv("ANTHROPIC_API_KEY")), |
| | "gemini": bool(os.getenv("GEMINI_API_KEY")), |
| | "deepseek": bool(os.getenv("DEEPSEEK_API_KEY")), |
| | "aws": bool(os.getenv("AWS_ACCESS_KEY_ID") and os.getenv("AWS_SECRET_ACCESS_KEY")) |
| | } |
| |
|
| | |
| | if require_ai_provider: |
| | if not any([status["openai"], status["anthropic"], status["gemini"], status["deepseek"]]): |
| | raise ValueError( |
| | "At least one AI provider API key is required. Please set one of: " |
| | "OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, DEEPSEEK_API_KEY" |
| | ) |
| |
|
| | |
| | if require_aws and not status["aws"]: |
| | raise ValueError("AWS credentials (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) are required") |
| |
|
| | return status |