TravelCompanion / app.py
AshokReddy's picture
Upload 3 files
cb27de2
raw
history blame
2.15 kB
## 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/)')
##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