TalentLensAI / config.py
Johnny
added generate questions function with gemma, huggging face client
949011b
raw
history blame
2.47 kB
import os
from dotenv import load_dotenv
from supabase import create_client
import requests
import time
from sentence_transformers import SentenceTransformer # Import the transformer model
# Load environment variables from .env file
load_dotenv()
# Supabase API Config
SUPABASE_URL = "https://lmpazoxzucnlqqxjoihi.supabase.co"
SUPABASE_KEY = os.getenv("SUPABASE_API_KEY")
if not SUPABASE_KEY:
raise ValueError("SUPABASE_KEY is not set in the environment variables.")
supabase = create_client(SUPABASE_URL, SUPABASE_KEY)
# Load Sentence Transformer Model (scoring)
embedding_model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
HF_MODELS = {
"bart": "https://router.huggingface.co/hf-inference/models/facebook/bart-large-cnn",
"gemma": "https://router.huggingface.co/nebius/v1/chat/completions"
}
HF_API_TOKEN = os.getenv("HF_API_TOKEN")
if not HF_API_TOKEN:
raise ValueError("Missing Hugging Face API key. Check your .env file.")
HF_HEADERS = {"Authorization": f"Bearer {HF_API_TOKEN}"}
def query(payload, model="bart", retries=5, delay=5):
"""
Sends a request to the Hugging Face API with retries and better error handling.
"""
if model not in HF_MODELS:
raise ValueError(f"Invalid model name: {model}. Choose 'bart' for summarization.")
api_url = HF_MODELS[model]
for attempt in range(retries):
try:
response = requests.post(api_url, headers=HF_HEADERS, json=payload, timeout=10)
if response.status_code == 401:
print(f"❌ API Key issue: Check HF_API_TOKEN. Unauthorized (401).")
return None
if response.status_code == 402:
print(f"πŸ’° Payment Required (402). Free tier may not support this model.")
return None
if response.status_code in [500, 503]:
print(f"⚠️ Server error ({response.status_code}) on attempt {attempt + 1}. Retrying in {delay} seconds...")
time.sleep(delay)
continue
response.raise_for_status()
return response.json()
except requests.exceptions.Timeout:
print(f"⏳ Timeout error on attempt {attempt + 1}. Retrying...")
time.sleep(delay)
except requests.exceptions.RequestException as e:
print(f"❌ API Request Failed: {e}")
time.sleep(delay)
print("🚨 All retry attempts failed.")
return None