aYeShaSiddiqA's picture
Create app.py
349eb18 verified
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
# Load model (ensure Space is using GPU!)
model_id = "ajibawa-2023/Young-Children-Storyteller-Mistral-7B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
generator = pipeline("text-generation", model=model, tokenizer=tokenizer)
def generate_prompt(characters, theme, setting, scenario):
return f"""You are a children's story writer.
Characters: {characters}
Theme: {theme}
Setting: {setting}
Scenario: {scenario}
Write a short story suitable for children aged 6–12. It should have a beginning, middle, and a happy ending. Use simple language, avoid extra characters, and include a positive message.
Story:"""
def generate_story(characters, theme, setting, scenario):
prompt = generate_prompt(characters, theme, setting, scenario)
result = generator(prompt, max_new_tokens=300, temperature=0.8, do_sample=True)[0]["generated_text"]
return result[len(prompt):].strip()
# Gradio UI
with gr.Blocks(title="Genieverse: Story Generator for Kids") as app:
gr.Markdown("## πŸ“š Genieverse – AI Story Creator for Children 6–12")
with gr.Row():
characters = gr.Dropdown(["Girl", "Boy", "Wolf", "Elephant", "Horse", "Dog", "Bird"], label="Select Characters", multiselect=True, value=["Girl", "Wolf"])
theme = gr.Dropdown(["Bravery", "Friendship", "Kindness", "Helping Others"], label="Select Theme", value="Bravery")
with gr.Row():
setting = gr.Dropdown(["Forest", "Jungle", "Mountain", "Village", "River"], label="Select Setting", value="Forest")
scenario = gr.Textbox(label="Enter a Scenario", placeholder="e.g., A girl saw a wolf coming toward her", value="A girl saw a wolf coming toward her")
generate_btn = gr.Button("Generate Story ✨")
story_output = gr.Textbox(label="Generated Story", lines=15)
generate_btn.click(fn=generate_story, inputs=[characters, theme, setting, scenario], outputs=story_output)
app.launch()