Spaces:
Sleeping
Sleeping
from fastapi import FastAPI,Header,HTTPException,Depends,WebSocket,WebSocketDisconnect | |
from fastapi.middleware.cors import CORSMiddleware | |
app = FastAPI() | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=["*"], # Allow all origins | |
allow_methods=["GET", "POST"], # Allow only GET and POST methods | |
allow_headers=["*"], # Allow all headers | |
) | |
from fastapi import FastAPI, HTTPException | |
from pydantic import BaseModel | |
import torch | |
from transformers import RobertaTokenizer, RobertaForSequenceClassification | |
app = FastAPI() | |
# Load the tokenizer | |
tokenizer = RobertaTokenizer.from_pretrained('roberta-base') | |
# Load the model | |
model_path="model_ai_detection" | |
model = RobertaForSequenceClassification.from_pretrained(model_path) | |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
model.to(device) | |
model.eval() | |
class TextData(BaseModel): | |
text: str | |
async def predict(data: TextData): | |
inputs = tokenizer(data.text, return_tensors="pt", padding=True, truncation=True) | |
inputs = {k: v.to(device) for k, v in inputs.items()} | |
with torch.no_grad(): | |
outputs = model(**inputs) | |
probs = torch.nn.functional.softmax(outputs.logits, dim=-1) | |
ai_prob = probs[0][1].item() * 100 # Probability of the text being AI-generated | |
message = "The text is likely generated by AI." if ai_prob > 50 else "The text is likely generated by a human." | |
return { | |
"score": ai_prob, | |
"message": message | |
} | |
async def read_root(): | |
return {"message": "Ready to go"} | |
if __name__ == "__main__": | |
import uvicorn | |
uvicorn.run(app, host="0.0.0.0", port=8000) |