## Importing Libraries import streamlit as st from streamlit_chat import message from utils import get_initial_message, get_chatgpt_response, update_chat import openai ## Retrieving the openAI Key from secrets.toml openai.api_key = st.secrets["api_secret"] ##Page Config st.set_page_config(page_title= 'Travel Advisor', page_icon= 'page_icon.jpg') st.title('AI ChatBot - Travel') st.subheader('powered by CloudHub (https://cloudhubs.nl/)') st.markdown("Ask about Travel") ##Choosing the GPT Model model = "gpt-3.5-turbo" #model = "gpt-4" ##Initializing Session if 'generated' not in st.session_state: st.session_state['generated'] = [] if 'past' not in st.session_state: st.session_state['past'] = [] if 'messages' not in st.session_state: st.session_state['messages'] = get_initial_message() ##Chat Display and expand functionality if st.session_state['generated']: for i in range(len(st.session_state['generated'])): message(st.session_state['past'][i], is_user=True, key=str(i) + '_user') message(st.session_state["generated"][i], key=str(i)) # Initialize reset_input flag if 'reset_input' not in st.session_state: st.session_state['reset_input'] = False # Place the user input box and the button at the bottom # Use reset_input flag to determine the default value of the input box default_value = "" if st.session_state['reset_input'] else st.session_state.get('input', '') query = st.text_input('Query: ', value=default_value, key='input') clicked = st.button('Chat!') ##Process the user input with a spinner graph if clicked: with st.spinner("generating..."): messages = st.session_state['messages'] messages = update_chat(messages, "user", query) response = get_chatgpt_response(messages, model) messages = update_chat(messages, "assistant", response) st.session_state.past.append(query) st.session_state.generated.append(response) # Indicate the need to reset the input box on the next render st.session_state['reset_input'] = True st.experimental_rerun() else: # If not clicked, reset the flag st.session_state['reset_input'] = False