Jan Kirenz commited on
Commit
df02228
·
1 Parent(s): 4235103

using gpt-2

Browse files
Files changed (2) hide show
  1. app.py +67 -77
  2. requirements.txt +3 -5
app.py CHANGED
@@ -1,112 +1,102 @@
1
  import streamlit as st
2
- from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
3
- import torch
4
 
5
- st.title("🚀 Marketing Text Generator mit KI")
6
- st.markdown("*Generiere kreative Marketing-Texte für deine Produkte*")
 
7
 
 
8
  @st.cache_resource
9
- def load_model():
10
  """
11
- Versucht zuerst das Falcon-Modell zu laden. Falls dies nicht möglich ist,
12
- wird automatisch auf das kleinere GPT-2 Modell zurückgegriffen.
13
  """
14
  try:
15
- # Erster Versuch: Optimiertes Falcon
16
- tokenizer = AutoTokenizer.from_pretrained("tiiuae/falcon-7b")
17
- model = AutoModelForCausalLM.from_pretrained(
18
- "tiiuae/falcon-7b",
19
- trust_remote_code=True,
20
- device_map="auto",
21
- torch_dtype=torch.float32,
22
- low_cpu_mem_usage=True,
23
- max_memory={0: "4GB"} # Begrenzt den Speicherverbrauch
24
- )
25
- return ("falcon", model, tokenizer)
26
  except Exception as e:
27
- st.warning("Falcon konnte nicht geladen werden. Verwende GPT-2 als Alternative.")
28
- # Fallback: GPT-2
29
- generator = pipeline('text-generation', model='gpt2', device=-1)
30
- return ("gpt2", generator, None)
31
-
32
- def generate_text(model_type, model, tokenizer, prompt, max_length):
33
- """
34
- Generiert Text abhängig vom geladenen Modelltyp.
35
- """
36
- try:
37
- if model_type == "gpt2":
38
- response = model(prompt, max_length=max_length, num_return_sequences=1)
39
- return response[0]['generated_text']
40
- else:
41
- inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
42
- with torch.no_grad():
43
- outputs = model.generate(
44
- **inputs,
45
- max_length=max_length,
46
- temperature=0.7,
47
- top_p=0.9,
48
- num_return_sequences=1,
49
- pad_token_id=tokenizer.eos_token_id
50
- )
51
- return tokenizer.decode(outputs[0], skip_special_tokens=True)
52
- except Exception as e:
53
- st.error(f"Fehler bei der Textgenerierung: {str(e)}")
54
  return None
55
 
56
- # Hauptbereich für die Eingabe
57
  with st.form("marketing_form"):
 
58
  product_name = st.text_input(
59
  "Produktname",
60
- help="Geben Sie den Namen Ihres Produkts ein"
61
  )
62
 
 
63
  key_features = st.text_area(
64
  "Produktmerkmale",
65
- help="Beschreiben Sie die wichtigsten Eigenschaften"
66
  )
67
 
 
68
  max_length = st.slider(
69
- "Maximale Textlänge",
70
  min_value=50,
71
- max_value=200,
72
- value=100
 
73
  )
74
 
75
- submit = st.form_submit_button("Marketing-Text generieren")
 
76
 
 
77
  if submit and product_name and key_features:
 
78
  with st.spinner("Lade KI-Modell..."):
79
- model_type, model, tokenizer = load_model()
80
 
81
- prompt = f"""
82
- Erstelle einen überzeugenden Marketing-Text auf Deutsch für folgendes Produkt:
83
- Produkt: {product_name}
84
- Merkmale: {key_features}
85
-
86
- Der Text sollte professionell, kreativ und verkaufsfördernd sein.
87
- """
88
-
89
- with st.spinner("Generiere Marketing-Text..."):
90
- generated_text = generate_text(model_type, model, tokenizer, prompt, max_length)
91
 
