Spaces:
Paused
Paused
import os | |
import gradio as gr | |
from langchain import PromptTemplate | |
from langchain.chains import LLMChain | |
from langchain.llms import OpenAI | |
from gradio_client import Client | |
eleven = Client("https://elevenlabs-tts.hf.space/") | |
openai_api_key = os.environ.get("OPENAI_API_KEY") | |
llm = OpenAI(temperature=0.9) | |
def split_text(text, max_length): | |
chunks = [] | |
current_chunk = '' | |
words = text.split() | |
for word in words: | |
if len(current_chunk) + len(word) <= max_length: | |
current_chunk += ' ' + word | |
else: | |
chunks.append(current_chunk.strip()) | |
current_chunk = word | |
if current_chunk: | |
chunks.append(current_chunk.strip()) | |
return chunks | |
def generate_story(text): | |
"""Generate a story using the langchain library and OpenAI's GPT-3 model.""" | |
prompt = PromptTemplate( | |
input_variables=["text"], | |
template=""" | |
You are a fun and seasoned storyteller. | |
Generate a short story for a 5 years old audience about {text}. | |
""" | |
) | |
story = LLMChain(llm=llm, prompt=prompt) | |
story_result = story.run(text=text) | |
print(story_result) | |
print(""" | |
β | |
Cutting text in chunks | |
β | |
""") | |
max_length = 250 | |
text_chunks = split_text(large_text, max_length) | |
for chunk in text_chunks: | |
print(chunk) | |
return story_result | |
def app(text): | |
story = generate_story(text) | |
return story | |
with gr.Blocks() as demo: | |
with gr.Column(): | |
text = gr.Textbox() | |
submit_btn = gr.Button('Submit') | |
audio = gr.Audio() | |
story = gr.Textbox() | |
submit_btn.click(fn=app, inputs=[text], outputs=[story]) | |
demo.launch() |