Spaces:
Runtime error
Runtime error
File size: 2,274 Bytes
18a35e1 2bf8ad3 8498878 18a35e1 2bf8ad3 18a35e1 8498878 18a35e1 8498878 18a35e1 8498878 9b51f9d 8498878 2bf8ad3 8498878 c0b6253 8498878 2bf8ad3 8498878 9b51f9d 8498878 2bf8ad3 8498878 2bf8ad3 c2b1d8b 18a35e1 c2b1d8b | 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 59 60 61 62 | import gradio as gr
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
import torch
import json
import re
MODEL_ID = "cahya/gpt2-small-indonesian-522M"
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForCausalLM.from_pretrained(MODEL_ID, torch_dtype=torch.float32, device_map={"": "cpu"})
generator = pipeline("text-generation", model=model, tokenizer=tokenizer)
def clean_and_extract_json(text):
json_start = text.find('{')
if json_start >= 0:
text = text[json_start:]
text = re.sub(r"```json|```", "", text).strip()
return text
def generate_ui(prompt):
out = generator(prompt, max_new_tokens=180, do_sample=True, top_p=0.95, top_k=40, temperature=0.8)
raw_text = out[0]["generated_text"]
cleaned_text = clean_and_extract_json(raw_text)
try:
parsed = json.loads(cleaned_text)
script = parsed.get("script", "").strip()
caption = parsed.get("caption", "").strip()
hashtags = parsed.get("hashtags", [])
if not script or not caption or not isinstance(hashtags, list):
raise ValueError("Missing or invalid fields")
return {
"script": script,
"caption": caption,
"hashtags": hashtags
}
except Exception:
fallback_script = raw_text.strip()
if prompt in fallback_script:
fallback_script = fallback_script.replace(prompt, "").strip()
fallback_caption = fallback_script.split(".")[0].strip() or "Simak info menarik ini!"
return {
"script": fallback_script,
"caption": fallback_caption,
"hashtags": ["#indonesia", "#fyp"]
}
# Use gr.Blocks to enable enable_api properly
with gr.Blocks() as demo:
prompt_input = gr.Textbox(lines=6, placeholder="Masukkan prompt...")
output_json = gr.JSON()
generate_btn = gr.Button("Generate")
generate_btn.click(fn=generate_ui, inputs=prompt_input, outputs=output_json)
gr.Markdown("# TikTok Script Generator")
gr.Markdown("Generates short Indonesian scripts (JSON).")
if __name__ == "__main__":
# IMPORTANT: Use `api_open=True` instead of enable_api (since Gradio 3.40+)
demo.launch(server_name="0.0.0.0", port=7860, api_open=True) |