Spaces:
Runtime error
Runtime error
File size: 4,157 Bytes
d0bd3b3 163978a d0bd3b3 163978a d0bd3b3 163978a d0bd3b3 163978a d0bd3b3 163978a d0bd3b3 163978a d0bd3b3 163978a d0bd3b3 163978a d0bd3b3 163978a d0bd3b3 163978a d0bd3b3 163978a d0bd3b3 163978a d0bd3b3 163978a d0bd3b3 163978a |
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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
import gradio as gr
from unsloth import FastLanguageModel
import torch
# Load the pre-trained language model and tokenizer
model_name = "suhaif/unsloth-llama-3-8b-4bit"
max_seq_length = 2048
dtype = None
load_in_4bit = True
model, tokenizer = FastLanguageModel.from_pretrained(
model_name=model_name,
max_seq_length=max_seq_length,
dtype=dtype,
load_in_4bit=load_in_4bit
)
# Default instruction for generating the story
default_instruction = "You are a creative writer. Based on the given input, generate a well-structured story with an engaging plot, well-developed characters, and immersive details. Ensure the story has a clear beginning, middle, and end. Include dialogue and descriptions to bring the story to life. You can add twist to the story also"
# Function to format the prompt
def format_prompt(input_text, instruction=default_instruction):
return f"{instruction}\n\nInput:\n{input_text}\n\nResponse:\n"
# Function to generate story from the model
def generate_story(user_input):
# Format the input
prompt = format_prompt(user_input)
inputs = tokenizer([prompt], return_tensors="pt").to("cuda")
# Generate output from the model
outputs = model.generate(**inputs, max_new_tokens=500, use_cache=True)
# Decode and return the result
return tokenizer.decode(outputs[0], skip_special_tokens=True)
# Feedback mechanism (collects and stores feedback)
feedback_data = []
def submit_feedback(rating, feedback_text, story):
feedback_data.append({
"rating": rating,
"feedback_text": feedback_text,
"story": story
})
return "Thank you for your feedback!"
# Community engagement feature - to upload and share stories
shared_stories = []
def share_story(title, story_text):
shared_stories.append({"title": title, "story_text": story_text})
return f"Story '{title}' has been shared successfully!"
def display_stories():
return [(story['title'], story['story_text']) for story in shared_stories]
# Gradio interface
def storytelling_interface():
# User inputs
with gr.Blocks() as demo:
gr.Markdown("# Interactive Storytelling Assistant")
with gr.Row():
with gr.Column():
user_input = gr.Textbox(label="Enter your story prompt", placeholder="A young adventurer embarks on a journey to find a lost treasure...", lines=4)
generate_button = gr.Button("Generate Story")
story_output = gr.Textbox(label="Generated Story", placeholder="Generated story will appear here...", lines=10, interactive=False)
generate_button.click(fn=generate_story, inputs=user_input, outputs=story_output)
with gr.Column():
gr.Markdown("## Provide Feedback")
rating = gr.Slider(1, 5, step=1, label="Rate the story")
feedback_text = gr.Textbox(label="Feedback", placeholder="Provide any suggestions or comments...", lines=3)
submit_feedback_button = gr.Button("Submit Feedback")
submit_feedback_button.click(fn=submit_feedback, inputs=[rating, feedback_text, story_output], outputs=None)
with gr.Row():
gr.Markdown("## Share your Story")
title = gr.Textbox(label="Story Title", placeholder="Enter the title of your story")
story_text = gr.Textbox(label="Your Story", placeholder="Enter your full story here...", lines=8)
share_button = gr.Button("Share Story")
share_button.click(fn=share_story, inputs=[title, story_text], outputs=None)
with gr.Row():
gr.Markdown("## Browse Shared Stories")
stories_list = gr.Dropdown(display_stories, label="Select a story to read")
story_display = gr.Textbox(label="Story Content", lines=10, interactive=False)
stories_list.change(fn=lambda title: next(story['story_text'] for story in shared_stories if story['title'] == title), inputs=stories_list, outputs=story_display)
demo.launch()
# Start the storytelling interface
storytelling_interface()
|