import pathlib import gradio as gr import torch from scipy.special import softmax from transformers import AutoTokenizer, AutoModelForSequenceClassification # load model MODEL_PATH = pathlib.Path("data") / "roberta-large-wmt" tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH) model = AutoModelForSequenceClassification.from_pretrained(MODEL_PATH) model.to("cuda" if torch.cuda.is_available() else "cpu") def detect(text: str) -> str: inputs = tokenizer(text, return_tensors="pt") with torch.no_grad(): logits = model(**inputs).logits predicted_class_id = logits.argmax(dim=1).item() label = model.config.id2label[predicted_class_id] result = "machine-generated" if label == "0" else "human-generated" return ", ".join( [ f"The text is {result}", f"with a certainty of ${100 * softmax(logits, axis=1)[0][int(label)]:.2f}%", ] ) with gr.Blocks() as demo: gr.Markdown( """ # Hello! This is the demo for G3Detector. """ ) inp = gr.Textbox(label="Text", placeholder="Paste text here...") out = gr.Textbox(label="Result") detect_btn = gr.Button("Detect") detect_btn.click(fn=detect, inputs=inp, outputs=out, api_name="G3Detector") demo.launch()