Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -150,13 +150,14 @@ def character_creation_app(data_manager):
|
|
150 |
|
151 |
save_button.click(save_character, inputs=[name_input, traits_input, image_input, gender_input], outputs=output)
|
152 |
|
153 |
-
def prompt_generator_app(data_manager):
|
154 |
with gr.Tab("Prompt Generator"):
|
155 |
gr.Markdown("## Prompt Generator")
|
156 |
|
157 |
inputs = {}
|
|
|
158 |
for category_name, var_name in categories:
|
159 |
-
tags_list =
|
160 |
tags_string = ', '.join(tags_list)
|
161 |
max_tags = len(tags_list)
|
162 |
if max_tags == 0:
|
@@ -165,9 +166,10 @@ def prompt_generator_app(data_manager):
|
|
165 |
default_value = min(1, max_tags)
|
166 |
with gr.Group():
|
167 |
gr.Markdown(f"### {category_name}")
|
168 |
-
gr.Markdown(f"**Tags:** {tags_string}")
|
169 |
tag_num = gr.Slider(minimum=0, maximum=max_tags, step=1, value=default_value, label=f"Number of {category_name} Tags to Select")
|
170 |
inputs[f"{var_name}_num"] = tag_num
|
|
|
171 |
|
172 |
# For Character Selection
|
173 |
with gr.Group():
|
@@ -204,7 +206,7 @@ def prompt_generator_app(data_manager):
|
|
204 |
|
205 |
prompt_tags = []
|
206 |
for category_name, var_name in categories:
|
207 |
-
tags_list =
|
208 |
tags_num = args[arg_idx]
|
209 |
arg_idx += 1
|
210 |
|
@@ -294,7 +296,22 @@ def prompt_generator_app(data_manager):
|
|
294 |
|
295 |
generate_button.click(generate_prompt, inputs=inputs_list, outputs=prompt_output)
|
296 |
|
297 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
298 |
with gr.Tab("Tags"):
|
299 |
gr.Markdown("## Edit Tags for Each Category")
|
300 |
|
@@ -306,16 +323,21 @@ def tags_app(data_manager):
|
|
306 |
save_button = gr.Button(f"Save {category_name} Tags")
|
307 |
status_output = gr.Textbox(label="", interactive=False)
|
308 |
|
309 |
-
#
|
310 |
def make_save_category_tags_fn(var_name, category_name):
|
311 |
def fn(tags_string):
|
312 |
tags_list = [t.strip() for t in tags_string.split(',') if t.strip()]
|
313 |
data_manager.set_category_tags(var_name, tags_list)
|
314 |
-
|
|
|
|
|
|
|
|
|
315 |
return fn
|
316 |
|
317 |
save_fn = make_save_category_tags_fn(var_name, category_name)
|
318 |
-
|
|
|
319 |
|
320 |
# Persistent Tags
|
321 |
gr.Markdown(f"### Persistent Tags")
|
@@ -333,10 +355,12 @@ def tags_app(data_manager):
|
|
333 |
|
334 |
def main():
|
335 |
data_manager = DataManager()
|
|
|
|
|
336 |
with gr.Blocks() as demo:
|
337 |
-
prompt_generator_app(data_manager)
|
338 |
character_creation_app(data_manager)
|
339 |
-
tags_app(data_manager)
|
340 |
|
341 |
demo.launch()
|
342 |
|
|
|
150 |
|
151 |
save_button.click(save_character, inputs=[name_input, traits_input, image_input, gender_input], outputs=output)
|
152 |
|
153 |
+
def prompt_generator_app(data_manager, category_tags_state):
|
154 |
with gr.Tab("Prompt Generator"):
|
155 |
gr.Markdown("## Prompt Generator")
|
156 |
|
157 |
inputs = {}
|
158 |
+
tag_displays = {}
|
159 |
for category_name, var_name in categories:
|
160 |
+
tags_list = category_tags_state.get(var_name, [])
|
161 |
tags_string = ', '.join(tags_list)
|
162 |
max_tags = len(tags_list)
|
163 |
if max_tags == 0:
|
|
|
166 |
default_value = min(1, max_tags)
|
167 |
with gr.Group():
|
168 |
gr.Markdown(f"### {category_name}")
|
169 |
+
tag_display = gr.Markdown(f"**Tags:** {tags_string}")
|
170 |
tag_num = gr.Slider(minimum=0, maximum=max_tags, step=1, value=default_value, label=f"Number of {category_name} Tags to Select")
|
171 |
inputs[f"{var_name}_num"] = tag_num
|
172 |
+
tag_displays[var_name] = (tag_display, tag_num)
|
173 |
|
174 |
# For Character Selection
|
175 |
with gr.Group():
|
|
|
206 |
|
207 |
prompt_tags = []
|
208 |
for category_name, var_name in categories:
|
209 |
+
tags_list = category_tags_state.get(var_name, [])
|
210 |
tags_num = args[arg_idx]
|
211 |
arg_idx += 1
|
212 |
|
|
|
296 |
|
297 |
generate_button.click(generate_prompt, inputs=inputs_list, outputs=prompt_output)
|
298 |
|
299 |
+
# Function to update the tags display and sliders when tags are changed
|
300 |
+
def update_prompt_generator_tags(category_var_name, tags_list):
|
301 |
+
tags_string = ', '.join(tags_list)
|
302 |
+
max_tags = len(tags_list)
|
303 |
+
if max_tags == 0:
|
304 |
+
slider_value = 0
|
305 |
+
else:
|
306 |
+
slider_value = min(1, max_tags)
|
307 |
+
# Update the tag display and slider
|
308 |
+
tag_display, tag_num = tag_displays[category_var_name]
|
309 |
+
return {
|
310 |
+
tag_display: gr.update(value=f"**Tags:** {tags_string}"),
|
311 |
+
tag_num: gr.update(maximum=max_tags, value=slider_value)
|
312 |
+
}
|
313 |
+
|
314 |
+
def tags_app(data_manager, category_tags_state):
|
315 |
with gr.Tab("Tags"):
|
316 |
gr.Markdown("## Edit Tags for Each Category")
|
317 |
|
|
|
323 |
save_button = gr.Button(f"Save {category_name} Tags")
|
324 |
status_output = gr.Textbox(label="", interactive=False)
|
325 |
|
326 |
+
# Function to save tags and update state
|
327 |
def make_save_category_tags_fn(var_name, category_name):
|
328 |
def fn(tags_string):
|
329 |
tags_list = [t.strip() for t in tags_string.split(',') if t.strip()]
|
330 |
data_manager.set_category_tags(var_name, tags_list)
|
331 |
+
category_tags_state[var_name] = tags_list # Update the state
|
332 |
+
|
333 |
+
# Update the prompt generator components
|
334 |
+
updates = prompt_generator_app.update_prompt_generator_tags(var_name, tags_list)
|
335 |
+
return updates, f"{category_name} tags saved successfully."
|
336 |
return fn
|
337 |
|
338 |
save_fn = make_save_category_tags_fn(var_name, category_name)
|
339 |
+
# Update both the prompt generator components and the status output
|
340 |
+
save_button.click(save_fn, inputs=tag_input, outputs=[gr.Group.update(), status_output])
|
341 |
|
342 |
# Persistent Tags
|
343 |
gr.Markdown(f"### Persistent Tags")
|
|
|
355 |
|
356 |
def main():
|
357 |
data_manager = DataManager()
|
358 |
+
category_tags_state = {var_name: data_manager.get_category_tags(var_name) for _, var_name in categories}
|
359 |
+
|
360 |
with gr.Blocks() as demo:
|
361 |
+
prompt_generator_app(data_manager, category_tags_state)
|
362 |
character_creation_app(data_manager)
|
363 |
+
tags_app(data_manager, category_tags_state)
|
364 |
|
365 |
demo.launch()
|
366 |
|