import streamlit as st import pandas as pd from transformers import pipeline, AutoTokenizer import base64 # Load the EasyTerms/legalSummerizerET model from Hugging Face summarizer = pipeline("summarization", model="EasyTerms/legalSummerizerET") # Increase the maximum token limit tokenizer = AutoTokenizer.from_pretrained("EasyTerms/legalSummerizerET") summarizer.model.config.max_position_embeddings = tokenizer.model_max_length # Function to generate summary using the EasyTerms/legalSummerizerET model def generate_summary(contract_text): summary = summarizer(contract_text, max_length=512, min_length=50, length_penalty=2.0, num_beams=4, early_stopping=True) return summary[0]['summary_text'] # Function to handle feedback and store it in a CSV file def handle_feedback(feedback_data, feedback_file): feedback_df = pd.DataFrame(feedback_data, columns=['Contract', 'Summary', '👍', '👎']) # Save the dataframe to the feedback CSV file feedback_df.to_csv(feedback_file, mode='a', index=False, header=not st.session_state.feedback_csv_exists) # Display a feedback collected message only if thumbs up or thumbs down is clicked if '👍' in feedback_df['👍'].values or '👎' in feedback_df['👎'].values: st.success("Feedback collected successfully!") # Display a download button for the user st.markdown(get_binary_file_downloader_html(feedback_file, 'Feedback Data'), unsafe_allow_html=True) # Function to create a download link for a binary file def get_binary_file_downloader_html(file_path, file_label): with open(file_path, 'rb') as file: file_content = file.read() b64 = base64.b64encode(file_content).decode() return f'Click here to download {file_label}' # Main Streamlit app def main(): st.title("Legal Contract Summarizer with Feedback") # Input area for legal contract contract_text = st.text_area("Enter the legal contract:", height=200) # Increase the height to handle larger contracts # Button to generate summary if st.button("Generate Summary"): summary = generate_summary(contract_text) st.subheader("Generated Summary:") st.write(summary) # Feedback section st.subheader("Feedback:") thumbs_up = st.button("👍") thumbs_down = st.button("👎") chosen = "👍" if thumbs_up else None rejected = "👎" if thumbs_down else None feedback_data.append((contract_text, summary, chosen, rejected)) # Handle feedback data if feedback_data: feedback_file = 'feedback.csv' st.session_state.feedback_csv_exists = True handle_feedback(feedback_data, feedback_file) # Initialize feedback data feedback_data = [] # Run the app if __name__ == "__main__": main()