Spaces:
Running
Running
File size: 2,461 Bytes
52d4ec9 50a4735 8e16424 e65d3fb 52d4ec9 b3d218a e65d3fb 8e16424 490b63e 8e16424 793bade e65d3fb 8e16424 e65d3fb 8e16424 e65d3fb 8e16424 e65d3fb 302df45 8e16424 302df45 e65d3fb 302df45 d727731 c4bfef8 d727731 302df45 53d3bea 302df45 d727731 53d3bea d727731 302df45 c4bfef8 302df45 8e16424 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
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
@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."),
("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)
|