File size: 3,255 Bytes
461adca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71df805
 
 
 
 
 
 
 
 
 
 
 
 
461adca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
77
78
79
80
81
82
83
84
85
86
87
88
89
import os
from enum import Enum
from pathlib import Path
from dotenv import load_dotenv

# Load environment variables
load_dotenv()

# API Keys
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")

# Debug: Print key status (masked)
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
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
if GEMINI_API_KEY:
    from google import genai
    # New google.genai package - client-based approach
    genai_client = genai.Client(api_key=GEMINI_API_KEY)


class ModelProvider(str, Enum):
    OPENAI = "openai"
    ANTHROPIC = "anthropic"
    GEMINI = "gemini"
    DEEPSEEK = "deepseek"


# NOTE: All configuration values (AWS, LlamaIndex, Schemas, Models, etc.) are now 
# defined in config/environments/default.yaml to avoid duplication.
# This file only contains:
#   1. API key loading from environment variables
#   2. ModelProvider enum (Python-specific type)
#   3. Gemini client initialization
#   4. Environment validation function
#
# To access configuration: from config import get_settings
# To access models: from config import GenerationModelName, AnalysisModelName, DEFAULT_GENERATION_MODEL
# For backward compatibility, you can still: from config import BUCKET_NAME, LOCAL_DIR, etc.


# Check if required environment variables are set
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"))
    }

    # Check if at least one AI provider is available
    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"
            )

    # Check if AWS is required
    if require_aws and not status["aws"]:
        raise ValueError("AWS credentials (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) are required")

    return status