ak2603's picture
llama generation fixed and code refactored signly
f8d688e
# app.py
import streamlit as st
from transformers import pipeline
@st.cache_resource
def load_model(model_name):
if model_name == "mt5-small":
return pipeline("summarization", model="ak2603/mt5-small-synthetic-data-plus-translated")
# Add space for other models here
elif model_name == "Llama 3.2":
return pipeline("text-generation", model="Walid777/llama3-8b-emails-summarization")
elif model_name == "Llama 7b Instruct":
return None # Placeholder for future implementation
else:
raise ValueError("Model not supported")
# Sample emails with reference summaries (for demonstration only)
SAMPLES = {
"Sample 1": (
"""
Sehr geehrte Damen und Herren,
Ich bitte um die Kündigung meines Vertrages, da ich umziehe.
Vertragsnummer: 40887935006
Zählernummer: 17760731625925
Mit freundlichen Grüßen
Falk Rosemann, Truppring 7, 02044 Wernigerode
""",
"Der Kunde bittet um die Kündigung seines Vertrages aufgrund eines Umzugs und gibt die Vertrags- und Zählernummer an."
),
"Sample 2": (
"""
Die versprochene Rabattaktion wurde in meiner letzten Rechnung nicht berücksichtigt.
Mit freundlichen Grüßen
Prof. Vinko Caspar B.Eng., Jolanda-Pruschke-Platz 835, 42943 Neustadtner Waldnaab
""",
"Der Kunde erwähnt, dass die versprochene Rabattaktion in der letzten Rechnung nicht berücksichtigt wurde."
),
"Sample 3": (
"""
Sehr geehrte Damen und Herren,
Ich habe vor zwei Wochen eine Rechnung erhalten, die ich nicht nachvollziehen kann. Bitte erklären Sie die Details.
Herzliche Grüße
Kirstin Girschner-Meister, Oderwaldallee 510, 35412 Halberstadt
""",
"Der Kunde erwähnt, dass die versprochene Rabattaktion in der letzten Rechnung nicht berücksichtigt wurde und erwartet eine Überprüfung und Korrektur der Rechnung."
)
}
# UI Layout
st.title("🇩🇪 German Email Summarizer")
st.markdown("Fine-tuned summarization for German emails")
# Sidebar for model selection and sample emails
with st.sidebar:
st.header("⚙️ Settings")
model_choice = st.selectbox("Choose Model", ["mt5-small", "Llama 3.2", "Llama 7b Instruct"], index=0)
sample_choice = st.selectbox("Try Sample Email", ["Custom Input"] + list(SAMPLES.keys()))
# Load the selected model
summarizer = load_model(model_choice)
# Main interface
col1, col2 = st.columns(2)
with col1:
if sample_choice == "Custom Input":
input_text = st.text_area("Input Email", height=300, placeholder="Paste your email here...")
else:
input_text = st.text_area("Input Email", value=SAMPLES[sample_choice][0], height=300)
with col2:
if st.button("Generate Summary"):
if summarizer is None:
st.error("Selected model is not implemented yet.")
else:
with st.spinner("Generating summary..."):
try:
# Generate summary
summary_output = summarizer(
input_text,
max_length=150,
do_sample=True,
repetition_penalty=1.5
)[0]
# Dynamically select key based on pipeline task
result_key = 'summary_text' if summarizer.task == 'summarization' else 'generated_text'
result = summary_output[result_key]
st.success("**Generated Summary:**")
st.write(result)
# Show sample comparison only if a sample is selected
if sample_choice != "Custom Input" and sample_choice in SAMPLES:
st.divider()
st.markdown(f"**Sample Reference Summary ({sample_choice}):**")
st.write(SAMPLES[sample_choice][1])
except Exception as e:
st.error(f"Error generating summary: {str(e)}")