Jan Kirenz
added cpu
b0ce7e8
raw
history blame
3.55 kB
import streamlit as st
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
st.title("🚀 Marketing Text Generator mit Falcon")
st.markdown("*Generiere kreative Marketing-Texte mit dem Falcon-7B Modell*")
@st.cache_resource
def load_falcon_model():
"""
Lädt das Falcon Modell in einer CPU-freundlichen Konfiguration.
Diese Version verwendet weniger Speicher und läuft auf allen Systemen.
"""
try:
model_name = "tiiuae/falcon-7b"
# Tokenizer bleibt unverändert
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Angepasste Modellkonfiguration für CPU-Systeme
model = AutoModelForCausalLM.from_pretrained(
model_name,
trust_remote_code=True,
device_map="auto",
torch_dtype=torch.float32, # Standard-Datentyp statt 8-bit
low_cpu_mem_usage=True # Speicheroptimierung für CPU
)
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"):
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)"
)
# Zusätzliche Kontrolle über die Textlänge
max_length = st.slider(
"Maximale Textlänge",
min_value=50,
max_value=200,
value=100,
help="Längere Texte benötigen mehr Verarbeitungszeit"
)
submit = st.form_submit_button("Marketing-Text generieren")
if submit and product_name and key_features:
with st.spinner("Lade Falcon Modell... (Dies kann einige Minuten dauern)"):
model, tokenizer = load_falcon_model()
if model and tokenizer:
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.
"""
with st.spinner("Generiere Marketing-Text..."):
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_length=max_length,
temperature=0.7,
top_p=0.9,
num_return_sequences=1,
pad_token_id=tokenizer.eos_token_id # Verbesserte Token-Handhabung
)
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
st.success("Text wurde erfolgreich generiert!")
st.markdown("### Ihr Marketing-Text:")
st.markdown(generated_text)
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.")
st.markdown("---")
st.markdown("""
**Wichtige Hinweise:**
- Die erste Generierung dauert länger, da das Modell geladen werden muss
- Auf Systemen ohne GPU kann die Verarbeitung mehrere Minuten in Anspruch nehmen
- Kürzere Texte werden schneller generiert
""")