Tran / app.py
Riy777's picture
Update app.py
eccac2e verified
import os
# إيقاف التوازي الداخلي لمنع تضارب الذاكرة
os.environ["TOKENIZERS_PARALLELISM"] = "false"
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline
app = FastAPI()
# تحميل الموديل السريع
MODEL_NAME = "facebook/nllb-200-distilled-600M"
print("Loading NLLB Model...")
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME)
translator = pipeline("translation", model=model, tokenizer=tokenizer, max_length=512, device=-1)
print("Model Ready!")
LANG_MAP = {
"Arabic": "arb_Arab",
"English": "eng_Latn",
"French": "fra_Latn"
}
class BatchRequest(BaseModel):
texts: List[str]
source_lang: str
target_lang: str
@app.get("/")
def home():
return {"status": "Running"}
@app.post("/translate_batch")
def translate_batch(req: BatchRequest):
# التحقق من المدخلات
if not req.texts:
return {"translations": []}
src = LANG_MAP.get(req.source_lang, "eng_Latn")
tgt = LANG_MAP.get(req.target_lang, "arb_Arab")
# الترجمة الجماعية
try:
results = translator(req.texts, src_lang=src, tgt_lang=tgt, batch_size=16)
translations = [res['translation_text'] for res in results]
return {"translations": translations}
except Exception as e:
print(f"Error: {e}")
# في حال الخطأ نرجع النصوص الأصلية لتفادي التوقف
return {"translations": req.texts}