vab42 commited on
Commit
6e44971
·
verified ·
1 Parent(s): d34ceea

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -13
app.py CHANGED
@@ -4,6 +4,11 @@ import os
4
  import io
5
  from PIL import Image
6
  import base64
 
 
 
 
 
7
 
8
  # --- Konfiguration ---
9
  # Hole den Together API Key aus den Umgebungsvariablen (wird als Secret gesetzt)
@@ -13,14 +18,21 @@ TOGETHER_API_KEY = os.environ.get("TOGETHER_API_KEY")
13
  FLUX_MODEL = "black-forest-labs/FLUX.1-schnell-Free"
14
 
15
  # Initialisiere den Together.ai Client
16
- client = None # Standardmäßig None setzen
17
  if TOGETHER_API_KEY:
18
  try:
19
  client = Together(api_key=TOGETHER_API_KEY)
 
 
 
 
 
 
 
20
  except Exception as e:
21
- print(f"Fehler beim Initialisieren des Together.ai Clients: {e}. API-Key prüfen!")
22
  else:
23
- print("Warnung: TOGETHER_API_KEY ist nicht gesetzt. Bilder können nicht generiert werden.")
24
 
25
  # --- Bildgenerierungsfunktion ---
26
  def generate_image(prompt: str, steps: int = 10, n_images: int = 1) -> list[Image.Image] or str:
