import streamlit as st
from langchain import OpenAI
from langchain.docstore.document import Document
from langchain.text_splitter import CharacterTextSplitter
from langchain.chains.summarize import load_summarize_chain
from utils.process_data import  pdf_to_text

MODEL = st.secrets["MODEL4"]

def generate_response(txt):
    llm = OpenAI(temperature=0.1, openai_api_key=st.secrets["OPENAI_API_KEY"])
    text_splitter = CharacterTextSplitter()
    texts = text_splitter.split_text(txt)
    docs = [Document(page_content=t) for t in texts]
    chain = load_summarize_chain(llm, chain_type='map_reduce')
    return chain.run(docs)


st.set_page_config(page_title="Summarizer with LLM", page_icon="⚖️")
st.title("Summarize Text")
st.subheader('🚕🔗 LLM/LoadSummarizeChain')
sentence = st.text_area('Please paste your article:', height=100)
button = st.button("Summarize")

with st.spinner("Generating Summary.."):
    if button and sentence:
        response = generate_response(sentence)
        st.write(response)

st.divider()

st.subheader('🚙🔗 Summarize PDF')
pdf_path = st.file_uploader('Upload your PDF Document', type='pdf')
button2 = st.button("Summarize PDF")

if pdf_path is not None and button2:
    text = pdf_to_text(pdf_path)
    with st.spinner("Generating PDF Summary.."):
        response2 = generate_response(text)
        st.subheader('Summary Results:')
        st.write(response2)