|
import json |
|
import random |
|
import gradio as gr |
|
|
|
|
|
def generate_prompt(): |
|
generated_prompt = [] |
|
for category, values in choices.items(): |
|
choice = values.get() |
|
selected_choice = choice |
|
prompt_part = generate_category_prompt(category, selected_choice) |
|
if prompt_part: |
|
generated_prompt.append(prompt_part) |
|
return ", ".join(generated_prompt) |
|
|
|
|
|
def generate_category_prompt(category, choice): |
|
if choice == 'random': |
|
word = random.choice(categories[category]['random']) |
|
elif choice == 'none': |
|
return None |
|
else: |
|
word = choice |
|
return word |
|
|
|
|
|
def generate_prompt_interface(): |
|
generated_prompt = generate_prompt() |
|
result_text.value = generated_prompt |
|
|
|
|
|
|
|
with open('categories.json', 'r') as file: |
|
categories = json.load(file) |
|
|
|
|
|
choices = {} |
|
|
|
for category, options in categories.items(): |
|
choice = gr.Dropdown(choices=["random", "none"] + options['random'], label=category, type="value") |
|
choices[category] = choice |
|
|
|
result_text = gr.Textbox() |
|
|
|
iface = gr.Interface( |
|
fn=generate_prompt_interface, |
|
inputs=list(choices.values()), |
|
outputs=result_text |
|
|
|
) |
|
|
|
iface.launch() |