File size: 1,723 Bytes
b0e99ab 0895697 b0e99ab 0895697 b0e99ab 0895697 b0e99ab 0895697 b0e99ab 0895697 b106cb4 0895697 b106cb4 0895697 fa895e3 0895697 b106cb4 0895697 |
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 |
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}%)"
# إعادة الإخراج بصيغة JSON Array كما تتوقع واجهة HF
return [{
"label": label,
"score": score,
"message": message
}]
|