Reem1 commited on
Commit
8eb5ebd
·
verified ·
1 Parent(s): 4b1161e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -53
app.py CHANGED
@@ -1,53 +1,57 @@
1
- import os
2
- from fastapi import FastAPI
3
- from pydantic import BaseModel
4
- from transformers import pipeline
5
-
6
- os.environ["TRANSFORMERS_CACHE"] = "/app/cache"
7
-
8
- app = FastAPI(title="📖 حكايتي - API", description="مولد قصص للأطفال")
9
-
10
- MODEL_REPO = "Reem1/hakayti-merged"
11
-
12
- few_shot_example = """<s>[User]: اسمي كريم وأحب الفضاء.
13
- اكتب لي قصة طويلة للأطفال (40 جملة على الأقل) مكتوبة بأسلوب قصصي ممتع.
14
- [Assistant]:
15
- كريم كان يحب النظر إلى السماء كل ليلة. كان يجلس في شرفة بيته، يراقب النجوم ويعدها واحدة تلو الأخرى. أحيانًا كان يتخيل أن النجوم مثل مصابيح صغيرة تضيء له الطريق نحو أحلامه الكبيرة.
16
- في المدرسة، لاحظ المعلم شغف كريم بالفضاء. أعطاه كتابًا مليئًا بالصور الملونة للكواكب والأقمار. انبهر كريم عندما رأى صور كوكب زحل وحلقاته اللامعة، وأخذ يتخيل نفسه يطير حوله.
17
- قرر كريم أن يصنع نموذجًا صغيرًا للمجموعة الشمسية. جمع كرات صغيرة وطلّاها بالألوان: الأزرق للأرض، الأحمر للمريخ، والأصفر للشمس. علّقها بخيوط في غرفته، فصارت كأنها سماء صغيرة يعيش فيها.
18
- في أحد الأيام، أعلنت المدرسة عن مسابقة للرسم بعنوان "رحلة إلى الفضاء". رسم كريم لوحة كبيرة يظهر فيها صاروخ ينطلق من الأرض، وحوله أطفال يلوّحون بأيديهم. فاز كريم بالجائزة الأولى، وكان سعيدًا جدًا لأن حلمه بالفضاء أصبح أقرب مما يتخيل.
19
- في المساء، جلس كريم مع والده على سطح المنزل. أشار والده إلى القمر وقال: "تخيّل يا كريم أن العلماء يدرسون الآن كيف يعيش الناس يومًا ما في الفضاء". ابتسم كريم وأجاب: "سأكون أنا واحدًا منهم".
20
- وهكذا تعلم كريم أن الحلم يبدأ بخطوة صغيرة، وأن حب المعرفة يمكن أن يفتح له أبوابًا واسعة نحو المستقبل.
21
- </s>"""
22
-
23
- # تحميل الموديل مرة واحدة
24
- pipe = pipeline(
25
- "text-generation",
26
- model=MODEL_REPO,
27
- tokenizer=MODEL_REPO,
28
- max_new_tokens=900,
29
- temperature=0.9,
30
- top_p=0.95
31
- )
32
-
33
- # body request
34
- class StoryRequest(BaseModel):
35
- name: str
36
- hobby: str
37
-
38
- def generate_story(name, hobby):
39
- prompt = f"""{few_shot_example}
40
- [User]: اسمي {name} وأحب {hobby}.
41
- اكتب لي قصة طويلة للأطفال (40 جملة على الأقل) مكتوبة بنفس الأسلوب السابق،
42
- وتأكد أن القصة كلها تدور حول {hobby} فقط.
43
- [Assistant]:"""
44
-
45
- out = pipe(prompt, max_new_tokens=900, temperature=0.9, top_p=0.95, do_sample=True)
46
- full_text = out[0]["generated_text"]
47
- story = full_text.split("[Assistant]:")[-1].replace("</s>", "").strip()
48
- return story
49
-
50
- @app.post("/generate")
51
- def generate_story_api(req: StoryRequest):
52
- story = generate_story(req.name, req.hobby)
53
- return {"story": story}
 
 
 
 
 
