Info tab shows infographic about workflow
Browse files- .gitattributes +1 -0
- app.py +20 -11
- avatar_infographic.png +3 -0
- avatars/08a2fb96/portrait.png +0 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
*.png filter=lfs diff=lfs merge=lfs -text
|
app.py
CHANGED
|
@@ -277,13 +277,14 @@ def initial_greeting(avatar_id):
|
|
| 277 |
return send_message_public(avatar_id, INITIAL_GREETING, [], True)
|
| 278 |
|
| 279 |
|
| 280 |
-
def maybe_generate_image(avatar_id, history, generate_image=True):
|
|
|
|
| 281 |
if not generate_image:
|
| 282 |
-
return
|
| 283 |
if not avatar_id:
|
| 284 |
-
return
|
| 285 |
if not history:
|
| 286 |
-
return
|
| 287 |
|
| 288 |
last_user = None
|
| 289 |
last_reply = None
|
|
@@ -298,11 +299,11 @@ def maybe_generate_image(avatar_id, history, generate_image=True):
|
|
| 298 |
try:
|
| 299 |
avatar = get_avatar({"avatar_id": avatar_id, "admin_id": ""})
|
| 300 |
except ValueError:
|
| 301 |
-
return
|
| 302 |
|
| 303 |
portrait_path = _resolve_path(avatar.get("portrait"))
|
| 304 |
if not portrait_path or not Path(portrait_path).exists():
|
| 305 |
-
return
|
| 306 |
|
| 307 |
try:
|
| 308 |
prompt = build_prompt(
|
|
@@ -318,9 +319,9 @@ def maybe_generate_image(avatar_id, history, generate_image=True):
|
|
| 318 |
record_generated_image(avatar_id, out_path, prompt, timestamp)
|
| 319 |
return str(out_path), True
|
| 320 |
except Exception:
|
| 321 |
-
return
|
| 322 |
|
| 323 |
-
return
|
| 324 |
|
| 325 |
|
| 326 |
# ----------------------------------------------------
|
|
@@ -355,7 +356,7 @@ with gr.Blocks() as ui:
|
|
| 355 |
)
|
| 356 |
chat_event.then(
|
| 357 |
maybe_generate_image,
|
| 358 |
-
inputs=[avatar_id_input, state, generate_toggle],
|
| 359 |
outputs=[image_display, generate_toggle],
|
| 360 |
)
|
| 361 |
|
|
@@ -366,7 +367,7 @@ with gr.Blocks() as ui:
|
|
| 366 |
)
|
| 367 |
send_event.then(
|
| 368 |
maybe_generate_image,
|
| 369 |
-
inputs=[avatar_id_input, state, generate_toggle],
|
| 370 |
outputs=[image_display, generate_toggle],
|
| 371 |
)
|
| 372 |
|
|
@@ -384,7 +385,7 @@ with gr.Blocks() as ui:
|
|
| 384 |
)
|
| 385 |
initial_load.then(
|
| 386 |
maybe_generate_image,
|
| 387 |
-
inputs=[avatar_id_input, state, generate_toggle],
|
| 388 |
outputs=[image_display, generate_toggle],
|
| 389 |
)
|
| 390 |
|
|
@@ -478,6 +479,14 @@ with gr.Blocks() as ui:
|
|
| 478 |
outputs=file_status,
|
| 479 |
)
|
| 480 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 481 |
# ----------------------------------------------------
|
| 482 |
# Export ASGI app for Hugging Face Spaces
|
| 483 |
# ----------------------------------------------------
|
|
|
|
| 277 |
return send_message_public(avatar_id, INITIAL_GREETING, [], True)
|
| 278 |
|
| 279 |
|
| 280 |
+
def maybe_generate_image(avatar_id, history, generate_image=True, current_image=None):
|
| 281 |
+
current_image = current_image or None
|
| 282 |
if not generate_image:
|
| 283 |
+
return current_image, generate_image
|
| 284 |
if not avatar_id:
|
| 285 |
+
return current_image, generate_image
|
| 286 |
if not history:
|
| 287 |
+
return current_image, generate_image
|
| 288 |
|
| 289 |
last_user = None
|
| 290 |
last_reply = None
|
|
|
|
| 299 |
try:
|
| 300 |
avatar = get_avatar({"avatar_id": avatar_id, "admin_id": ""})
|
| 301 |
except ValueError:
|
| 302 |
+
return current_image, False
|
| 303 |
|
| 304 |
portrait_path = _resolve_path(avatar.get("portrait"))
|
| 305 |
if not portrait_path or not Path(portrait_path).exists():
|
| 306 |
+
return current_image, False
|
| 307 |
|
| 308 |
try:
|
| 309 |
prompt = build_prompt(
|
|
|
|
| 319 |
record_generated_image(avatar_id, out_path, prompt, timestamp)
|
| 320 |
return str(out_path), True
|
| 321 |
except Exception:
|
| 322 |
+
return current_image, generate_image
|
| 323 |
|
| 324 |
+
return current_image, generate_image
|
| 325 |
|
| 326 |
|
| 327 |
# ----------------------------------------------------
|
|
|
|
| 356 |
)
|
| 357 |
chat_event.then(
|
| 358 |
maybe_generate_image,
|
| 359 |
+
inputs=[avatar_id_input, state, generate_toggle, image_display],
|
| 360 |
outputs=[image_display, generate_toggle],
|
| 361 |
)
|
| 362 |
|
|
|
|
| 367 |
)
|
| 368 |
send_event.then(
|
| 369 |
maybe_generate_image,
|
| 370 |
+
inputs=[avatar_id_input, state, generate_toggle, image_display],
|
| 371 |
outputs=[image_display, generate_toggle],
|
| 372 |
)
|
| 373 |
|
|
|
|
| 385 |
)
|
| 386 |
initial_load.then(
|
| 387 |
maybe_generate_image,
|
| 388 |
+
inputs=[avatar_id_input, state, generate_toggle, image_display],
|
| 389 |
outputs=[image_display, generate_toggle],
|
| 390 |
)
|
| 391 |
|
|
|
|
| 479 |
outputs=file_status,
|
| 480 |
)
|
| 481 |
|
| 482 |
+
with gr.Tab("Info"):
|
| 483 |
+
gr.Markdown("### Avatar MCP Workflow")
|
| 484 |
+
gr.Image(
|
| 485 |
+
label="Infographic",
|
| 486 |
+
value=_resolve_path("avatar_infographic.png"),
|
| 487 |
+
type="filepath",
|
| 488 |
+
)
|
| 489 |
+
|
| 490 |
# ----------------------------------------------------
|
| 491 |
# Export ASGI app for Hugging Face Spaces
|
| 492 |
# ----------------------------------------------------
|
avatar_infographic.png
ADDED
|
|
Git LFS Details
|
avatars/08a2fb96/portrait.png
CHANGED
|
|
|
|
Git LFS Details
|