Spaces:
Sleeping
Sleeping
File size: 1,878 Bytes
f156c39 f9230a6 f156c39 f9230a6 f156c39 f9230a6 f156c39 f9230a6 f156c39 f9230a6 f156c39 f9230a6 f156c39 f9230a6 f156c39 f9230a6 f156c39 f9230a6 f156c39 f9230a6 f156c39 f9230a6 f156c39 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# app.py — Gradio Blocks + REST API bawaan (api_name), lazy-load model
import os
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline
# ===== Konfigurasi =====
MODEL_ID = os.getenv("MODEL_ID", "hasmar03/mt5_id2md")
MAX_LEN = int(os.getenv("MAX_LEN", "128"))
# ===== Lazy loader =====
pipe = None
def get_pipe():
global pipe
if pipe is None:
tok = AutoTokenizer.from_pretrained(MODEL_ID)
mdl = AutoModelForSeq2SeqLM.from_pretrained(MODEL_ID)
pipe = pipeline(
"text2text-generation",
model=mdl,
tokenizer=tok,
max_length=MAX_LEN,
)
return pipe
def _build_prompt(text: str, direction: str):
# Sesuaikan dengan skema training Anda
if direction == "id2md" or direction == "Indonesia → Mandar":
return f"translate Indonesian to Mandar: {text}"
elif direction == "md2id" or direction == "Mandar → Indonesia":
return f"translate Mandar to Indonesian: {text}"
return text
def translate_fn(text: str, arah: str):
p = get_pipe()
prompt = _build_prompt(text, arah)
out = p(prompt)[0]["generated_text"]
return out
with gr.Blocks(title="Mandar ↔ Indonesia Translator") as demo:
gr.Markdown("### Mandar ↔ Indonesia Translator")
arah = gr.Radio(
["Indonesia → Mandar", "Mandar → Indonesia"],
value="Indonesia → Mandar",
label="Arah",
)
src = gr.Textbox(label="Teks sumber", lines=3, placeholder="Ketik teks…")
btn = gr.Button("Terjemahkan")
out = gr.Textbox(label="Hasil", lines=3)
# api_name membuat REST endpoint: /api/predict/translate
btn.click(translate_fn, inputs=[src, arah], outputs=out, api_name="translate")
# Antrian (aman untuk Space)
demo.queue()
# Opsional: saat run lokal
if __name__ == "__main__":
demo.launch()
|