Spaces:
Runtime error
Runtime error
Al-Fathir
Refactor retrieval logic to return results directly and improve handling of 'all_source' parameter
5ddb1a4
from fastapi import FastAPI, HTTPException, Header | |
from utils.embedding_service import embed | |
from utils.retrieval_service import retrieve | |
from pydantic import BaseModel | |
import dotenv | |
import os | |
from fastapi.middleware.cors import CORSMiddleware | |
dotenv.load_dotenv() | |
API_KEY = os.getenv("BEARER_API_KEY") | |
app = FastAPI() | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=["*"], # Mengizinkan akses dari semua origin (bisa diganti dengan domain frontend) | |
allow_credentials=True, | |
allow_methods=["*"], # Mengizinkan semua method HTTP | |
allow_headers=["*"], # Mengizinkan semua header | |
) | |
class QueryRequest(BaseModel): | |
query: str | |
hadits: str | |
all_source: bool | |
async def search(query_request: QueryRequest, authorization: str = Header(None)): | |
if authorization != f"Bearer {API_KEY}": | |
raise HTTPException(status_code=403, detail="Unauthorized") | |
try: | |
query = query_request.query | |
hadits = query_request.hadits | |
# Proses embedding | |
embedding = embed(query) | |
print(hadits) | |
# Proses retrieval | |
results = retrieve(embedding,hadits,all_source=query_request.all_source) | |
return results | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=str(e)) | |