Spaces:
Running
Running
import validators,streamlit as st | |
from langchain.prompts import PromptTemplate | |
from langchain_groq import ChatGroq | |
from langchain.chains.summarize import load_summarize_chain | |
from langchain_community.document_loaders import YoutubeLoader,UnstructuredURLLoader | |
import os | |
from dotenv import load_dotenv | |
# setting streamlit | |
st.set_page_config(page_title="DEmo for summarization") | |
st.title("Summarize it for me") | |
st.markdown(''' | |
:red[ I Can summarize] :orange[url content] :green[Supply] :blue[Url in the box] .''') | |
st.markdown(''' | |
:blue[ created by] :orange[sunny Kumar].''') | |
st.markdown(''' | |
:blue[ contact me at] :orange[[email protected]].''') | |
st.markdown(''' | |
:blue[linkdin] :orange[https://www.linkedin.com/in/sunny-kumar-b232417a/].''') | |
# groq API | |
#with st.sidebar: | |
# groq_api_key = st.text_input("Groq API Key",value="",type="password") | |
os.environ["GROQ_API_KEY"] = os.getenv("GROQ_API_KEY") | |
my_url = st.text_input("URL") | |
llm = ChatGroq( | |
model="llama-3.1-8b-instant", | |
temperature=0, | |
max_tokens=None, | |
timeout=None, | |
max_retries=2 | |
) | |
prompt_template=""" | |
summarize the following content in not more than 400 words: | |
Content:{text} | |
""" | |
prompt=PromptTemplate(template=prompt_template,input_variables=["text"]) | |
if st.button("Summarize the Content from YT or Website"): | |
## Validate all the inputs | |
if not my_url.strip(): | |
st.error("Please provide the information to get started") | |
elif not validators.url(my_url): | |
st.error("Please enter a valid Url. It can may be a YT video utl or website url") | |
else: | |
try: | |
with st.spinner("Waiting..."): | |
## loading the website or yt video data | |
if "youtube.com" in my_url: | |
loader=YoutubeLoader.from_youtube_url(my_url,add_video_info=True) | |
else: | |
loader=UnstructuredURLLoader(urls=[my_url],ssl_verify=False, | |
headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"}) | |
docs=loader.load() | |
## Chain For Summarization | |
chain=load_summarize_chain(llm,chain_type="stuff",prompt=prompt) | |
output_summary=chain.run(docs) | |
st.success(output_summary) | |
except Exception as e: | |
st.exception(f"Exception:{e}") | |