1
+ import os
2
+ from fastapi import FastAPI
3
+ from pydantic import BaseModel
4
+ from transformers import pipeline
5
+
6
+ # نحدد مكان الكاش
7
+ os.environ["HF_HOME"] = "/data"
8
+
9
+ app = FastAPI(
10
+ title="📖 حكايتي - API",
11
+ description="مولد قصص للأطفال"
12
+ )
13
+
14
+ MODEL_REPO = "Reem1/hakayti-merged"
15
+
16
+ few_shot_example = """<s>[User]: اسمي كريم وأحب الفضاء.
17
+ اكتب لي قصة طويلة للأطفال (40 جملة على الأقل) مكتوبة بأسلوب قصصي ممتع.
18
+ [Assistant]:
19
+ كريم كان يحب النظر إلى السماء كل ليلة. كان يجلس في شرفة بيته، يراقب النجوم ويعدها واحدة تلو الأخرى. أحيانًا كان يتخيل أن النجوم مثل مصابيح صغيرة تضيء له الطريق نحو أحلامه الكبيرة.
20
+ في المدرسة، لاحظ المعلم شغف كريم بالفضاء. أعطاه كتابًا مليئًا بالصور الملونة للكواكب والأقمار. انبهر كريم عندما رأى صور كوكب زحل وحلقاته اللامعة، وأخذ يتخيل نفسه يطير حوله.
21
+ قرر كريم أن يصنع نموذجًا صغيرًا للمجموعة الشمسية. جمع كرات صغيرة وطلّاها بالألوان: الأزرق للأرض، الأحمر للمريخ، والأصفر للشمس. علّقها بخيوط في غرفته، فصارت كأنها سماء صغيرة يعيش فيها.
22
+ في أحد الأيام، أعلنت المدرسة عن مسابقة للرسم بعنوان "رحلة إلى الفضاء". رسم كريم لوحة كبيرة يظهر فيها صاروخ ينطلق من الأرض، وحوله أطفال يلوّحون بأيديهم. فاز كريم بالجائزة الأولى، وكان سعيدًا جدًا لأن حلمه بالفضاء أصبح أقرب مما يتخيل.
23
+ في المساء، جلس كريم مع والده على سطح المنزل. أشار والده إلى القمر وقال: "تخيّل يا كريم أن العلماء يدرسون الآن كيف يعيش الناس يومًا ما في الفضاء". ابتسم كريم وأجاب: "سأكون أنا واحدًا منهم".
24
+ وهكذا تعلم كريم أن الحلم يبدأ بخطوة صغيرة، وأن حب المعرفة يمكن أن يفتح له أبوابًا واسعة نحو المستقبل.
25
+ </s>"""
26
+
27
+ # تحميل الموديل مرة واحدة
28
+ pipe = pipeline(
29
+ "text-generation",
30
+ model=MODEL_REPO,
31
+ tokenizer=MODEL_REPO,
32
+ max_new_tokens=900,
33
+ temperature=0.9,
34
+ top_p=0.95
35
+ )
36
+
37
+ # body request
38
+ class StoryRequest(BaseModel):
39
+ name: str
40
+ hobby: str
41
+
42
+ def generate_story(name, hobby):
43
+ prompt = f"""{few_shot_example}
44
+ [User]: اسمي {name} وأحب {hobby}.
45
+ اكتب لي قصة طويلة للأطفال (40 جملة على الأقل) مكتوبة بنفس الأسلوب السابق،
46
+ وتأكد أن القصة كلها تدور حول {hobby} فقط.
47
+ [Assistant]:"""
48
+
49
+ out = pipe(prompt, max_new_tokens=900, temperature=0.9, top_p=0.95, do_sample=True)
50
+ full_text = out[0]["generated_text"]
51
+ story = full_text.split("[Assistant]:")[-1].replace("</s>", "").strip()
52
+ return story
53
+
54
+ @app.post("/generate")
55
+ def generate_story_api(req: StoryRequest):
56
+ story = generate_story(req.name, req.hobby)
57
+ return {"story": story}