vab42 commited on
Commit
d30dd67
·
verified ·
1 Parent(s): 3521393

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -76
app.py CHANGED
@@ -13,13 +13,14 @@ 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
- try:
17
- client = Together(api_key=TOGETHER_API_KEY)
18
- except Exception as e:
19
- # Gib eine Fehlermeldung aus, falls der API-Key nicht geladen werden kann
20
- print(f"Fehler beim Initialisieren des Together.ai Clients: {e}")
21
- # Setze client auf None, um spätere Fehler bei der Generierung zu vermeiden
22
- client = None
 
23
 
24
  # --- Bildgenerierungsfunktion ---
25
  def generate_image(prompt: str, steps: int = 10, n_images: int = 1) -> list[Image.Image] or str:
@@ -28,12 +29,13 @@ def generate_image(prompt: str, steps: int = 10, n_images: int = 1) -> list[Imag
28
  Gibt eine Liste von PIL.Image-Objekten oder eine Fehlermeldung zurück.
29
  """
30
  if not client:
31
- return "Fehler: Together.ai Client konnte nicht initialisiert werden. Bitte API-Key prüfen."
32
  if not prompt:
33
  return "Bitte geben Sie einen Prompt ein."
34
 
35
  try:
36
- response = client.images.generations(
 
37
  model=FLUX_MODEL,
38
  prompt=prompt,
39
  steps=steps,
@@ -50,7 +52,7 @@ def generate_image(prompt: str, steps: int = 10, n_images: int = 1) -> list[Imag
50
  except Exception as e:
51
  # Hier könnten spezifischere Fehler abgefangen werden (z.B. Rate Limits)
52
  print(f"Fehler bei der Bildgenerierung: {e}")
53
- return f"Fehler bei der Bildgenerierung: {e}. Eventuell Limit erreicht oder Prompt ungültig."
54
 
55
  # --- Gradio Interface Definition ---
56
  with gr.Blocks() as demo:
@@ -58,78 +60,13 @@ with gr.Blocks() as demo:
58
  """
59
  # FLUX.1 [schnell] Bildgenerator
60
  Generiere Bilder mit dem FLUX.1-Modell von Black Forest Labs über Learn.Create.Repeat.
61
- Gehe unten die Tipps zu den Promts durch um gezielte Ergebnisse zu erhalten.FLUX.1 [schnell] ist darauf ausgelegt, schnell Ergebnisse zu liefern, oft mit weniger "Steps" (Schritten) als andere Modelle. Daher ist es wichtig, dass deine Prompts prägnise und klar sind, um gute Bilder zu erhalten.
62
-
63
- Hier sind die besten Tipps für Prompts mit FLUX.1 [schnell], um gute Ergebnisse zu erzielen:
64
-
65
- 1. Sei spezifisch und klar:
66
- Das Modell kann keine Gedanken lesen. Beschreibe genau, was du sehen möchtest.
67
-
68
- Schlecht: "Hund"
69
- Besser: "Ein goldener Retriever rennt auf einer grünen Wiese unter strahlend blauem Himmel."
70
-
71
- 2. Beginne mit dem Hauptobjekt:
72
- Platziere das wichtigste Element deines Bildes am Anfang des Prompts. Modelle gewichten die ersten Wörter oft stärker.
73
-
74
- Beispiel: "Ein rotes Auto, das auf einer kurvigen Bergstraße fährt, Herbstlaub" statt "Herbstlaub, ein rotes Auto, das auf einer kurviger Bergstraße fährt".
75
-
76
- 3. Füge Details hinzu (aber nicht zu viele auf einmal):
77
- Beschreibe wichtige Attribute wie Farben, Formen, Materialien, Aktionen, Emotionen.
78
-
79
- Beispiel: "Eine alte hölzerne Hütte mit Moos auf dem Dach, umgeben von dunklen Tannenbäumen, bei Dämmerung, leuchtende Fenster."
80
-
81
- 4. Gib einen Stil oder eine Ästhetik an:
82
- Dies ist entscheidend, um die gewünschte Stimmung und das visuelle Erscheinungsbild zu steuern.
83
-
84
- Stile: fotorealistisch, Ölgemälde, Aquarell, digital art, fantasy art, Cyberpunk, Steampunk, Anime, Cartoon, Bleistiftzeichnung, Minimalistisch, Kubismus, Impressionismus.
85
- Künstler/Fotografen: von Van Gogh, im Stil von Rembrandt, von Annie Leibovitz (Vorsicht: funktioniert nicht immer perfekt).
86
-
87
- Beispiel: "Eine Katze, die Popcorn isst, im Stil eines Ölgemäldes" oder "Ein Raumschiff landet auf einem fremden Planeten, futuristisches Design, neonfarben, digital art."
88
-
89
- 5. Beschreibe die Beleuchtung und Atmosphäre:
90
- Licht und Stimmung haben einen riesigen Einfluss auf das Ergebnis.
91
-
92
- Beleuchtung: Golden hour lighting, soft light, harsh shadows, cinematic lighting, backlit, moonlight.
93
- Atmosphäre: mystisch, traumhaft, fröhlich, düster, episch, ruhig.
94
-
95
- Beispiel: "Ein einsamer Leuchtturm bei Sturm, dramatische Beleuchtung, stürmischer Himmel, raue See."
96
-
97
- 6. Kameraeinstellungen/Perspektive (optional, aber effektiv):
98
- Wenn du spezifische Kompositionen wünschst.
99
-
100
- Makroaufnahme, Weitwinkel, close-up, von oben, von unten, Porträt, Landschaft.
101
-
102
- Beispiel: "Ein detailliertes Insekt auf einem Blatt, Makroaufnahme, Bokeh-Effekt."
103
-
104
- 7. "Qualitäts-Booster" (Prompts für bessere Ergebnisse):
105
- Oft werden bestimmte Phrasen verwendet, um die Qualität zu erhöhen. Bei "schnell" Modellen kann das weniger Einfluss haben, aber es schadet nicht.
106
-
107
- best quality, masterpiece, ultra detailed, 8k, photorealistic, highly detailed, intricate details.
108
-
109
- Beispiel: "Ein detaillierter Waldgeist, meisterhaft gezeichnet, ultrahohe Qualität, digital art."
110
-
111
- 8. Vermeide Negationen im Prompt (wenn möglich):
112
- Manche Modelle tun sich schwer mit "nicht" oder "ohne". Wenn du etwas ausschliessen willst, ist ein negativer Prompt besser (falls dein Gradio-Interface das zulässt, was bei deinem Code nicht der Fall ist). Andernfalls versuche, es positiv zu formulieren.
113
-
114
- Schlecht (wenn kein negativer Prompt möglich): "Ein Hund, aber ohne Leine."
115
- Besser: "Ein freilaufender Hund auf einer Wiese."
116
-
117
- 9. Experimentiere und sei kreativ:
118
- Die besten Prompts entstehen oft durch Ausprobieren und Anpassen. Ändere ein Wort, füge ein Adjektiv hinzu, drehe die Reihenfolge um und schau, was passiert.
119
-
120
- Beispiel für einen umfangreicheren Prompt für FLUX.1 [schnell]:
121
-
122
- "A majestic dragon flying over a steampunk city, sunset lighting, golden hour, highly detailed, intricate machinery, volumetric clouds, digital art, epic atmosphere."
123
-
124
-
125
- Viel Erfolg bei der Bildgenerierung für dein Filmprojekt!
126
  """
127
  )
128
  with gr.Row():
129
  with gr.Column():
130
  prompt_input = gr.Textbox(
131
  label="Prompt",
132
- placeholder="Gib deinen Prompt hier ein, z.B. 'Tollwütiger Maulwurf in Albis Blockhütte im schwedichen Wald.'",
133
  lines=3
134
  )
135
  steps_slider = gr.Slider(
 
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
  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,
 
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:
 
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(