92
- if generated_text:
93
- st.success("Text wurde erfolgreich generiert!")
94
- st.markdown("### Ihr Marketing-Text:")
95
- st.markdown(generated_text)
96
-
97
- st.download_button(
98
- "Text als Datei speichern",
99
- generated_text,
100
- file_name="marketing_text.txt"
101
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
 
 
103
  elif submit:
104
  st.warning("Bitte füllen Sie alle Felder aus.")
105
 
 
106
  st.markdown("---")
107
  st.markdown("""
108
- **Wichtige Hinweise:**
109
- - Die erste Generierung dauert länger (Modell-Ladezeit)
110
- - Bei Speicherproblemen wird automatisch ein kleineres Modell verwendet
111
- - Kürzere Texte werden schneller generiert
112
  """)
 
1
  import streamlit as st
2
+ from transformers import pipeline
 
3
 
4
+ # Titel und Beschreibung der Anwendung
5
+ st.title("🚀 Marketing Text Generator")
6
+ st.markdown("*Erstelle kreative Marketing-Texte mit KI-Unterstützung*")
7
 
8
+ # Wir verwenden @st.cache_resource, damit das Modell nicht bei jeder Interaktion neu geladen wird
9
  @st.cache_resource
10
+ def load_gpt2():
11
  """
12
+ Lädt das GPT-2 Modell in einer einfachen Pipeline-Konfiguration.
13
+ Die Pipeline vereinfacht die Textgenerierung erheblich.
14
  """
15
  try:
16
+ # device=-1 bedeutet, dass wir die CPU verwenden
17
+ return pipeline('text-generation', model='gpt2', device=-1)
 
 
 
 
 
 
 
 
 
18
  except Exception as e:
19
+ st.error(f"Modell konnte nicht geladen werden: {str(e)}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  return None
21
 
22
+ # Hauptformular für die Benutzereingaben
23
  with st.form("marketing_form"):
24
+ # Eingabefeld für den Produktnamen
25
  product_name = st.text_input(
26
  "Produktname",
27
+ help="Wie heißt das Produkt, für das Sie einen Text erstellen möchten?"
28
  )
29
 
30
+ # Eingabefeld für die Produkteigenschaften
31
  key_features = st.text_area(
32
  "Produktmerkmale",
33
+ help="Was macht Ihr Produkt besonders? (Eigenschaften durch Kommas trennen)"
34
  )
35
 
36
+ # Längensteuerung für den generierten Text
37
  max_length = st.slider(
38
+ "Textlänge",
39
  min_value=50,
40
+ max_value=150,
41
+ value=100,
42
+ help="Längere Texte brauchen mehr Zeit zur Generierung"
43
  )
44
 
45
+ # Formular-Button
46
+ submit = st.form_submit_button("Text generieren")
47
 
48
+ # Wenn der Button geklickt wurde und alle Felder ausgefüllt sind
49
  if submit and product_name and key_features:
50
+ # Modell laden mit Fortschrittsanzeige
51
  with st.spinner("Lade KI-Modell..."):
52
+ generator = load_gpt2()
53
 
54
+ if generator:
55
+ # Marketing-spezifischen Prompt erstellen
56
+ prompt = f"""
57
+ Create a marketing text in German for the following product:
58
+ Product: {product_name}
59
+ Features: {key_features}
60
+
61
+ Advertising text in German:
62
+ """
 
63
 
64
+ try:
65
+ # Text generieren mit Fortschrittsanzeige
66
+ with st.spinner("Erstelle Marketing-Text..."):
67
+ result = generator(
68
+ prompt,
69
+ max_length=max_length,
70
+ num_return_sequences=1,
71
+ temperature=0.7
72
+ )
73
+
74
+ # Generierten Text extrahieren und anzeigen
75
+ generated_text = result[0]['generated_text']
76
+
77
+ st.success("Text wurde generiert!")
78
+ st.markdown("### Ihr Marketing-Text:")
79
+ st.markdown(generated_text)
80
+
81
+ # Download-Option
82
+ st.download_button(
83
+ "Text speichern",
84
+ generated_text,
85
+ file_name="marketing_text.txt"
86
+ )
87
+
88
+ except Exception as e:
89
+ st.error(f"Fehler bei der Textgenerierung: {str(e)}")
90
 
91
+ # Wenn der Button geklickt wurde, aber Felder fehlen
92
  elif submit:
93
  st.warning("Bitte füllen Sie alle Felder aus.")
94
 
95
+ # Hilfreiche Informationen am Ende
96
  st.markdown("---")
97
  st.markdown("""
98
+ **Hinweise zur Benutzung:**
99
+ - Die erste Generierung dauert etwas länger, da das Modell geladen werden muss
100
+ - Versuchen Sie verschiedene Beschreibungen für optimale Ergebnisse
101
+ - Prüfen und bearbeiten Sie die generierten Texte vor der Verwendung
102
  """)
requirements.txt CHANGED
@@ -1,5 +1,3 @@
1
- streamlit
2
- transformers
3
- torch
4
- accelerate
5
- protobuf
 
1
+ streamlit==1.29.0
2
+ transformers==4.35.2
3
+ torch==2.1.1