From Doodles to Dialogue: Using LLMs for Creative Writing Prompts

Creative writing is an art that often begins with a spark, an idea, a scenario or even a single line of dialogue. However, for writers, generating that spark can sometimes feel elusive. This is where Large Language Models (LLMs) like OpenAI's GPT or fine-tuned models from platforms like Hugging Face step in as invaluable tools. Beyond generating random text, these models can become collaborators in the creative process, transforming vague ideas into detailed narratives.

In this blog, we’ll delve into the technical aspects of using LLMs to generate creative writing prompts, simulate dialogues, structure stories and even assist in editing. Whether you're an aspiring novelist, a screenwriter or simply looking for inspiration, LLMs can be your creative muse.

Why LLMs Are Perfect Creative Partners

LLMs are trained on vast text corpora, allowing them to generate coherent and contextually rich responses. Here are some ways they excel in creative writing:

  1. Unlimited Creativity: LLMs can generate ideas without being limited by human biases or creative blocks.

  2. Adaptability: They can be fine-tuned or prompted to align with specific genres, tones or themes.

  3. Diversity: They provide alternative perspectives or narratives that a writer may not have considered.

  4. Efficiency: Writers can focus more on refinement and storytelling while the model takes care of creativity and repetitive tasks.

By leveraging LLMs, writers can move seamlessly from initial brainstorming to polished drafts.

Setting Up Your Creative Writing Assistant

To begin, ensure you have access to an LLM API. In this guide, we’ll use OpenAI's GPT API. If you're interested in free or open-source alternatives, libraries like Hugging Face's Transformers provide access to fine-tuned models.

Step 1: Install Required Libraries

Start by installing the OpenAI Python SDK:

pip install openai

For open-source alternatives, use:

pip install transformers

Step 2: Configure the API

If you’re using OpenAI, set up your API key:

import openai

openai.api_key = "your-api-key"  # Replace it with your OpenAI API key

Generating Writing Prompts

The first step in any writing process is coming up with a compelling idea. Here’s how an LLM can help:

Code Example: Generating Prompts

def generate_writing_prompt(theme="sci-fi", style="adventure"):
    response = openai.Completion.create(
        engine="text-davinci-003",
        prompt=f"Create a writing prompt in the {theme} genre with an {style} tone.",
        max_tokens=100,
        temperature=0.7
    )
    return response['choices'][0]['text'].strip()

# Example usage
prompt = generate_writing_prompt(theme="mystery", style="dark")
print("Writing Prompt:", prompt)

Sample Output:

Writing Prompt: "A reclusive author discovers that the characters in her latest novel are coming to life and they know her darkest secrets."

Crafting Character Dialogues

Creating natural and engaging dialogue is a challenge for many writers. LLMs can simulate character interactions based on the context you provide.

Code Example: Generating Dialogue

def generate_character_dialogue(context, characters):
    prompt = f"""
    Context: {context}
    Characters: {', '.join(characters)}
    Write a dialogue between these characters:
    """
    response = openai.Completion.create(
        engine="text-davinci-003",
        prompt=prompt,
        max_tokens=200,
        temperature=0.8
    )
    return response['choices'][0]['text'].strip()

# Example usage
context = "Two explorers are trapped in a collapsing cave and must decide which path to take."
characters = ["Lena", "Marcus"]
dialogue = generate_character_dialogue(context, characters)
print("Generated Dialogue:\n", dialogue)

Sample Output:

Lena: "We can't just stand here, Marcus! The left path looks stable enough."
Marcus: "And the right one has fresh air. If we choose wrong, we might never get out."
Lena: "Do you trust your instincts or mine?"
Marcus: "I trust that we don't have much time to argue."

Structuring a Narrative

A strong story needs a clear structure, from introduction to resolution. LLMs can help outline these elements.

Code Example: Creating a Story Outline

def generate_story_outline(theme="fantasy", protagonist="a reluctant hero"):
    prompt = f"""
    Generate a story outline in the {theme} genre featuring {protagonist}. Include:
    1. Introduction
    2. Conflict
    3. Climax
    4. Resolution
    """
    response = openai.Completion.create(
        engine="text-davinci-003",
        prompt=prompt,
        max_tokens=300,
        temperature=0.7
    )
    return response['choices'][0]['text'].strip()

# Example usage
outline = generate_story_outline()
print("Story Outline:\n", outline)

Sample Output:

  1. Introduction: A humble blacksmith, Kyra, discovers a mysterious sword hidden in her workshop.

  2. Conflict: The sword binds her to an ancient prophecy, forcing her to lead a rebellion against a tyrant king.

  3. Climax: Kyra must choose between sacrificing herself to destroy the king or finding another way to end his reign.

  4. Resolution: Kyra forges an alliance between warring factions, ending the tyranny without unnecessary bloodshed.

Editing and Refining Text

LLMs can also assist in improving drafts, suggesting better phrasing or tightening prose.

Code Example: Text Refinement

def refine_text(draft_text):
    prompt = f"Refine the following text to make it more engaging and concise:\n\n{draft_text}"
    response = openai.Completion.create(
        engine="text-davinci-003",
        prompt=prompt,
        max_tokens=150,
        temperature=0.5
    )
    return response['choices'][0]['text'].strip()

# Example usage
draft_text = "The village was quiet that night, with only the sound of the wind breaking the silence. It felt like something was about to happen."
refined_text = refine_text(draft_text)
print("Refined Text:", refined_text)

Sample Output:

"That night, the village lay silent, the wind whispering ominous warnings of events yet to unfold."

Fine-Tuning LLM Outputs

While LLMs are powerful, they benefit from user guidance. Here’s how you can enhance their outputs:

  1. Use Detailed Prompts: The more context you provide, the better the results.

  2. Experiment with Parameters:

    • temperature: Controls creativity. Higher values (0.8–1.0) produce more imaginative results.

    • max_tokens: Limits response length.

  3. Iterate: Treat the initial output as a draft and refine it further.

  4. Combine Outputs: Use multiple prompts or iterations to build richer narratives.

Beyond Writing Prompts - LLM Applications

While this blog focuses on creative writing, LLMs can also be used for:

  • World-Building: Generating settings, cultures and histories.

  • Character Development: Designing backstories or traits.

  • Plot Twists: Introducing unexpected yet logical narrative shifts.

With additional training or fine-tuning, you can adapt LLMs for niche genres or styles, making them even more effective for specific storytelling needs.

Conclusion

LLMs like OpenAI’s GPT have revolutionized how writers approach creativity, offering endless possibilities for generating prompts, dialogue and narratives. Whether you’re a professional author or someone exploring storytelling for the first time, these tools can act as collaborators, turning abstract ideas into fully fleshed-out stories.

By combining the creativity of human imagination with the computational power of LLMs, we are not just writing stories but are redefining the boundaries of storytelling itself.

0
Subscribe to my newsletter

Read articles from Aishwarya Jagadish directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Aishwarya Jagadish
Aishwarya Jagadish

I am a CS grad specializing in Artificial Intelligence at the University of Southern California. I am eager to learn, grow and make a meaningful impact in the ever-evolving world of Artificial Intelligence and Machine Learning.