import streamlit as st import re import openai from paraphrase_post import get_original_url , paraphrased_post from advance_post import google_search from langchain_community.chat_models import ChatOpenAI from langchain_cohere import ChatCohere from streaming_response import StreamHandler from blog_post import post_from_content # from langchain_nvidia_ai_endpoints import ChatNVIDIA #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-4o',"Cohere")) 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 # stream_handler = StreamHandler(st.empty()) if option=="GPT-4o": api_key=st.sidebar.text_input("API Key:",placeholder="Enter OpenAI API Key...") if api_key: stream_handler = StreamHandler(st.empty()) model=ChatOpenAI(model="gpt-4o" , temperature=temperature , api_key=api_key , streaming=True, callbacks=[stream_handler]) elif option=="Cohere": api_key= st.sidebar.text_input("API Key:",placeholder="Enter Cohere API Key...") if api_key: stream_handler = StreamHandler(st.empty()) model = ChatCohere(cohere_api_key=api_key,temperature=temperature , streaming=True, callbacks=[stream_handler]) #model = ChatCohere(cohere_api_key=api_key , temperature = temperature , model = "command-r-plus") # elif option=="Mixtral-8x7b": # api_key=st.sidebar.text_input("API Key:",placeholder="Enter NVIDIA NIM API Key...") # if api_key: # model = ChatNVIDIA(model="mixtral_8x7b",api_key = api_key , temperature=temperature) # 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.toggle("Normal LinkedIn Post"): url = st.sidebar.text_input("Enter URL:", placeholder="Enter URL here...") 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 = 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") from paraphrase_post import generate_details if st.sidebar.button("Show Details"): session_state.keywords =generate_details(session_state.paraphrase , model) # 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!') # from paraphrase_post import extract_data # # session_state.keywords , session_state.take_aways , session_state.highlights =extract_data(session_state.paraphrase , model) # from paraphrase_post import generate_details # if st.sidebar.button("Show Details"): # session_state.keywords =generate_details(session_state.paraphrase , model) # session_state.take_aways =generate_takeaways(session_state.paraphrase , model) # session_state.highlights =generate_highlights(session_state.paraphrase , model) # 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"): url = st.sidebar.text_input("Enter URL", placeholder="Enter URL here...") 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 = "AIzaSyABoOsfUbydc1AfVf2Zjto4MFWNgjLSJmY" search_engine_id = "243a392ba3dff442c" if st.sidebar.button("Generate Advance Post"): if url: if api_key: if option=="GPT-4o": model=ChatOpenAI(model="gpt-4o" , temperature=temperature , api_key=api_key) elif option=="Cohere": model = ChatCohere(cohere_api_key=api_key,temperature=temperature) if google_api_key: if search_engine_id: 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.advancepost =google_search(url ,model , google_api_key,search_engine_id) # session_state.advancepost = advanced_post(all_links ,model ,session_state.paraphrase) except (openai.AuthenticationError) as e: st.sidebar.error("Enter your valid API key") else: st.sidebar.error("Put a valid LinkedIn post url only") # 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") else: st.sidebar.error("Please enter API key") else: st.sidebar.error("Please enter url") advance_post=st.text_area("Advance LinkedIn post",value=session_state.advancepost, height=400) # from streaming_response import StreamHandler if st.sidebar.toggle("Message"): content=st.sidebar.text_area("Paste your content" ,height=300) if st.sidebar.button("Generate Post"): if content: if api_key: # with st.container(height=500): # stream_handler = StreamHandler(st.empty()) # model = ChatCohere(cohere_api_key=api_key,temperature=temperature , streaming=True, callbacks=[stream_handler]) post_from_content(model ,content) else: st.sidebar.error("Please enter API Key") else: st.sidebar.error("You have not provided any content in Textbox") # if st.button('Copy Advanced Post'): # pyperclip.copy(advance_post) # st.success('Text copied successfully!') #-------------------------------------------------------------------------------------------------------------------------------------------------------------- # if __name__ == "__main__": # main()