Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -11,8 +11,12 @@ logging.basicConfig(level=logging.INFO)
|
|
11 |
logger = logging.getLogger(__name__)
|
12 |
|
13 |
# --- Konfiguration ---
|
|
|
14 |
TOGETHER_API_KEY = os.environ.get("TOGETHER_API_KEY")
|
15 |
-
|
|
|
|
|
|
|
16 |
|
17 |
# Initialisiere den Together.ai Client
|
18 |
client = None
|
@@ -33,6 +37,10 @@ else:
|
|
33 |
|
34 |
# --- Bildgenerierungsfunktion ---
|
35 |
def generate_image(prompt: str, steps: int = 25, n_images: int = 1) -> list[Image.Image] or str:
|
|
|
|
|
|
|
|
|
36 |
if not client:
|
37 |
logger.error("generate_image: Client ist nicht initialisiert.")
|
38 |
return "Fehler: Together.ai Client konnte nicht initialisiert werden. Bitte API-Key prüfen und sicherstellen, dass er gesetzt ist."
|
@@ -41,25 +49,12 @@ def generate_image(prompt: str, steps: int = 25, n_images: int = 1) -> list[Imag
|
|
41 |
|
42 |
try:
|
43 |
logger.info(f"Versuche, Bildgenerierung mit Modell {FLUX_MODEL} zu starten über client.images.generate()...")
|
44 |
-
|
45 |
-
# VERSUCH: Einen Dummy-LoRA-Eintrag hinzufügen.
|
46 |
-
# OHNE SPEZIFISCHES LORA WIRD DIESES MODELL KEINE BILDER GENERIEREN!
|
47 |
-
# Zusammen mit Together.ai müsstest du hier einen echten, von Together.ai unterstützten LoRA-Namen angeben.
|
48 |
-
# Dies ist nur ein Test, um zu sehen, ob das Fehlen des 'image_loras'-Parameters das Problem ist.
|
49 |
-
lora_params = [] # Standardmäßig leer lassen, wenn keine spezifischen LoRAs genutzt werden
|
50 |
-
|
51 |
-
# WICHTIG: Wenn du einen echten LoRA verwenden möchtest, musst du hier den korrekten Namen/Pfad eingeben.
|
52 |
-
# Diesen müsstest du von Together.ai erfahren oder in ihrer Doku finden.
|
53 |
-
# Beispiel (NICHT GARANTIERT DASS ES FUNKTIONIERT OHNE ECHTEN LORA-NAMEN):
|
54 |
-
# lora_params = [{"path": "togethercomputer/lora-pixel-art", "scale": 0.8}]
|
55 |
-
# Oder einfach weglassen, wenn das Modell ohne spezifisches LoRA arbeiten sollte (was es nicht zu scheinen tut).
|
56 |
-
|
57 |
response = client.images.generate(
|
58 |
model=FLUX_MODEL,
|
59 |
prompt=prompt,
|
60 |
-
steps=steps,
|
61 |
-
n=n_images
|
62 |
-
# image_loras
|
63 |
)
|
64 |
logger.info(f"Bildgenerierung erfolgreich angefordert. Antwort-Typ: {type(response)}")
|
65 |
|
@@ -78,7 +73,7 @@ def generate_image(prompt: str, steps: int = 25, n_images: int = 1) -> list[Imag
|
|
78 |
|
79 |
if not images:
|
80 |
logger.warning("Keine Bilder erfolgreich dekodiert oder erhalten.")
|
81 |
-
return "Keine Bilder generiert. Möglicherweise ungültige Prompt-Antwort, API-Problem oder Guthaben aufgebraucht.
|
82 |
|
83 |
return images
|
84 |
else:
|
@@ -89,22 +84,21 @@ def generate_image(prompt: str, steps: int = 25, n_images: int = 1) -> list[Imag
|
|
89 |
logger.error(f"FEHLER bei der Bildgenerierung: {e}", exc_info=True)
|
90 |
if "rate limit" in str(e).lower() or "billing" in str(e).lower():
|
91 |
return f"Fehler bei der Bildgenerierung: {e}. Dein Together.ai API-Limit wurde möglicherweise erreicht oder dein Guthaben ist aufgebraucht."
|
92 |
-
return f"Fehler bei der Bildgenerierung: {e}.
|
93 |
|
94 |
-
# --- Gradio Interface Definition
|
95 |
with gr.Blocks() as demo:
|
96 |
gr.Markdown(
|
97 |
"""
|
98 |
-
# FLUX.1 Dev
|
99 |
-
Generiere Bilder mit dem FLUX.1 Dev
|
100 |
-
Beachte: Für LORA-Modelle ist oft ein spezifischer 'image_loras'-Parameter erforderlich!
|
101 |
"""
|
102 |
)
|
103 |
with gr.Row():
|
104 |
with gr.Column():
|
105 |
prompt_input = gr.Textbox(
|
106 |
label="Prompt",
|
107 |
-
placeholder="Gib deinen Prompt hier ein.
|
108 |
lines=3
|
109 |
)
|
110 |
steps_slider = gr.Slider(
|
@@ -113,7 +107,7 @@ with gr.Blocks() as demo:
|
|
113 |
value=25,
|
114 |
step=1,
|
115 |
label="Schritte (Steps)",
|
116 |
-
info="Höhere Schritte können die Qualität verbessern."
|
117 |
)
|
118 |
num_images_slider = gr.Slider(
|
119 |
minimum=1,
|
@@ -121,7 +115,7 @@ with gr.Blocks() as demo:
|
|
121 |
value=1,
|
122 |
step=1,
|
123 |
label="Anzahl der Bilder",
|
124 |
-
info="Wie viele Bilder gleichzeitig generiert werden sollen."
|
125 |
)
|
126 |
generate_button = gr.Button("Bilder generieren")
|
127 |
with gr.Column():
|
|
|
11 |
logger = logging.getLogger(__name__)
|
12 |
|
13 |
# --- Konfiguration ---
|
14 |
+
# Hole den Together API Key aus den Umgebungsvariablen (wird als Secret gesetzt)
|
15 |
TOGETHER_API_KEY = os.environ.get("TOGETHER_API_KEY")
|
16 |
+
|
17 |
+
# Das FLUX-Modell, das du über Together.ai nutzen möchtest
|
18 |
+
# NEUER MODELLNAME: FLUX.1-dev (ohne -lora)
|
19 |
+
FLUX_MODEL = "black-forest-labs/FLUX.1-dev"
|
20 |
|
21 |
# Initialisiere den Together.ai Client
|
22 |
client = None
|
|
|
37 |
|
38 |
# --- Bildgenerierungsfunktion ---
|
39 |
def generate_image(prompt: str, steps: int = 25, n_images: int = 1) -> list[Image.Image] or str:
|
40 |
+
"""
|
41 |
+
Generiert Bilder mit dem FLUX-Modell über Together.ai.
|
42 |
+
Gibt eine Liste von PIL.Image-Objekten oder eine Fehlermeldung zurück.
|
43 |
+
"""
|
44 |
if not client:
|
45 |
logger.error("generate_image: Client ist nicht initialisiert.")
|
46 |
return "Fehler: Together.ai Client konnte nicht initialisiert werden. Bitte API-Key prüfen und sicherstellen, dass er gesetzt ist."
|
|
|
49 |
|
50 |
try:
|
51 |
logger.info(f"Versuche, Bildgenerierung mit Modell {FLUX_MODEL} zu starten über client.images.generate()...")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
response = client.images.generate(
|
53 |
model=FLUX_MODEL,
|
54 |
prompt=prompt,
|
55 |
+
steps=steps, # Dieser Wert kommt vom Slider
|
56 |
+
n=n_images
|
57 |
+
# KEIN 'image_loras' PARAMETER FÜR FLUX.1-dev
|
58 |
)
|
59 |
logger.info(f"Bildgenerierung erfolgreich angefordert. Antwort-Typ: {type(response)}")
|
60 |
|
|
|
73 |
|
74 |
if not images:
|
75 |
logger.warning("Keine Bilder erfolgreich dekodiert oder erhalten.")
|
76 |
+
return "Keine Bilder generiert. Möglicherweise ungültige Prompt-Antwort, API-Problem oder Guthaben aufgebraucht."
|
77 |
|
78 |
return images
|
79 |
else:
|
|
|
84 |
logger.error(f"FEHLER bei der Bildgenerierung: {e}", exc_info=True)
|
85 |
if "rate limit" in str(e).lower() or "billing" in str(e).lower():
|
86 |
return f"Fehler bei der Bildgenerierung: {e}. Dein Together.ai API-Limit wurde möglicherweise erreicht oder dein Guthaben ist aufgebraucht."
|
87 |
+
return f"Fehler bei der Bildgenerierung: {e}. Versuche es später erneut."
|
88 |
|
89 |
+
# --- Gradio Interface Definition ---
|
90 |
with gr.Blocks() as demo:
|
91 |
gr.Markdown(
|
92 |
"""
|
93 |
+
# FLUX.1 Dev Bildgenerator
|
94 |
+
Generiere Bilder mit dem FLUX.1 Dev-Modell von Black Forest Labs über Learn.Create.Repeat.
|
|
|
95 |
"""
|
96 |
)
|
97 |
with gr.Row():
|
98 |
with gr.Column():
|
99 |
prompt_input = gr.Textbox(
|
100 |
label="Prompt",
|
101 |
+
placeholder="Gib deinen Prompt hier ein, z.B. 'tollwütiger Maulwurf mit Axt in schwedischem Wald'",
|
102 |
lines=3
|
103 |
)
|
104 |
steps_slider = gr.Slider(
|
|
|
107 |
value=25,
|
108 |
step=1,
|
109 |
label="Schritte (Steps)",
|
110 |
+
info="Höhere Schritte können die Qualität verbessern, erhöhen aber die Generierungszeit."
|
111 |
)
|
112 |
num_images_slider = gr.Slider(
|
113 |
minimum=1,
|
|
|
115 |
value=1,
|
116 |
step=1,
|
117 |
label="Anzahl der Bilder",
|
118 |
+
info="Wie viele Bilder gleichzeitig generiert werden sollen (kann länger dauern)."
|
119 |
)
|
120 |
generate_button = gr.Button("Bilder generieren")
|
121 |
with gr.Column():
|