Spaces:
Build error
Build error
| import streamlit as st | |
| import os | |
| from langchain_core.prompts import ChatPromptTemplate | |
| from langchain_google_genai import ChatGoogleGenerativeAI | |
| from langchain_core.prompts import MessagesPlaceholder | |
| from langchain.memory import ConversationBufferWindowMemory | |
| from operator import itemgetter | |
| from langchain_core.runnables import RunnableLambda, RunnablePassthrough | |
| # Set the API key for Google Generative AI | |
| os.environ['GOOGLE_API_KEY'] = 'AIzaSyBHPIIk4-BOgXvnQ2_o6c2wTGpY2ByRIDs' | |
| # Initialize the Google Generative AI model | |
| model_gemini = ChatGoogleGenerativeAI(model='gemini-pro', temperature=0, max_output_tokens=500, convert_system_message_to_human=True) | |
| # Define the prompt | |
| prompt = ChatPromptTemplate.from_messages( | |
| [ | |
| ('system', 'you are a good assistant.'), | |
| MessagesPlaceholder(variable_name='history'), | |
| ("human", "{input}") | |
| ] | |
| ) | |
| # Initialize memory in session state | |
| if 'memory' not in st.session_state: | |
| st.session_state.memory = ConversationBufferWindowMemory(k=10, return_messages=True) | |
| # Define the chain | |
| chain = (RunnablePassthrough.assign(history=RunnableLambda(st.session_state.memory.load_memory_variables) | itemgetter("history")) | | |
| prompt | model_gemini) | |
| # Streamlit app | |
| st.title("Interactive Chatbot") | |
| # Initialize session state for user input | |
| if 'user_input' not in st.session_state: | |
| st.session_state.user_input = "" | |
| # Input from user | |
| user_input = st.text_area("User: ", st.session_state.user_input, height=100) | |
| if st.button("Submit"): | |
| response = chain.invoke({"input": user_input}) | |
| st.write(f"Assistant: {response.content}") | |
| st.session_state.memory.save_context({"input": user_input}, {"output": response.content}) | |
| st.session_state.user_input = "" # Clear the input box | |
| # Display chat history | |
| if st.checkbox("Show Chat History"): | |
| chat_history = st.session_state.memory.load_memory_variables({}) | |
| st.write(chat_history) | |