Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -4,6 +4,16 @@ from fastapi import FastAPI, Request
|
|
| 4 |
from sentence_transformers import SentenceTransformer, util
|
| 5 |
import torch
|
| 6 |
import requests
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
|
| 8 |
# π Paksa semua cache ke path aman di Hugging Face Spaces
|
| 9 |
HF_CACHE = "/tmp/hf"
|
|
@@ -21,6 +31,13 @@ if os.path.exists(f"{HF_CACHE}/models--sentence-transformers--paraphrase-MiniLM-
|
|
| 21 |
SUPABASE_URL = "https://olbjfxlclotxtnpjvpfj.supabase.co"
|
| 22 |
SUPABASE_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9sYmpmeGxjbG90eHRucGp2cGZqIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTIyMzYwMDEsImV4cCI6MjA2NzgxMjAwMX0.7q_o5DCFEAAysnWXMChH4MI5qNhIVc4OgpT5JvgYxc0"
|
| 23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
# π Gunakan model kecil dan cepat
|
| 25 |
model = SentenceTransformer("sentence-transformers/paraphrase-MiniLM-L3-v2")
|
| 26 |
|
|
@@ -43,6 +60,7 @@ def get_faq_from_supabase(uid):
|
|
| 43 |
return []
|
| 44 |
|
| 45 |
@app.post("/predict")
|
|
|
|
| 46 |
async def predict(request: Request):
|
| 47 |
body = await request.json()
|
| 48 |
uid, question = body.get("data", [None, None])
|
|
|
|
| 4 |
from sentence_transformers import SentenceTransformer, util
|
| 5 |
import torch
|
| 6 |
import requests
|
| 7 |
+
# Rate_limit
|
| 8 |
+
from slowapi import Limiter, _rate_limit_exceeded_handler
|
| 9 |
+
from slowapi.util import get_remote_address
|
| 10 |
+
from slowapi.errors import RateLimitExceeded
|
| 11 |
+
|
| 12 |
+
# Inisialisasi FastAPI dan Limiter
|
| 13 |
+
limiter = Limiter(key_func=get_remote_address)
|
| 14 |
+
app = FastAPI()
|
| 15 |
+
app.state.limiter = limiter
|
| 16 |
+
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)
|
| 17 |
|
| 18 |
# π Paksa semua cache ke path aman di Hugging Face Spaces
|
| 19 |
HF_CACHE = "/tmp/hf"
|
|
|
|
| 31 |
SUPABASE_URL = "https://olbjfxlclotxtnpjvpfj.supabase.co"
|
| 32 |
SUPABASE_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9sYmpmeGxjbG90eHRucGp2cGZqIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTIyMzYwMDEsImV4cCI6MjA2NzgxMjAwMX0.7q_o5DCFEAAysnWXMChH4MI5qNhIVc4OgpT5JvgYxc0"
|
| 33 |
|
| 34 |
+
|
| 35 |
+
# Inisialisasi rate limiter dan FastAPI
|
| 36 |
+
limiter = Limiter(key_func=get_remote_address)
|
| 37 |
+
app = FastAPI()
|
| 38 |
+
app.state.limiter = limiter
|
| 39 |
+
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)
|
| 40 |
+
|
| 41 |
# π Gunakan model kecil dan cepat
|
| 42 |
model = SentenceTransformer("sentence-transformers/paraphrase-MiniLM-L3-v2")
|
| 43 |
|
|
|
|
| 60 |
return []
|
| 61 |
|
| 62 |
@app.post("/predict")
|
| 63 |
+
@limiter.limit("5/minute")
|
| 64 |
async def predict(request: Request):
|
| 65 |
body = await request.json()
|
| 66 |
uid, question = body.get("data", [None, None])
|