CodeScribe / codescribe /config.py
Rahul-Samedavar's picture
allset
3e802a5
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