|
|
from transformers import AutoModelForSequenceClassification, AutoTokenizer, pipeline |
|
|
|
|
|
|
|
|
class EndpointHandler: |
|
|
def __init__(self, path=""): |
|
|
|
|
|
self.model = AutoModelForSequenceClassification.from_pretrained( |
|
|
path, |
|
|
ignore_mismatched_sizes=True |
|
|
) |
|
|
self.tokenizer = AutoTokenizer.from_pretrained(path) |
|
|
|
|
|
|
|
|
self.pipeline = pipeline( |
|
|
"text-classification", |
|
|
model=self.model, |
|
|
tokenizer=self.tokenizer |
|
|
) |
|
|
|
|
|
|
|
|
self.labels = { |
|
|
"AI": "نص مكتوب بالذكاء الاصطناعي 🤖", |
|
|
"HUMAN": "نص بشري حقيقي 🧠" |
|
|
} |
|
|
|
|
|
def __call__(self, data): |
|
|
|
|
|
inputs = data.get("inputs", data if isinstance(data, str) else "") |
|
|
|
|
|
|
|
|
outputs = self.pipeline(inputs) |
|
|
|
|
|
|
|
|
result = outputs[0] |
|
|
label = result["label"] |
|
|
score = round(result["score"] * 100, 2) |
|
|
|
|
|
|
|
|
message = f"{self.labels.get(label, label)} (نسبة التأكد: {score}%)" |
|
|
|
|
|
|
|
|
return [{ |
|
|
"label": label, |
|
|
"score": score, |
|
|
"message": message |
|
|
}] |
|
|
|