Spaces:
Sleeping
Sleeping
File size: 1,857 Bytes
9cf13c3 a03c764 78388f3 e0b229b 9b17a72 54cad9d bcab1b7 a03c764 9b17a72 a03c764 54cad9d 9b17a72 bcab1b7 9b17a72 bcab1b7 a03c764 9b17a72 bcab1b7 9b17a72 78388f3 29cd84d 9b17a72 9cf13c3 9b17a72 9cf13c3 78388f3 bcab1b7 78388f3 bcab1b7 |
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 |
from fastapi import FastAPI, Request
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import uvicorn
app = FastAPI(title="AI Detector API")
# Load the model once at startup
MODEL_NAME = "roberta-base-openai-detector"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME)
model.eval()
def get_ai_probability(text: str) -> float:
"""Return AI probability (0–100%) for the given text."""
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=512)
with torch.no_grad():
logits = model(**inputs).logits
probs = torch.softmax(logits, dim=1)
ai_score = probs[0][1].item() * 100
return round(ai_score, 2)
@app.post("/analyze")
async def analyze_text(request: Request):
"""
Example body:
{
"text": "Your text here"
}
"""
data = await request.json()
text = data.get("text", "").strip()
if not text:
return {"error": "No text provided"}
paragraphs = [p.strip() for p in text.split("\n") if p.strip()]
results = []
for i, para in enumerate(paragraphs, start=1):
ai_score = get_ai_probability(para)
results.append({
"paragraph": i,
"ai_score": ai_score,
"human_score": round(100 - ai_score, 2),
"content_preview": para[:200] + ("..." if len(para) > 200 else "")
})
overall = sum([r["ai_score"] for r in results]) / len(results)
return {
"overall_ai_score": round(overall, 2),
"overall_human_score": round(100 - overall, 2),
"paragraphs": results
}
@app.get("/")
async def root():
return {"message": "AI Detector API is running. Use POST /analyze"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860)
|