Spaces:
Running
Running
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 | |
# Set page config at the very top, before anything else | |
st.set_page_config(page_title="DialogSum Few-Shot Summarizer", page_icon="π§ ") | |
# Load few-shot examples from dialogsum | |
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."), | |
("human", "Summarize the following dialog:\n\n{dialogue}") | |
]) | |
# Streamlit UI setup | |
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: | |
# Prepare messages for the final prompt (include few-shot examples here directly) | |
formatted_prompt = few_shot_prompt.format_messages(dialogue=user_input) | |
# Add formatted examples to the final prompt | |
final_formatted_prompt = final_prompt.format_messages(dialogue=user_input) | |
# Convert the list of messages into a single string | |
prompt_string = "\n".join([msg.content for msg in final_formatted_prompt]) # Access content with .content | |
# Get response from model with correct explicit parameters | |
llm = HuggingFaceEndpoint( | |
repo_id="google/pegasus-xsum", | |
task="summarization", # Correct task for text summarization | |
temperature=0.3, # Explicitly passing temperature here | |
max_length=128 # Explicitly passing max_length here | |
) | |
# Run the LLM with the prompt string | |
response = llm(prompt_string) | |
# Output the summary | |
st.subheader("π Summary:") | |
st.write(response) | |