import streamlit as st import re import openai from paraphrase_post import get_original_url , paraphrased_post from advance_post import google_search , advanced_post from langchain_community.chat_models import ChatOpenAI from langchain_groq import ChatGroq #from langchain import HuggingFaceHub def main(): st.title("LinkedIn Post Creator") # Initialize SessionState dictionary session_state = st.session_state if 'paraphrase' not in session_state: session_state.paraphrase = "" if 'keywords' not in session_state: session_state.keywords = "" if 'take_aways' not in session_state: session_state.take_aways = "" if 'highlights' not in session_state: session_state.highlights = "" if 'advancepost' not in session_state: session_state.advancepost = "" url = st.sidebar.text_input("Enter URL:", placeholder="Enter URL here...") option = st.sidebar.selectbox('Select Model:', ('GPT-4',"Mixtral-8x7b","Gemma-7b")) temperature= st.sidebar.select_slider( 'How much accurate post you want ?', options=['Less accuracy', 9, 8, 7, 6, 5,4,3 ,2,1,'High accuracy']) if temperature=='Less accuracy': temperature=10 elif temperature=="High accuracy": temperature=0 temperature=temperature/10 if option=="GPT-4": api_key=st.sidebar.text_input("API Key:",placeholder="Enter OpenAI API Key...") if api_key: model=ChatOpenAI(model="gpt-4-turbo-preview" , temperature=temperature , api_key=api_key) elif option=="Mixtral-8x7b": api_key= st.sidebar.text_input("API Key:",placeholder="Enter Groq API Key...") if api_key: model = ChatGroq(temperature=temperature,groq_api_key=api_key, model_name="mixtral-8x7b-32768") elif option=="Gemma-7b": api_key=st.sidebar.text_input("API Key:",placeholder="Enter Groq API Key...") if api_key: model= ChatGroq(temperature=temperature,groq_api_key=api_key , model_name="Gemma-7b-It") # elif option=="Llama-3": # api_key=st.sidebar.text_input("API Key:",placeholder="Enter HuggingFace API Token...") # if api_key: # model=HuggingFaceHub(repo_id="mistralai/Mixtral-8x22B-Instruct-v0.1",huggingfacehub_api_token=api_key ,model_kwargs={"temperature":temperature}) if st.sidebar.button("Submit"): if url: if api_key: original_url = get_original_url(url) match = re.match(r"https?://(?:www\.)?linkedin\.com/(posts|feed|pulse)/.*", original_url) # checking domain and url page (means it should only be a post nothing else like login page or something else) if match: try: session_state.paraphrase, session_state.keywords, session_state.take_aways, session_state.highlights = paraphrased_post(url , model) except (openai.AuthenticationError) as e: st.sidebar.error("Enter your valid API key") else: st.sidebar.error("Put a valid LinkedIn post url only") else: st.sidebar.error("Please enter API Key") else: st.sidebar.error("Please enter url") paraphrase_text=st.text_area("Generated LinkedIn post",value=session_state.paraphrase, height=400) # import pyperclip # if st.button('Copy'): # pyperclip.copy(paraphrase_text) # st.success('Text copied successfully!') if st.sidebar.toggle("Show Details") and session_state.keywords: st.write("Keywords:") for i, statement in enumerate(session_state.keywords, start=1): st.write(f"{i}. {statement}") st.write("Take Aways:") for i, statement in enumerate(session_state.take_aways, start=1): st.write(f"{i}. {statement}") st.write("Highlights:") for i, statement in enumerate(session_state.highlights, start=1): st.write(f"{i}. {statement}") #------------------------------------------------------------Advance LinkedIn post code below----------------------------------------------------------------- if st.sidebar.toggle("Advance LinkedIn Post"): google_api_key=st.sidebar.text_input("Google API Key:",placeholder="Enter Google Search API Key...") search_engine_id=st.sidebar.text_input("Search Engine ID:",placeholder="Enter Search Engine ID...") google_api_key = "AIzaSyDh-lkJh2Zef0t6UVqSu_w3njpucx40mDc" search_engine_id = "44bbd32a2b2fc4418" if st.sidebar.button("Generate Advance Post"): if google_api_key: if search_engine_id: all_links =google_search(session_state.paraphrase ,model , google_api_key,search_engine_id) session_state.advancepost = advanced_post(all_links ,model ,session_state.paraphrase) # if len(docs)==0: # st.sidebar.error("Please Check your both credentials carefully") else: st.sidebar.error("Please enter Search Engine ID") else: st.sidebar.error("Please enter Google API Key") advance_post=st.text_area("Advance LinkedIn post",value=session_state.advancepost, height=400) # if st.button('Copy Advanced Post'): # pyperclip.copy(advance_post) # st.success('Text copied successfully!') #-------------------------------------------------------------------------------------------------------------------------------------------------------------- if __name__ == "__main__": main()