{"repo": "0xzee/groq-chatbot", "files": {"app.py": {"6d0421baf3f3b5c1afa048dcef95abe1fee0ff80": {"t": 1785674392.2018917, "n": 3872, "h": "0c925e9618cf3edf", "c": "import streamlit as st\nfrom comp.functions import set_simple_chat_engine\n\n\n#### UI\n#### page config\nst.set_page_config(page_title=\"Groq ChatBot\", page_icon=\":space_invader:\",\n layout=\"centered\", initial_sidebar_state=\"auto\", menu_items=None)\n\n\n#### sidebar\nwith st.sidebar:\n st.subheader(\"🤖 :orange-background[0xZee] Groq Llama3 ChatBot\", divider=\"orange\")\n st.subheader(\"🔐 GROQ INFERENCE API\", divider=\"grey\")\n if (\"GROQ_API\" in st.secrets and st.secrets['GROQ_API'].startswith('gsk_')):\n st.success(':white_check_mark: GROQ API ')\n st.success(':white_check_mark: LLM Llama3')\n api_key = st.secrets['GROQ_API']\n else:\n api_key = st.text_input('Enter your Groq API Key', type='password')\n if not (api_key.startswith('gsk_') and len(api_key) == 56):\n st.warning(\"Enter a Valid GROQ API key\")\n else:\n st.success('GROQ API Key Provided')\n\n st.subheader(\"⚙️ CHAT SESSION PARAM.\", divider=\"grey\")\n if st.button(\"Clear Chat Session\", use_container_width=True, type=\"primary\"):\n st.session_state[\"messages\"] = [\n {\"role\": \"assistant\", \"content\": \":sparkles: Hi, I'm here to help, How can I assist you today ? :star:\"}]\n\n if st.button(\"Clear Chat Memory\", use_container_width=True, type=\"secondary\"):\n st.session_state[\"chat_engine\"].reset()\n st.text(\"\")\n st.text(\"\")\n st.text(\"💻 https://github.com/0xZee/groq-chatbot/\")\n\n\n#### main page\nwith st.container(border=True):\n c1, c2 = st.columns([1, 6])\n with c1:\n st.image(\"./media/zee.jpg\", width=60)\n with c2:\n st.subheader(\n \"💬 :orange-background[GROQ] :orange[CHATBOT] 🤖 \", divider='orange')\n\n\n#### Function Append message history\ndef add_to_message_history(role, content):\n message = {\"role\": role, \"content\": str(content)}\n st.session_state[\"messages\"].append(\n message\n )\n####\n#### CHAT SESSION\n\nif api_key:\n try:\n # Set chat engin\n if \"chat_engine\" not in st.session_state:\n try:\n st.session_state[\"chat_engine\"] = set_simple_chat_engine(api_key=api_key)\n except Exception as e:\n st.error(f\"error occurred in setting chat engine : {e}\")\n # Initialize the chat messages history\n if \"messages\" not in st.session_state:\n st.session_state[\"messages\"] = [\n {\"role\": \"assistant\", \"content\": \"Ask me a question or tell me what comes in your mind !\"}\n ]\n # Display the prior chat messages\n for message in st.session_state[\"messages\"]:\n with st.chat_message(message[\"role\"]):\n st.write(message[\"content\"])\n ## Prompting\n ## Prompt for user input and save to chat history\n if prompt := st.chat_input(\"Your question\"):\n add_to_message_history(\"user\", prompt)\n\n # Display the new question immediately after it is entered\n with st.chat_message(\"user\"):\n st.write(prompt)\n # If last message is not from assistant, generate a new response\n # if st.session_state[\"messages\"][-1][\"role\"] != \"assistant\":\n with st.chat_message(\"assistant\"):\n response = st.session_state[\"chat_engine\"].stream_chat(prompt)\n response_str = \"\"\n response_container = st.empty()\n for token in response.response_gen:\n response_str += token\n response_container.markdown(response_str)\n #st.write(response.source)\n add_to_message_history(\"assistant\", response.response)\n\n # Save the state of the generator\n st.session_state[\"response_gen\"] = response.response_gen\n #\n #\n except Exception as e:\n st.error(f\"error occurred in chat session : {e}\")\n\n\n"}}}}