yaya36095's picture
Update handler.py
0895697 verified
raw
history blame
1.72 kB
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
}]