|
|
import os |
|
|
from fastapi import FastAPI |
|
|
from pydantic import BaseModel |
|
|
from transformers import pipeline |
|
|
|
|
|
|
|
|
os.environ["HF_HOME"] = "/data" |
|
|
os.environ["TRANSFORMERS_CACHE"] = "/data/cache" |
|
|
|
|
|
app = FastAPI( |
|
|
title="๐ ุญูุงูุชู - API", |
|
|
description="ู
ููุฏ ูุตุต ููุฃุทูุงู" |
|
|
) |
|
|
|
|
|
MODEL_REPO = "Reem1/hakayti-merged" |
|
|
|
|
|
|
|
|
few_shot_example = """<s>[User]: ุงุณู
ู ูุฑูู
ูุฃุญุจ ุงููุถุงุก. |
|
|
ุงูุชุจ ูู ูุตุฉ ุทูููุฉ ููุฃุทูุงู (40 ุฌู
ูุฉ ุนูู ุงูุฃูู) ู
ูุชูุจุฉ ุจุฃุณููุจ ูุตุตู ู
ู
ุชุน. |
|
|
[Assistant]: |
|
|
ูุฑูู
ูุงู ูุญุจ ุงููุธุฑ ุฅูู ุงูุณู
ุงุก ูู ูููุฉ. ูุงู ูุฌูุณ ูู ุดุฑูุฉ ุจูุชูุ ูุฑุงูุจ ุงููุฌูู
ููุนุฏูุง ูุงุญุฏุฉ ุชูู ุงูุฃุฎุฑู. ุฃุญูุงููุง ูุงู ูุชุฎูู ุฃู ุงููุฌูู
ู
ุซู ู
ุตุงุจูุญ ุตุบูุฑุฉ ุชุถูุก ูู ุงูุทุฑูู ูุญู ุฃุญูุงู
ู ุงููุจูุฑุฉ. |
|
|
ูู ุงูู
ุฏุฑุณุฉุ ูุงุญุธ ุงูู
ุนูู
ุดุบู ูุฑูู
ุจุงููุถุงุก. ุฃุนุทุงู ูุชุงุจูุง ู
ููุฆูุง ุจุงูุตูุฑ ุงูู
ูููุฉ ููููุงูุจ ูุงูุฃูู
ุงุฑ. ุงูุจูุฑ ูุฑูู
ุนูุฏู
ุง ุฑุฃู ุตูุฑ ูููุจ ุฒุญู ูุญููุงุชู ุงููุงู
ุนุฉุ ูุฃุฎุฐ ูุชุฎูู ููุณู ูุทูุฑ ุญููู. |
|
|
ูุฑุฑ ูุฑูู
ุฃู ูุตูุน ูู
ูุฐุฌูุง ุตุบูุฑูุง ููู
ุฌู
ูุนุฉ ุงูุดู
ุณูุฉ. ุฌู
ุน ูุฑุงุช ุตุบูุฑุฉ ูุทููุงูุง ุจุงูุฃููุงู: ุงูุฃุฒุฑู ููุฃุฑุถุ ุงูุฃุญู
ุฑ ููู
ุฑูุฎุ ูุงูุฃุตูุฑ ููุดู
ุณ. ุนููููุง ุจุฎููุท ูู ุบุฑูุชูุ ูุตุงุฑุช ูุฃููุง ุณู
ุงุก ุตุบูุฑุฉ ูุนูุด ูููุง. |
|
|
ูู ุฃุญุฏ ุงูุฃูุงู
ุ ุฃุนููุช ุงูู
ุฏุฑุณุฉ ุนู ู
ุณุงุจูุฉ ููุฑุณู
ุจุนููุงู "ุฑุญูุฉ ุฅูู ุงููุถุงุก". ุฑุณู
ูุฑูู
ููุญุฉ ูุจูุฑุฉ ูุธูุฑ ูููุง ุตุงุฑูุฎ ููุทูู ู
ู ุงูุฃุฑุถุ ูุญููู ุฃุทูุงู ููููุญูู ุจุฃูุฏููู
. ูุงุฒ ูุฑูู
ุจุงูุฌุงุฆุฒุฉ ุงูุฃูููุ ููุงู ุณุนูุฏูุง ุฌุฏูุง ูุฃู ุญูู
ู ุจุงููุถุงุก ุฃุตุจุญ ุฃูุฑุจ ู
ู
ุง ูุชุฎูู. |
|
|
ูู ุงูู
ุณุงุกุ ุฌูุณ ูุฑูู
ู
ุน ูุงูุฏู ุนูู ุณุทุญ ุงูู
ูุฒู. ุฃุดุงุฑ ูุงูุฏู ุฅูู ุงููู
ุฑ ููุงู: "ุชุฎููู ูุง ูุฑูู
ุฃู ุงูุนูู
ุงุก ูุฏุฑุณูู ุงูุขู ููู ูุนูุด ุงููุงุณ ููู
ูุง ู
ุง ูู ุงููุถุงุก". ุงุจุชุณู
ูุฑูู
ูุฃุฌุงุจ: "ุณุฃููู ุฃูุง ูุงุญุฏูุง ู
ููู
". |
|
|
ูููุฐุง ุชุนูู
ูุฑูู
ุฃู ุงูุญูู
ูุจุฏุฃ ุจุฎุทูุฉ ุตุบูุฑุฉุ ูุฃู ุญุจ ุงูู
ุนุฑูุฉ ูู
ูู ุฃู ููุชุญ ูู ุฃุจูุงุจูุง ูุงุณุนุฉ ูุญู ุงูู
ุณุชูุจู. |
|
|
</s>""" |
|
|
|
|
|
|
|
|
pipe = pipeline( |
|
|
"text-generation", |
|
|
model=MODEL_REPO, |
|
|
tokenizer=MODEL_REPO, |
|
|
max_new_tokens=900, |
|
|
temperature=0.9, |
|
|
top_p=0.95 |
|
|
) |
|
|
|
|
|
|
|
|
class StoryRequest(BaseModel): |
|
|
name: str |
|
|
hobby: str |
|
|
|
|
|
|
|
|
def generate_story(name, hobby): |
|
|
prompt = f"""{few_shot_example} |
|
|
[User]: ุงุณู
ู {name} ูุฃุญุจ {hobby}. |
|
|
ุงูุชุจ ูู ูุตุฉ ุทูููุฉ ููุฃุทูุงู (40 ุฌู
ูุฉ ุนูู ุงูุฃูู) ู
ูุชูุจุฉ ุจููุณ ุงูุฃุณููุจ ุงูุณุงุจูุ |
|
|
ูุชุฃูุฏ ุฃู ุงููุตุฉ ูููุง ุชุฏูุฑ ุญูู {hobby} ููุท. |
|
|
[Assistant]:""" |
|
|
|
|
|
out = pipe( |
|
|
prompt, |
|
|
max_new_tokens=900, |
|
|
temperature=0.9, |
|
|
top_p=0.95, |
|
|
do_sample=True |
|
|
) |
|
|
full_text = out[0]["generated_text"] |
|
|
story = full_text.split("[Assistant]:")[-1].replace("</s>", "").strip() |
|
|
return story |
|
|
|
|
|
|
|
|
@app.post("/generate") |
|
|
def generate_story_api(req: StoryRequest): |
|
|
story = generate_story(req.name, req.hobby) |
|
|
return {"story": story} |
|
|
|
|
|
|