File size: 4,035 Bytes
0552b81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import streamlit as st
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# Titel der Anwendung
st.title("🚀 Marketing Text Generator mit Falcon")
st.markdown("*Generiere kreative Marketing-Texte mit dem Falcon-7B Modell*")

# Modell und Tokenizer laden
# Wir nutzen @st.cache_resource, um zu vermeiden, dass das Modell bei jeder Interaktion neu geladen wird
@st.cache_resource
def load_falcon_model():
    """
    Lädt das Falcon Modell und den zugehörigen Tokenizer.
    Falcon ist bekannt für seine kreativen Textgenerierungsfähigkeiten.
    """
    try:
        # Modellname für Falcon
        model_name = "tiiuae/falcon-7b"
        
        # Tokenizer laden - wandelt Text in Zahlen um, die das Modell verarbeiten kann
        tokenizer = AutoTokenizer.from_pretrained(model_name)
        
        # Modell laden mit optimierten Einstellungen für Streamlit
        model = AutoModelForCausalLM.from_pretrained(
            model_name,
            trust_remote_code=True,
            device_map="auto",     # Automatische Gerätezuweisung (CPU/GPU)
            load_in_8bit=True      # Speicheroptimierung durch 8-bit Quantisierung
        )
        
        return model, tokenizer
    
    except Exception as e:
        st.error(f"Fehler beim Laden des Modells: {str(e)}")
        return None, None

# Hauptbereich für die Eingabe
with st.form("marketing_form"):
    # Eingabefelder für die Produktinformationen
    product_name = st.text_input(
        "Produktname",
        help="Geben Sie den Namen Ihres Produkts ein"
    )
    
    key_features = st.text_area(
        "Produktmerkmale",
        help="Beschreiben Sie die wichtigsten Eigenschaften (durch Kommas getrennt)"
    )
    
    # Button zum Generieren des Textes
    submit = st.form_submit_button("Marketing-Text generieren")

# Text generieren, wenn der Button geklickt wurde
if submit and product_name and key_features:
    # Lade das Modell
    with st.spinner("Lade Falcon Modell..."):
        model, tokenizer = load_falcon_model()
    
    if model and tokenizer:
        # Marketing-spezifischer Prompt erstellen
        prompt = f"""
        Erstelle einen kurzen, überzeugenden Marketing-Text für folgendes Produkt:
        Produkt: {product_name}
        Merkmale: {key_features}
        
        Der Text sollte professionell und ansprechend sein.
        """
        
        # Text generieren
        with st.spinner("Generiere Marketing-Text..."):
            # Text in Token umwandeln
            inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
            
            # Generierung mit optimierten Parametern
            with torch.no_grad():  # Deaktiviert Gradient-Berechnung für Speichereffizienz
                outputs = model.generate(
                    **inputs,
                    max_length=200,         # Maximale Textlänge
                    temperature=0.7,        # Kreativität (0.0 bis 1.0)
                    top_p=0.9,             # Sampling-Parameter für Textvielfalt
                    num_return_sequences=1  # Anzahl der generierten Varianten
                )
            
            # Generierten Text dekodieren und anzeigen
            generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
            
            # Ergebnis anzeigen
            st.success("Text wurde erfolgreich generiert!")
            st.markdown("### Ihr Marketing-Text:")
            st.markdown(generated_text)
            
            # Download-Option anbieten
            st.download_button(
                "Text als Datei speichern",
                generated_text,
                file_name="marketing_text.txt"
            )
elif submit:
    st.warning("Bitte füllen Sie alle Felder aus.")

# Hilfreiche Informationen am Ende
st.markdown("---")
st.markdown("""
**Hinweise zur Nutzung:**
- Die erste Generierung kann etwas länger dauern, da das Modell geladen werden muss
- Experimentieren Sie mit verschiedenen Beschreibungen für beste Ergebnisse
""")