@@ -29,49 +41,52 @@ def generate_image(prompt: str, steps: int = 10, n_images: int = 1) -> list[Imag
29
  Gibt eine Liste von PIL.Image-Objekten oder eine Fehlermeldung zurück.
30
  """
31
  if not client:
 
32
  return "Fehler: Together.ai Client konnte nicht initialisiert werden. Bitte API-Key prüfen und sicherstellen, dass er gesetzt ist."
33
  if not prompt:
34
  return "Bitte geben Sie einen Prompt ein."
35
 
36
  try:
37
- # AKTUALISIERTE API-Aufruf-Methode
 
38
  response = client.images.generations.create(
39
  model=FLUX_MODEL,
40
  prompt=prompt,
41
  steps=steps,
42
  n=n_images
43
  )
 
44
 
45
  images = []
46
  for image_data in response.data:
47
- # Together.ai gibt Base64-codierte Bilder zurück
48
  img_bytes = base64.b64decode(image_data.b64_json)
49
  img = Image.open(io.BytesIO(img_bytes))
50
  images.append(img)
51
  return images
52
  except Exception as e:
53
- # Hier könnten spezifischere Fehler abgefangen werden (z.B. Rate Limits)
54
- print(f"Fehler bei der Bildgenerierung: {e}")
55
- return f"Fehler bei der Bildgenerierung: {e}. Eventuell API-Limit erreicht oder Prompt ungültig."
56
 
57
  # --- Gradio Interface Definition ---
58
  with gr.Blocks() as demo:
59
  gr.Markdown(
60
  """
61
  # FLUX.1 [schnell] Bildgenerator
62
- Generiere Bilder mit dem FLUX.1-Modell von Black Forest Labs über Learn.Create.Repeat.
 
63
  """
64
  )
65
  with gr.Row():
66
  with gr.Column():
67
  prompt_input = gr.Textbox(
68
  label="Prompt",
69
- placeholder="Gib deinen Prompt hier ein, z.B. 'Cinematic-Shot: Ein tollwütiger Maulwurd in Albis schwedischer Blockhütte'",
70
  lines=3
71
  )
72
  steps_slider = gr.Slider(
73
  minimum=1,
74
- maximum=50, # FLUX.1-schnell hat meistens ca. 10-20 Steps optimal
75
  value=10,
76
  step=1,
77
  label="Schritte (Steps)",
@@ -79,7 +94,7 @@ with gr.Blocks() as demo:
79
  )
80
  num_images_slider = gr.Slider(
81
  minimum=1,
82
- maximum=4, # Begrenzt auf 4, da FLUX.1 n=4 zulässt und Gradio gut mit Listen umgeht
83
  value=1,
84
  step=1,
85
  label="Anzahl der Bilder",
@@ -91,7 +106,7 @@ with gr.Blocks() as demo:
91
  label="Generierte Bilder",
92
  show_label=False,
93
  elem_id="gallery",
94
- height="auto" # Passt sich der Höhe der Bilder an
95
  )
96
 
97
  # Verknüpfung der Eingaben mit der Generierungsfunktion
 
4
  import io
5
  from PIL import Image
6
  import base64
7
+ import logging
8
+
9
+ # --- Konfiguration des Loggers ---
10
+ logging.basicConfig(level=logging.INFO)
11
+ logger = logging.getLogger(__name__)
12
 
13
  # --- Konfiguration ---
14
  # Hole den Together API Key aus den Umgebungsvariablen (wird als Secret gesetzt)
 
18
  FLUX_MODEL = "black-forest-labs/FLUX.1-schnell-Free"
19
 
20
  # Initialisiere den Together.ai Client
21
+ client = None
22
  if TOGETHER_API_KEY:
23
  try:
24
  client = Together(api_key=TOGETHER_API_KEY)
25
+ logger.info(f"Together.ai Client erfolgreich initialisiert. Client-Typ: {type(client)}")
26
+ if hasattr(client, 'images'):
27
+ logger.info(f"Client hat 'images' Attribut. Typ von client.images: {type(client.images)}")
28
+ logger.info(f"Methoden von client.images: {dir(client.images)}")
29
+ else:
30
+ logger.error("Client hat KEIN 'images' Attribut!")
31
+
32
  except Exception as e:
33
+ logger.error(f"FEHLER: Together.ai Client konnte NICHT initialisiert werden: {e}. API-Key prüfen!")
34
  else:
35
+ logger.warning("WARNUNG: TOGETHER_API_KEY ist NICHT gesetzt. Bilder können nicht generiert werden.")
36
 
37
  # --- Bildgenerierungsfunktion ---
38
  def generate_image(prompt: str, steps: int = 10, n_images: int = 1) -> list[Image.Image] or str:
 
41
  Gibt eine Liste von PIL.Image-Objekten oder eine Fehlermeldung zurück.
42
  """
43
  if not client:
44
+ logger.error("generate_image: Client ist nicht initialisiert.")
45
  return "Fehler: Together.ai Client konnte nicht initialisiert werden. Bitte API-Key prüfen und sicherstellen, dass er gesetzt ist."
46
  if not prompt:
47
  return "Bitte geben Sie einen Prompt ein."
48
 
49
  try:
50
+ # Dies ist der kritische Aufrufpunkt
51
+ logger.info(f"Versuche, Bildgenerierung mit Modell {FLUX_MODEL} zu starten...")
52
  response = client.images.generations.create(
53
  model=FLUX_MODEL,
54
  prompt=prompt,
55
  steps=steps,
56
  n=n_images
57
  )
58
+ logger.info("Bildgenerierung erfolgreich angefordert.")
59
 
60
  images = []
61
  for image_data in response.data:
 
62
  img_bytes = base64.b64decode(image_data.b64_json)
63
  img = Image.open(io.BytesIO(img_bytes))
64
  images.append(img)
65
  return images
66
  except Exception as e:
67
+ # Hier werden Fehler vom API-Aufruf abgefangen
68
+ logger.error(f"FEHLER bei der Bildgenerierung: {e}", exc_info=True) # exc_info zeigt den vollständigen Traceback
69
+ return f"Fehler bei der Bildgenerierung: {e}. Eventuell API-Limit erreicht, Prompt ungültig oder Together.ai Problem."
70
 
71
  # --- Gradio Interface Definition ---
72
  with gr.Blocks() as demo:
73
  gr.Markdown(
74
  """
75
  # FLUX.1 [schnell] Bildgenerator
76
+ Generiere Bilder mit dem FLUX.1-Modell von Black Forest Labs über Together.ai.
77
+ Dies ist eine schnelle, kostenlose API-Integration für dein Projekt.
78
  """
79
  )
80
  with gr.Row():
81
  with gr.Column():
82
  prompt_input = gr.Textbox(
83
  label="Prompt",
84
+ placeholder="Gib deinen Prompt hier ein, z.B. 'Ein futuristischer Roboter in einem tropischen Wald'",
85
  lines=3
86
  )
87
  steps_slider = gr.Slider(
88
  minimum=1,
89
+ maximum=50,
90
  value=10,
91
  step=1,
92
  label="Schritte (Steps)",
 
94
  )
95
  num_images_slider = gr.Slider(
96
  minimum=1,
97
+ maximum=4,
98
  value=1,
99
  step=1,
100
  label="Anzahl der Bilder",
 
106
  label="Generierte Bilder",
107
  show_label=False,
108
  elem_id="gallery",
109
+ height="auto"
110
  )
111
 
112
  # Verknüpfung der Eingaben mit der Generierungsfunktion