Spaces:
Runtime error
Runtime error
anbucur
commited on
Commit
·
25e8e9c
1
Parent(s):
e502d15
Refactor prompt generation logic in app.py to enhance validation and user experience
Browse files- Introduced a helper function to validate input values, ensuring that 'None' and 'Keep Existing' selections are excluded from the prompt generation.
- Improved the construction of prompt parts for room, floor, wall, and accessories by checking for valid values before appending to the prompt.
- Streamlined the logic for adding accessories and custom text, ensuring only valid entries are included in the final prompt.
- Enhanced overall clarity and maintainability of the code by reducing redundancy and improving the structure of the prompt generation process.
app.py
CHANGED
|
@@ -383,6 +383,10 @@ def create_ui(model: DesignModel):
|
|
| 383 |
with gr.Row(elem_classes="button-row"):
|
| 384 |
submit = gr.Button("✨ Create My Design", variant="primary", size="lg")
|
| 385 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 386 |
def update_prompt(room, style, colors, floor_t, floor_c, floor_p,
|
| 387 |
wall_t, wall_c, wall_f, custom_text,
|
| 388 |
art_en, art_col, art_size,
|
|
@@ -390,59 +394,72 @@ def create_ui(model: DesignModel):
|
|
| 390 |
sconce_en, sconce_col, sconce_style,
|
| 391 |
shelf_en, shelf_col, shelf_size,
|
| 392 |
plants_en, plants_type, plants_size):
|
| 393 |
-
|
| 394 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 395 |
|
| 396 |
-
#
|
| 397 |
-
if floor_t not in
|
| 398 |
-
|
| 399 |
-
if floor_c not in
|
| 400 |
-
|
| 401 |
-
if floor_p not in
|
| 402 |
-
|
| 403 |
-
prompt_parts.append(f"featuring {
|
| 404 |
|
| 405 |
-
#
|
| 406 |
-
if wall_t not in
|
| 407 |
-
|
| 408 |
-
if wall_c not in
|
| 409 |
-
|
| 410 |
-
if wall_f not in
|
| 411 |
-
|
| 412 |
-
prompt_parts.append(f"with {
|
| 413 |
|
| 414 |
-
#
|
| 415 |
accessories = []
|
| 416 |
|
| 417 |
# Art Print
|
| 418 |
-
if art_en and art_col not in
|
| 419 |
accessories.append(f"{art_size} {art_col} Art Print")
|
| 420 |
|
| 421 |
# Mirror
|
| 422 |
-
if mirror_en and mirror_fr not in
|
| 423 |
accessories.append(f"{mirror_size} Mirror with {mirror_fr} frame")
|
| 424 |
|
| 425 |
# Wall Sconce
|
| 426 |
-
if sconce_en and sconce_col not in
|
| 427 |
accessories.append(f"{sconce_style} {sconce_col} Wall Sconce")
|
| 428 |
|
| 429 |
# Floating Shelves
|
| 430 |
-
if shelf_en and shelf_col not in
|
| 431 |
accessories.append(f"{shelf_size} {shelf_col} Floating Shelves")
|
| 432 |
|
| 433 |
# Wall Plants
|
| 434 |
-
if plants_en and plants_type not in
|
| 435 |
accessories.append(f"{plants_size} {plants_type}")
|
| 436 |
|
| 437 |
-
# Only add accessories section if there are any accessories
|
| 438 |
if accessories:
|
| 439 |
prompt_parts.append("decorated with " + ", ".join(accessories))
|
| 440 |
|
| 441 |
-
# Add custom text
|
| 442 |
-
if custom_text and custom_text.strip():
|
| 443 |
prompt_parts.append(custom_text.strip())
|
| 444 |
|
| 445 |
-
return ", ".join(prompt_parts)
|
| 446 |
|
| 447 |
def on_submit(image, room, style, colors, floor_t, floor_c, floor_p,
|
| 448 |
wall_t, wall_c, wall_f, custom_text,
|
|
|
|
| 383 |
with gr.Row(elem_classes="button-row"):
|
| 384 |
submit = gr.Button("✨ Create My Design", variant="primary", size="lg")
|
| 385 |
|
| 386 |
+
def is_valid_value(*values):
|
| 387 |
+
"""Helper function to check if values are valid (not None or Keep Existing)"""
|
| 388 |
+
return all(v not in ["None", "Keep Existing"] for v in values)
|
| 389 |
+
|
| 390 |
def update_prompt(room, style, colors, floor_t, floor_c, floor_p,
|
| 391 |
wall_t, wall_c, wall_f, custom_text,
|
| 392 |
art_en, art_col, art_size,
|
|
|
|
| 394 |
sconce_en, sconce_col, sconce_style,
|
| 395 |
shelf_en, shelf_col, shelf_size,
|
| 396 |
plants_en, plants_type, plants_size):
|
| 397 |
+
"""Generate a prompt for the design, skipping any None or Keep Existing values."""
|
| 398 |
+
|
| 399 |
+
invalid_values = {"None", "Keep Existing", None, ""}
|
| 400 |
+
prompt_parts = []
|
| 401 |
+
|
| 402 |
+
# Basic room settings - each part separate for maximum flexibility
|
| 403 |
+
if all(x not in invalid_values for x in [style, room, colors]):
|
| 404 |
+
base_parts = []
|
| 405 |
+
if style not in invalid_values:
|
| 406 |
+
base_parts.append(style)
|
| 407 |
+
if room not in invalid_values:
|
| 408 |
+
base_parts.append(room.lower())
|
| 409 |
+
if colors not in invalid_values:
|
| 410 |
+
base_parts.append(f"with a {colors} color scheme")
|
| 411 |
+
if base_parts:
|
| 412 |
+
prompt_parts.append("Design a " + " ".join(base_parts))
|
| 413 |
|
| 414 |
+
# Floor details - build up piece by piece
|
| 415 |
+
if floor_t not in invalid_values:
|
| 416 |
+
floor_parts = [floor_t]
|
| 417 |
+
if floor_c not in invalid_values:
|
| 418 |
+
floor_parts.append(f"in {floor_c}")
|
| 419 |
+
if floor_p not in invalid_values:
|
| 420 |
+
floor_parts.append(f"with {floor_p} pattern")
|
| 421 |
+
prompt_parts.append(f"featuring {' '.join(floor_parts)} flooring")
|
| 422 |
|
| 423 |
+
# Wall details - build up piece by piece
|
| 424 |
+
if wall_t not in invalid_values:
|
| 425 |
+
wall_parts = [wall_t]
|
| 426 |
+
if wall_c not in invalid_values:
|
| 427 |
+
wall_parts.append(f"in {wall_c}")
|
| 428 |
+
if wall_f not in invalid_values:
|
| 429 |
+
wall_parts.append(f"with {wall_f} finish")
|
| 430 |
+
prompt_parts.append(f"with {' '.join(wall_parts)} walls")
|
| 431 |
|
| 432 |
+
# Accessories - only add valid combinations
|
| 433 |
accessories = []
|
| 434 |
|
| 435 |
# Art Print
|
| 436 |
+
if art_en and art_col not in invalid_values and art_size not in invalid_values:
|
| 437 |
accessories.append(f"{art_size} {art_col} Art Print")
|
| 438 |
|
| 439 |
# Mirror
|
| 440 |
+
if mirror_en and mirror_fr not in invalid_values and mirror_size not in invalid_values:
|
| 441 |
accessories.append(f"{mirror_size} Mirror with {mirror_fr} frame")
|
| 442 |
|
| 443 |
# Wall Sconce
|
| 444 |
+
if sconce_en and sconce_col not in invalid_values and sconce_style not in invalid_values:
|
| 445 |
accessories.append(f"{sconce_style} {sconce_col} Wall Sconce")
|
| 446 |
|
| 447 |
# Floating Shelves
|
| 448 |
+
if shelf_en and shelf_col not in invalid_values and shelf_size not in invalid_values:
|
| 449 |
accessories.append(f"{shelf_size} {shelf_col} Floating Shelves")
|
| 450 |
|
| 451 |
# Wall Plants
|
| 452 |
+
if plants_en and plants_type not in invalid_values and plants_size not in invalid_values:
|
| 453 |
accessories.append(f"{plants_size} {plants_type}")
|
| 454 |
|
|
|
|
| 455 |
if accessories:
|
| 456 |
prompt_parts.append("decorated with " + ", ".join(accessories))
|
| 457 |
|
| 458 |
+
# Add custom text if present
|
| 459 |
+
if custom_text and custom_text.strip() and custom_text not in invalid_values:
|
| 460 |
prompt_parts.append(custom_text.strip())
|
| 461 |
|
| 462 |
+
return ", ".join(prompt_parts) if prompt_parts else "Please select room type, style, and color scheme"
|
| 463 |
|
| 464 |
def on_submit(image, room, style, colors, floor_t, floor_c, floor_p,
|
| 465 |
wall_t, wall_c, wall_f, custom_text,
|