SocialStoryTool / app.py
TowerHamletsIncluson's picture
Upload 2 files
e94537b verified
import gradio as gr
import datetime
import openai
import os
openai.api_key = os.getenv("OPENAI_API_KEY")
def generate_story(age, reading_age, gender_pronouns, situation, additional_notes):
today = datetime.date.today().strftime("%d %B %Y")
prompt = f"""
Create a social story suitable for a student aged {age} with a reading age of {reading_age}.
Use British English and age-appropriate vocabulary.
Refer to the student using '{gender_pronouns}'.
The story is to help prepare the student for: {situation}.
Use reassuring, inclusive language and structure the story clearly.
{additional_notes if additional_notes else ""}
Use placeholder [student name] wherever a name would normally appear.
"""
try:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a teacher writing simple, clear, and supportive social stories for children with SEND."},
{"role": "user", "content": prompt}
],
temperature=0.7
)
story = response['choices'][0]['message']['content']
return f"**Date:** {today}\n\n{story}"
except Exception as e:
return f"Error generating story: {e}"
interface = gr.Interface(
fn=generate_story,
inputs=[
gr.Number(label="Student's Age", value=10),
gr.Number(label="Reading Age", value=8),
gr.Radio(["he/him", "she/her", "they/them"], label="Pronouns"),
gr.Textbox(lines=2, label="What is the situation you're preparing them for?"),
gr.Textbox(lines=2, label="Any extra information (optional)")
],
outputs="markdown",
title="Tower Hamlets Social Story Generator",
description="This tool creates age-appropriate social stories in British English to support children with SEND. Names are anonymised."
)
if __name__ == "__main__":
interface.launch()