Spaces:
Running
Running
| import torch | |
| from transformers import AutoTokenizer, DebertaV2Config, DebertaV2ForSequenceClassification | |
| from huggingface_hub import hf_hub_download | |
| from safetensors.torch import load_file | |
| MODEL = "desklib/ai-text-detector-v1.01" | |
| tokenizer = AutoTokenizer.from_pretrained(MODEL) | |
| config = DebertaV2Config.from_pretrained(MODEL, num_labels=1) | |
| model = DebertaV2ForSequenceClassification(config) | |
| sd_path = hf_hub_download(MODEL, "model.safetensors") | |
| sd = load_file(sd_path) | |
| new_sd = { (k.replace('model.', 'deberta.', 1) if k.startswith('model.') else k): v for k, v in sd.items() } | |
| model.load_state_dict(new_sd, strict=False) | |
| model.eval() | |
| text_human = "Honestly, I think we should just go for pizza because it's easier for everyone." | |
| text_ai = "In conclusion, the multifaceted benefits of artificial intelligence are significant in the modern landscape." | |
| def get_score(text): | |
| inputs = tokenizer(text, return_tensors="pt") | |
| with torch.no_grad(): | |
| out = model(**inputs) | |
| # The config has num_labels=1, so it might be a regressor/sigmoid | |
| # or the code in new_forensic_engine.py handles it. | |
| # In new_forensic_engine.py: | |
| # if probs3.shape[0] >= 2: s3 = float(probs3[1].item()) | |
| # else: s3 = float(torch.sigmoid(out.logits[0][0]).item()) | |
| logits = out.logits | |
| if logits.shape[1] >= 2: | |
| probs = torch.softmax(logits, dim=1)[0] | |
| return probs[1].item() | |
| else: | |
| return torch.sigmoid(logits[0][0]).item() | |
| print(f"Human score (AI prob): {get_score(text_human)}") | |
| print(f"AI score (AI prob): {get_score(text_ai)}") | |