Jan Kirenz
Add application file
0552b81
raw
history blame
4.04 kB
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
""")