Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -59,24 +59,41 @@ def generate_image(prompt: str, steps: int = 10, n_images: int = 1) -> list[Imag
|
|
59 |
steps=steps, # Dieser Wert kommt vom Slider
|
60 |
n=n_images
|
61 |
)
|
62 |
-
logger.info("Bildgenerierung erfolgreich angefordert.")
|
63 |
|
64 |
images = []
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
return images
|
71 |
else:
|
72 |
-
logger.error(f"FEHLER: Unerwartete Antwortstruktur von Together.ai: {response}")
|
73 |
-
return "Fehler: Ungültige Antwort von Together.ai.
|
74 |
|
75 |
except Exception as e:
|
76 |
logger.error(f"FEHLER bei der Bildgenerierung: {e}", exc_info=True)
|
77 |
-
|
|
|
|
|
|
|
78 |
|
79 |
-
# --- Gradio Interface Definition ---
|
80 |
with gr.Blocks() as demo:
|
81 |
gr.Markdown(
|
82 |
"""
|
@@ -89,13 +106,13 @@ with gr.Blocks() as demo:
|
|
89 |
with gr.Column():
|
90 |
prompt_input = gr.Textbox(
|
91 |
label="Prompt",
|
92 |
-
placeholder="Gib deinen Prompt hier ein, z.B. '
|
93 |
lines=3
|
94 |
)
|
95 |
steps_slider = gr.Slider(
|
96 |
minimum=1,
|
97 |
-
maximum=4,
|
98 |
-
value=4,
|
99 |
step=1,
|
100 |
label="Schritte (Steps)",
|
101 |
info="Die Anzahl der Schritte muss zwischen 1 und 4 liegen für FLUX.1 [schnell]."
|
|
|
59 |
steps=steps, # Dieser Wert kommt vom Slider
|
60 |
n=n_images
|
61 |
)
|
62 |
+
logger.info(f"Bildgenerierung erfolgreich angefordert. Antwort-Typ: {type(response)}")
|
63 |
|
64 |
images = []
|
65 |
+
# Überprüfen, ob 'data' Attribut existiert und iterierbar ist
|
66 |
+
if hasattr(response, 'data') and isinstance(response.data, list):
|
67 |
+
for i, image_data in enumerate(response.data):
|
68 |
+
# Überprüfen, ob 'b64_json' Attribut existiert und nicht None ist
|
69 |
+
if hasattr(image_data, 'b64_json') and image_data.b64_json is not None:
|
70 |
+
try:
|
71 |
+
img_bytes = base64.b64decode(image_data.b64_json)
|
72 |
+
img = Image.open(io.BytesIO(img_bytes))
|
73 |
+
images.append(img)
|
74 |
+
except Exception as decode_e:
|
75 |
+
logger.error(f"FEHLER beim Dekodieren von Bild {i}: {decode_e}", exc_info=True)
|
76 |
+
# Optional: Dummy-Bild oder Fehlermeldung für dieses spezifische Bild hinzufügen
|
77 |
+
else:
|
78 |
+
logger.warning(f"Warnung: Bilddaten {i} enthalten kein 'b64_json' oder es ist None.")
|
79 |
+
|
80 |
+
if not images:
|
81 |
+
logger.warning("Keine Bilder erfolgreich dekodiert oder erhalten.")
|
82 |
+
return "Keine Bilder generiert. Möglicherweise ungültige Prompt-Antwort oder API-Problem."
|
83 |
+
|
84 |
return images
|
85 |
else:
|
86 |
+
logger.error(f"FEHLER: Unerwartete Antwortstruktur von Together.ai. Response: {response}")
|
87 |
+
return "Fehler: Ungültige Antwort von Together.ai. Überprüfe API-Status oder Guthaben."
|
88 |
|
89 |
except Exception as e:
|
90 |
logger.error(f"FEHLER bei der Bildgenerierung: {e}", exc_info=True)
|
91 |
+
# Zusätzliche Info, falls es ein Problem mit dem Together.ai-Guthaben gibt
|
92 |
+
if "rate limit" in str(e).lower() or "billing" in str(e).lower():
|
93 |
+
return f"Fehler bei der Bildgenerierung: {e}. Dein Together.ai API-Limit wurde möglicherweise erreicht oder dein Guthaben ist aufgebraucht."
|
94 |
+
return f"Fehler bei der Bildgenerierung: {e}. Versuche es später erneut."
|
95 |
|
96 |
+
# --- Gradio Interface Definition (Bleibt unverändert) ---
|
97 |
with gr.Blocks() as demo:
|
98 |
gr.Markdown(
|
99 |
"""
|
|
|
106 |
with gr.Column():
|
107 |
prompt_input = gr.Textbox(
|
108 |
label="Prompt",
|
109 |
+
placeholder="Gib deinen Prompt hier ein, z.B. 'Tollwütgier Maulwurd mit Axt in der Hand in schwedischer Blockhütte.'",
|
110 |
lines=3
|
111 |
)
|
112 |
steps_slider = gr.Slider(
|
113 |
minimum=1,
|
114 |
+
maximum=4,
|
115 |
+
value=4,
|
116 |
step=1,
|
117 |
label="Schritte (Steps)",
|
118 |
info="Die Anzahl der Schritte muss zwischen 1 und 4 liegen für FLUX.1 [schnell]."
|