Download app.py from GJ007/ChatBotV1: direct link, hf CLI and curl.
- Browser
- Download file 3.82 kB
-
https://huggingface.co/spaces/GJ007/ChatBotV1/resolve/main/app.py
- Command line
-
hf download hf://spaces/GJ007/ChatBotV1/app.py
-
curl -L -o app.py https://huggingface.co/spaces/GJ007/ChatBotV1/resolve/main/app.py
3.82 kB
| import streamlit as st | |
| import os | |
| import random, string | |
| from langchain.chains import LLMChain | |
| from langchain_core.prompts import ( | |
| ChatPromptTemplate, | |
| HumanMessagePromptTemplate, | |
| MessagesPlaceholder, | |
| ) | |
| from langchain_core.messages import SystemMessage | |
| from langchain.chains.conversation.memory import ConversationBufferWindowMemory | |
| from langchain_groq import ChatGroq | |
| if 'chat_list' not in st.session_state: | |
| st.session_state.chat_list = [] | |
| def arr(): | |
| for c_list in st.session_state.chat_list: | |
| with st.chat_message("user"): | |
| st.write("Question : " + c_list["ques"]) | |
| with st.chat_message("machine"): | |
| st.write("Answer : " + c_list["ans"]) | |
| def main(): | |
| """ | |
| This function is the main entry point of the application. It sets up the Groq client, the Streamlit interface, and handles the chat interaction. | |
| """ | |
| # Get Groq API key | |
| groq_api_key = st.secrets["Groq_API_key"] | |
| model = 'llama3-8b-8192' | |
| # Initialize Groq Langchain chat object and conversation | |
| groq_chat = ChatGroq( | |
| groq_api_key=groq_api_key, | |
| model_name=model | |
| ) | |
| st.title('Langchain Chatbot With llama3-8b-8192 model') | |
| # print("Hello! I'm your friendly Groq chatbot. I can help answer your questions, provide information, or just chat. I'm also super fast! Let's start our conversation!") | |
| st.markdown("Hello! I'm your friendly Groq chatbot, dev by GJ. I can help answer your questions, provide information, or just chat. I'm also super fast! Let's start our conversation!") | |
| system_prompt = 'You are a friendly conversational chatbot' | |
| conversational_memory_length = 5 # number of previous messages the chatbot will remember during the conversation | |
| if 'memory' not in st.session_state: | |
| st.session_state.memory = ConversationBufferWindowMemory(k=conversational_memory_length, memory_key="chat_history", return_messages=True) | |
| # st.write(st.session_state.memory) | |
| # user_question = st.text_input("Ask a question: ") | |
| user_question = st.chat_input("Ask a question:") | |
| if user_question: | |
| # Construct a chat prompt template using various components | |
| prompt = ChatPromptTemplate.from_messages( | |
| [ | |
| SystemMessage( | |
| content=system_prompt | |
| ), # This is the persistent system prompt that is always included at the start of the chat. | |
| MessagesPlaceholder( | |
| variable_name="chat_history" | |
| ), # This placeholder will be replaced by the actual chat history during the conversation. It helps in maintaining context. | |
| HumanMessagePromptTemplate.from_template( | |
| "{human_input}" | |
| ), # This template is where the user's current input will be injected into the prompt. | |
| ] | |
| ) | |
| # Create a conversation chain using the LangChain LLM (Language Learning Model) | |
| conversation = LLMChain( | |
| llm=groq_chat, # The Groq LangChain chat object initialized earlier. | |
| prompt=prompt, # The constructed prompt template. | |
| verbose=False, # TRUE Enables verbose output, which can be useful for debugging. | |
| memory=st.session_state.memory, # The conversational memory object that stores and manages the conversation history. | |
| ) | |
| # The chatbot's answer is generated by sending the full prompt to the Groq API. | |
| response = conversation.predict(human_input=user_question) | |
| # st.text("Question: " + user_question) | |
| # st.text("Chatbot: " + response) | |
| result = {"ques":user_question, "ans":response} | |
| st.session_state.chat_list.append(result) | |
| arr() | |
| # st.write(st.session_state.memory) | |
| if __name__ == "__main__": | |
| main() |