artitude-backend / src /config.py
David0dods's picture
Upload 39 files
49e0df2 verified
Raw
History Blame Contribute Delete
1.83 kB
import os
from dotenv import load_dotenv
load_dotenv(override=True)
class Config:
EMBEDDING_MODEL_NAME = os.getenv("EMBEDDING_MODEL_NAME", "text-embedding-3-small")
EMBEDDING_DIMENSION = int(os.getenv("EMBEDDING_DIMENSION", "1536"))
EMBEDDING_MODEL_VERSION = os.getenv("EMBEDDING_MODEL_VERSION", "v1")
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "")
GITHUB_TOKEN = os.getenv("GITHUB_TOKEN", "")
VISION_MODEL_NAME = os.getenv("VISION_MODEL_NAME", "openai/gpt-4o")
ROUTER_MODEL_NAME = os.getenv("ROUTER_MODEL_NAME", "openai/gpt-4o")
# not using fallbacks right now
VISION_MODEL_FALLBACKS = []
ROUTER_MODEL_FALLBACKS = []
MAX_RETRIES = 2
RETRY_BASE_DELAY = 5 # seconds, exponential backoff
config = Config()
def resolve_ai_client(ai_provider: str = None, ai_api_key: str = None):
"""
Return (client, model_name) based on the user's provider choice and key.
Falls back to the .env defaults when no overrides are given.
"""
from openai import OpenAI
provider = (ai_provider or "").lower().strip()
key = (ai_api_key or "").strip()
if provider == "gemini":
api_key = key or config.GEMINI_API_KEY
if not api_key:
raise ValueError("No Gemini API key provided and none configured on the server.")
client = OpenAI(
base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
api_key=api_key,
)
return client, "gemini-2.0-flash"
# Default: gpt4o via GitHub Models
api_key = key or config.GITHUB_TOKEN
if not api_key:
raise ValueError("No GPT-4o API key provided and none configured on the server.")
client = OpenAI(
base_url="https://models.github.ai/inference",
api_key=api_key,
)
return client, "openai/gpt-4o"