Story-Story is an engaging storytelling app designed for children. It takes the rich histories of Nigerian and African figures and turns them into child-friendly, factual stories. With vibrant illustrations and captivating narratives, Story-Story aims to make history come alive for young minds. Stories are generated using an LLM agentic workflow, see demo here.
Story-Story uses an ensemble of AI LLM agents implemented with LangGraph to generate entire 10-page stories about a hero from a single input (the hero's name).
Below is the architecture
- Planner Agent
- Responsible for generating the outline / chapter titles for the story
- input:
historical_figure
- output:
chapter_title
- model: GPT-4o
- Storyteller Agent (GPT-4o)
- Responsible for generating accurate content for the chapter
- input:
historical_figure
chapter_title
- output:
chapter_content
- model: GPT-4o
- Illustrator Agent
- Responsible for generating prompts that will be used to generate images
- input:
chapter_title
historical_figure
- output:
prompt
- model: GPT-4o
- Image Creator
- Responsible for generating the illustrations given a prompt
- input:
historical_figure
prompt
- outputs:
image
- model: Flux.1 Schnell
- Publisher Agent
- Responsible for verifying validity of outputs, making sure it's okay for child consumption
- inputs:
historical_figure
chapter_content
image
- outputs:
score
- model: GPT-4v
- Install requirements
pip install -r requirements.txt
- Add OpenAI API Key to environment
export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"
python main.py --historical_figure "Ahmadu Bello"
This will create the 10-page
content including illustrations about Ahmadu Bello and upload to a Supabase
database
The app uses Supabase for storing story-related data. Here's a brief schema overview:
- Stories:
id
: Primary Keytitle
: Title of the storyhistorical_figure
: Name of the figuredescription
: Brief descriptioncreated_at
: Timestamp
- StoryPages:
id
: Primary Keystory_id
: Foreign Key (References Stories)page_number
: Page number in the storychapter
: Chapter contentillustration_url
: URL for the illustrationprompt
: Prompt used to generate illustrations
Contributions are highly welcome!
Here are ideas I am currently working on
- Illustrations
- Add reference store so storyteller agent can perform RAG
- Narrator