Spaces:
Runtime error
Runtime error
import os | |
from fastapi import FastAPI, Header, HTTPException, Depends | |
from pydantic import BaseModel | |
from text_humanizer import TextHumanizer, download_nltk_resources | |
from text_detector import AITextDetector | |
import spacy | |
API_KEY = os.environ.get("API_KEY", "dev-key") | |
PORT = int(os.environ.get("PORT", 7860)) | |
app = FastAPI() | |
humanizer = None | |
detector = None | |
# ========================= | |
# Request / Response Models | |
# ========================= | |
class HumanizeReq(BaseModel): | |
text: str | |
use_passive: bool = False | |
use_synonyms: bool = False | |
class DetectReq(BaseModel): | |
text: str | |
class DetectResp(BaseModel): | |
summary: str | |
overall_ai_probability: float | |
category_distribution: dict | |
metrics: dict | |
interpretation: str | |
label: str | |
# ========================= | |
# API Key verification | |
# ========================= | |
def verify_key(x_api_key: str = Header(None)): | |
if x_api_key != API_KEY: | |
raise HTTPException(status_code=403, detail="Forbidden") | |
return True | |
# ========================= | |
# Routes | |
# ========================= | |
def greet_json(): | |
return {"Hello": "World!"} | |
def startup(): | |
download_nltk_resources() | |
try: | |
spacy.load("en_core_web_sm") | |
except OSError: | |
spacy.cli.download("en_core_web_sm") | |
global humanizer, detector | |
humanizer = TextHumanizer() | |
detector = AITextDetector() # <-- init detector here | |
def humanize(req: HumanizeReq, _=Depends(verify_key)): | |
return { | |
"humanized": humanizer.humanize_text( | |
req.text, | |
req.use_passive, | |
req.use_synonyms | |
) | |
} | |
def detect(req: DetectReq, _=Depends(verify_key)): | |
""" | |
Detect whether the text is AI-generated or human-written. | |
""" | |
report = detector.detect(req.text) | |
return DetectResp(**report) | |
# if __name__ == "__main__": | |
# import uvicorn | |
# uvicorn.run(app, host="0.0.0.0", port=PORT) | |