import streamlit as st from langchain import HuggingFaceHub from langchain.chains.question_answering import load_qa_chain from langchain.document_loaders import UnstructuredURLLoader import os with st.sidebar: st.title('🌎 Summarize your webpage') st.markdown(''' ## About This app is using: - [Streamlit](https://streamlit.io/) - [LangChain](https://python.langchain.com/) - [Flan Alpaca Large](https://huggingface.co/declare-lab/flan-alpaca-large) LLM model ## How it works - Load up a web URL - Send the request to the LLM using the *load_qa_chain* in langchain - Get the answer and from Flan Alpaca Large LLM (open source model on HuggingFace) ''') st.write('Made with 🤖 by [Cazimir Roman](https://cazimir.dev)') def load_app(): llm = HuggingFaceHub(repo_id="declare-lab/flan-alpaca-large", model_kwargs={"temperature":0, "max_length":512}) col1, col2 = st.columns([0.8, 0.2]) url = col1.text_input('Enter a webpage url here to summarize') col2.write("") col2.write("") summarize = col2.button("Summarize") if url: loader = UnstructuredURLLoader(urls=[url]) data = loader.load() if summarize: with st.spinner("Summarizing..."): chain = load_qa_chain(llm=llm, chain_type="stuff") response = chain.run(input_documents=data, question="Summarize this article in one paragraph") st.success(response) def main(): st.header("Summarize your webpage") col1, col2 = st.columns([0.8, 0.2]) container = col1.container() with container: hugging_face_token = os.getenv("HUGGINGFACEHUB_API_TOKEN") api_key = container.text_input("Enter your HuggingFace API token", type="password", value="" if hugging_face_token == None else hugging_face_token) st.markdown('''You can find your token [here](https://huggingface.co/settings/tokens)''') col2.write("") col2.write("") submit = col2.button("Submit") if hugging_face_token: load_app() # submit button is pressed if submit: # check if api key length correct if len(api_key) == 37: os.environ["HUGGINGFACEHUB_API_TOKEN"] = api_key load_app() else: st.error("Api key is not correct") if __name__ == '__main__': main()