vab42 commited on
Commit
aa605b2
·
verified ·
1 Parent(s): 615086a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -17
app.py CHANGED
@@ -15,6 +15,7 @@ logger = logging.getLogger(__name__)
15
  TOGETHER_API_KEY = os.environ.get("TOGETHER_API_KEY")
16
 
17
  # Das FLUX-Modell, das du über Together.ai nutzen möchtest
 
18
  FLUX_MODEL = "black-forest-labs/FLUX.1-dev-lora"
19
 
20
  # Initialisiere den Together.ai Client
@@ -46,10 +47,9 @@ def generate_image(prompt: str, steps: int = 10, n_images: int = 1) -> list[Imag
46
  if not prompt:
47
  return "Bitte geben Sie einen Prompt ein."
48
 
49
- # Zusätzliche Validierung für Schritte, falls der Slider-Wert das API-Limit überschreitet
50
- if not (1 <= steps <= 4):
51
- logger.error(f"Fehler: Schritte ({steps}) müssen zwischen 1 und 4 liegen.")
52
- return "Fehler: Die Anzahl der Schritte muss zwischen 1 und 4 liegen."
53
 
54
  try:
55
  logger.info(f"Versuche, Bildgenerierung mit Modell {FLUX_MODEL} zu starten über client.images.generate()...")
@@ -62,10 +62,8 @@ def generate_image(prompt: str, steps: int = 10, n_images: int = 1) -> list[Imag
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)
@@ -73,13 +71,12 @@ def generate_image(prompt: str, steps: int = 10, n_images: int = 1) -> list[Imag
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:
@@ -88,33 +85,32 @@ def generate_image(prompt: str, steps: int = 10, n_images: int = 1) -> list[Imag
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
  """
100
- # FLUX.1 [dev]Lora Bildgenerator
101
- Generiere Bilder mit dem FLUX.1-Modell von Black Forest Labs über Learn.Create.Repeat.
102
  """
103
  )
104
  with gr.Row():
105
  with gr.Column():
106
  prompt_input = gr.Textbox(
107
  label="Prompt",
108
- placeholder="Gib deinen Prompt hier ein, z.B. 'Tollwütgier Maulwurf mit Axt in der Hand in schwedischer Blockhütte.'",
109
  lines=3
110
  )
111
  steps_slider = gr.Slider(
112
  minimum=1,
113
- maximum=4,
114
- value=4,
115
  step=1,
116
  label="Schritte (Steps)",
117
- info="Die Anzahl der Schritte muss zwischen 1 und 4 liegen für FLUX.1 [schnell]."
118
  )
119
  num_images_slider = gr.Slider(
120
  minimum=1,
 
15
  TOGETHER_API_KEY = os.environ.get("TOGETHER_API_KEY")
16
 
17
  # Das FLUX-Modell, das du über Together.ai nutzen möchtest
18
+ # KORREKTER MODELLNAME FÜR FLUX.1-dev-lora
19
  FLUX_MODEL = "black-forest-labs/FLUX.1-dev-lora"
20
 
21
  # Initialisiere den Together.ai Client
 
47
  if not prompt:
48
  return "Bitte geben Sie einen Prompt ein."
49
 
50
+ # Hinweis: FLUX.1-dev-lora erlaubt wahrscheinlich mehr Schritte als die 'schnell-Free'-Version.
51
+ # Hier keine feste Validierung mehr, da der Slider dies steuern sollte.
52
+ # Eine clientseitige Validierung ist nur sinnvoll, wenn die API-Doku des Modells das explizit erfordert.
 
53
 
54
  try:
55
  logger.info(f"Versuche, Bildgenerierung mit Modell {FLUX_MODEL} zu starten über client.images.generate()...")
 
62
  logger.info(f"Bildgenerierung erfolgreich angefordert. Antwort-Typ: {type(response)}")
63
 
64
  images = []
 
65
  if hasattr(response, 'data') and isinstance(response.data, list):
66
  for i, image_data in enumerate(response.data):
 
67
  if hasattr(image_data, 'b64_json') and image_data.b64_json is not None:
68
  try:
69
  img_bytes = base64.b64decode(image_data.b64_json)
 
71
  images.append(img)
72
  except Exception as decode_e:
73
  logger.error(f"FEHLER beim Dekodieren von Bild {i}: {decode_e}", exc_info=True)
 
74
  else:
75
  logger.warning(f"Warnung: Bilddaten {i} enthalten kein 'b64_json' oder es ist None.")
76
 
77
  if not images:
78
  logger.warning("Keine Bilder erfolgreich dekodiert oder erhalten.")
79
+ return "Keine Bilder generiert. Möglicherweise ungültige Prompt-Antwort, API-Problem oder Guthaben aufgebraucht."
80
 
81
  return images
82
  else:
 
85
 
86
  except Exception as e:
87
  logger.error(f"FEHLER bei der Bildgenerierung: {e}", exc_info=True)
 
88
  if "rate limit" in str(e).lower() or "billing" in str(e).lower():
89
+ return f"Fehler bei der Bildgenerierung: {e}. Dein Together.ai API-Limit wurde möglicherweise erreicht oder dein Guthaben ist aufgebrauch."
90
  return f"Fehler bei der Bildgenerierung: {e}. Versuche es später erneut."
91
 
92
+ # --- Gradio Interface Definition ---
93
  with gr.Blocks() as demo:
94
  gr.Markdown(
95
  """
96
+ # FLUX.1 Dev LORA Bildgenerator
97
+ Generiere Bilder mit dem FLUX.1 Dev LORA-Modell von Black Forest Labs über Learn.Create.Repeat.
98
  """
99
  )
100
  with gr.Row():
101
  with gr.Column():
102
  prompt_input = gr.Textbox(
103
  label="Prompt",
104
+ placeholder="Gib deinen Prompt hier ein. Denke an mögliche Trigger-Words für das LORA-Modell!",
105
  lines=3
106
  )
107
  steps_slider = gr.Slider(
108
  minimum=1,
109
+ maximum=50, # <-- ANGEPASST für Dev-Modell
110
+ value=25, # <-- ANGEPASST für Dev-Modell
111
  step=1,
112
  label="Schritte (Steps)",
113
+ info="Höhere Schritte können die Qualität verbessern, erhöhen aber die Generierungszeit."
114
  )
115
  num_images_slider = gr.Slider(
116
  minimum=1,