File size: 2,472 Bytes
f3f0a69
 
56325dc
edfcf73
8f771eb
4f034fb
f3f0a69
 
 
 
56325dc
 
 
 
 
 
 
4f034fb
 
 
edfcf73
949011b
 
 
edfcf73
 
56325dc
edfcf73
 
 
8f771eb
 
1131989
edfcf73
1131989
edfcf73
 
1131989
edfcf73
4f034fb
edfcf73
8f771eb
 
1131989
edfcf73
8f771eb
1131989
4f034fb
 
 
1131989
4f034fb
edfcf73
1131989
 
4f034fb
 
edfcf73
4f034fb
 
edfcf73
1131989
 
 
 
8f771eb
1131989
4f034fb
19ea0c5
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
64
65
66
67
68
69
70
71
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