File size: 1,232 Bytes
3e802a5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
from dataclasses import dataclass, field
from dotenv import load_dotenv
from typing import List

@dataclass
class APIKey:
    provider: str
    key: str
    model: str

    def __repr__(self):
        return f"APIKey(provider='{self.provider}', model='{self.model}')"

@dataclass
class Config:
    api_keys: List[APIKey] = field(default_factory=list)

def load_config() -> Config:
    """Loads API keys from .env file into a Config object."""
    load_dotenv()
    
    config = Config()
    
    # Load Groq keys (GROQ_API_KEY_1, GRO-API_KEY_2, etc.)
    i = 1
    while True:
        key = os.getenv(f"GROQ_API_KEY_{i}")
        if not key:
            break
        config.api_keys.append(APIKey(provider="groq", key=key, model="llama3-70b-8192"))
        i += 1

    # Load Gemini keys (GEMINI_API_KEY_1, etc.)
    i = 1
    while True:
        key = os.getenv(f"GEMINI_API_KEY_{i}")
        if not key:
            break
        config.api_keys.append(APIKey(provider="gemini", key=key, model="gemini-1.5-flash"))
        i += 1
        
    if not config.api_keys:
        print("Warning: No API keys found in .env file. Please create a .env file with GROQ_API_KEY_1 or GEMINI_API_KEY_1.")
        
    return config