YussefGAFeer commited on
Commit
433f0df
·
verified ·
1 Parent(s): 152eecb

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -0
app.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from pydantic import BaseModel
3
+ import torch
4
+ from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
5
+ import gradio as gr
6
+
7
+ # 1. تهيئة تطبيق FastAPI
8
+ app = FastAPI()
9
+
10
+ # 2. تحميل النموذج مرة واحدة عند التشغيل
11
+ MODEL_NAME = "aubmindlab/aragpt2-base" # نموذج مخصص للعربية
12
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
13
+ model = AutoModelForCausalLM.from_pretrained(MODEL_NAME)
14
+
15
+ # 3. تعريف دالة التوليد
16
+ def generate_text(prompt: str, max_length=200):
17
+ inputs = tokenizer.encode(prompt, return_tensors="pt")
18
+ outputs = model.generate(
19
+ inputs,
20
+ max_length=max_length,
21
+ do_sample=True,
22
+ top_k=50,
23
+ top_p=0.95,
24
+ temperature=0.7,
25
+ pad_token_id=tokenizer.eos_token_id
26
+ )
27
+ return tokenizer.decode(outputs[0], skip_special_tokens=True)
28
+
29
+ # 4. واجهة API باستخدام FastAPI
30
+ class Request(BaseModel):
31
+ text: str
32
+ max_length: int = 200
33
+
34
+ @app.post("/generate")
35
+ async def api_generate(request: Request):
36
+ result = generate_text(request.text, request.max_length)
37
+ return {"generated_text": result}
38
+
39
+ # 5. واجهة المستخدم باستخدام Gradio
40
+ def gradio_interface(prompt):
41
+ return generate_text(prompt)
42
+
43
+ ui = gr.Interface(
44
+ fn=gradio_interface,
45
+ inputs=gr.Textbox(lines=3, placeholder="اكتب سؤالك هنا...", label="المدخلات"),
46
+ outputs=gr.Textbox(label="الإجابة"),
47
+ title="نموذج ذكاء اصطناعي للغة العربية",
48
+ description="نموذج توليد نصوص بالعربية مع واجهة API"
49
+ )
50
+
51
+ # 6. دمج الواجهات
52
+ app = gr.mount_gradio_app(app, ui, path="/ui")
53
+
54
+ # 7. لتشغيل التطبيق محلياً (إختياري)
55
+ if __name__ == "__main__":
56
+ import uvicorn
57
+ uvicorn.run(app, host="0.0.0.0", port=8000)