from transformers import pipeline, set_seed import gradio as grad import random import re # Model initialization gpt2_pipe = pipeline('text-generation', model='Gustavosta/MagicPrompt-Stable-Diffusion', tokenizer='gpt2') with open("ideas.txt", "r") as f: line = f.readlines() def generate(starting_text): for count in range(4): seed = random.randint(100, 1000000) set_seed(seed) if starting_text == "": starting_text: str = line[random.randrange(0, len(line))].replace("\n", "").lower().capitalize() starting_text: str = re.sub(r"[,:\-–.!;?_]", '', starting_text) print(starting_text) response = gpt2_pipe(starting_text, max_length=random.randint(60, 90), num_return_sequences=4) response_list = [] for x in response: resp = x['generated_text'].strip() if resp != starting_text and len(resp) > (len(starting_text) + 4) and resp.endswith((":", "-", "—")) is False: response_list.append(resp+'\n') response_end = "\n".join(response_list) response_end = re.sub('[^ ]+\.[^ ]+','', response_end) response_end = response_end.replace("<", "").replace(">", "") if response_end != "": return response_end if count == 4: return response_end # Example generation examples = [] for x in range(8): examples.append(line[random.randrange(0, len(line))].replace("\n", "").lower().capitalize()) # Custom CSS custom_css = """ .gradio-container { background: linear-gradient(145deg, #2a2a2a, #3a3a3a); border-radius: 20px; box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); border: 1px solid rgba(255, 255, 255, 0.18); } .input-textbox, .output-textbox { background: rgba(255, 255, 255, 0.1) !important; border-radius: 15px !important; padding: 20px !important; box-shadow: 0 4px 15px rgba(0,0,0,0.2); transform: perspective(1000px) rotateX(2deg); transition: all 0.3s ease; } .input-textbox:hover, .output-textbox:hover { transform: perspective(1000px) rotateX(0deg); box-shadow: 0 6px 20px rgba(0,0,0,0.3); } .example-btn { background: linear-gradient(45deg, #6b46c1, #805ad5) !important; border-radius: 10px !important; border: none !important; color: white !important; transform: translateY(0); transition: all 0.2s ease; } .example-btn:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(107, 70, 193, 0.4); } .title-text { font-size: 2.5em !important; background: linear-gradient(45deg, #6b46c1, #805ad5); -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-shadow: 2px 2px 4px rgba(0,0,0,0.2); } .container { animation: float 6s ease-in-out infinite; } @keyframes float { 0% { transform: translateY(0px); } 50% { transform: translateY(-20px); } 100% { transform: translateY(0px); } } .submit-btn { background: linear-gradient(45deg, #6b46c1, #805ad5) !important; border-radius: 15px !important; padding: 10px 20px !important; font-weight: bold !important; transform: translateY(0); transition: all 0.3s ease; } .submit-btn:hover { transform: translateY(-3px); box-shadow: 0 10px 20px rgba(107, 70, 193, 0.3); } """ # Interface content title = """
Stable Diffusion Prompt Generator
""" description = """
This is a demo of the model series: "MagicPrompt", aimed at Stable Diffusion. To use it, simply submit your text or click on one of the examples.

Learn more about the model →
""" article = """
visitor badge
✨ Created with AI Magic ✨
""" # Gradio Interface interface = grad.Interface( fn=generate, inputs=[ grad.Textbox( lines=1, label="Initial Text", placeholder="Enter your prompt here...", elem_classes="input-textbox" ) ], outputs=[ grad.Textbox( lines=4, label="Generated Prompts", elem_classes="output-textbox" ) ], examples=examples, title=title, description=description, article=article, flagging_mode="never", cache_examples=False, css=custom_css, theme=grad.themes.Soft() # 기본 제공되는 Soft 테마 사용 ) # Launch the interface interface.launch(debug=True)