File size: 2,274 Bytes
892f06a
f3f0a69
892f06a
 
f3f0a69
56325dc
892f06a
 
f3f0a69
892f06a
f3f0a69
 
892f06a
56325dc
 
 
 
 
 
892f06a
4f034fb
 
c2f9ec8
56325dc
edfcf73
 
8f771eb
 
892f06a
 
 
 
 
 
 
 
 
 
 
 
 
cca9b28
edfcf73
892f06a
edfcf73
 
892f06a
edfcf73
4f034fb
edfcf73
8f771eb
 
1131989
c2f9ec8
 
4f034fb
 
 
8f771eb
c2f9ec8
4f034fb
1131989
4f034fb
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
# === Imports ===
import os
import time
import requests
from dotenv import load_dotenv
from supabase import create_client
from sentence_transformers import SentenceTransformer
from openai import OpenAI

# === Load Environment Variables ===
load_dotenv()

# === Supabase Configuration ===
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)

# === Embedding Model for Scoring ===
embedding_model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")

# === Hugging Face API Configuration (for summarization/other) ===
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}"}

# === Hugging Face Model Endpoints ===
HF_MODELS = {
    "pegasus": "https://router.huggingface.co/hf-inference/models/google/pegasus-xsum",
    "gemma": "tgi"  # Used as the model name with OpenAI-compatible client
}

# === OpenAI-Compatible Client (for Gemma) ===
client = OpenAI(
    base_url="https://vzwjawyxvu030jsw.us-east-1.aws.endpoints.huggingface.cloud/v1/",
    api_key=HF_API_TOKEN,
)

# === Optional: General Query Helper (for non-chat models like pegasus) ===
def query(payload, model="pegasus", retries=5, delay=5):
    """
    Sends a request to the Hugging Face API with retries and error handling.
    """
    if model not in HF_MODELS:
        raise ValueError(f"Invalid model name: {model}. Available: {list(HF_MODELS.keys())}")

    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 in (401, 402):
                print(f"❌ HF error {response.status_code}")
                return None
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            print(f"⚠️ Attempt {attempt+1} failed: {e}")
            time.sleep(delay)
    print("🚨 All retry attempts failed.")
    return None