summarization / app.py
zoya23's picture
Update app.py
e65d3fb verified
raw
history blame
1.88 kB
import streamlit as st
from datasets import load_dataset
from langchain.llms import HuggingFaceEndpoint
from langchain.prompts import FewShotChatMessagePromptTemplate, ChatPromptTemplate
from langchain.schema.messages import SystemMessage
# Load few-shot examples from dialogsum
@st.cache_data
def load_examples(n=3):
dataset = load_dataset("knkarthick/dialogsum", split="train[:20]")
return [{"dialogue": row["dialogue"], "summary": row["summary"]} for row in dataset.select(range(n))]
examples = load_examples()
# Template for each example
example_prompt = ChatPromptTemplate.from_messages([
("human", "Summarize the following dialog:\n\n{dialogue}"),
("ai", "{summary}")
])
# Few-shot prompt template (no prefix/suffix here)
few_shot_prompt = FewShotChatMessagePromptTemplate(
example_prompt=example_prompt,
examples=examples
)
# Now add intro system message + user input separately
final_prompt = ChatPromptTemplate.from_messages([
SystemMessage(content="The following are examples of dialogues and their summaries."),
*few_shot_prompt.messages,
("human", "Summarize the following dialog:\n\n{dialogue}")
])
# Load Pegasus model from HF inference API
llm = HuggingFaceEndpoint(
repo_id="google/pegasus-xsum",
task="text2text-generation",
model_kwargs={"temperature": 0.3, "max_new_tokens": 128}
)
# Streamlit UI
st.set_page_config(page_title="DialogSum Few-Shot Summarizer", page_icon="🧠")
st.title("🧠 Few-Shot Dialog Summarizer")
st.markdown("Uses real examples from `dialogsum` to guide the summary output.")
user_input = st.text_area("✍️ Paste your dialogue here:", height=200)
if user_input:
# Format messages
messages = final_prompt.format_messages(dialogue=user_input)
# Get response
response = llm(messages)
# Output
st.subheader("πŸ“Œ Summary:")
st.write(response)