Spaces:
Sleeping
Sleeping
import streamlit as st | |
import datetime | |
from openai import OpenAI | |
import os | |
from prompts import PROMPT_FOR_MANDATE | |
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") | |
client = OpenAI(api_key=OPENAI_API_KEY) | |
st.set_page_config(page_title="AI Trip Planner") | |
if 'clicked' not in st.session_state: | |
st.session_state.clicked = False | |
def click_button(): | |
st.session_state.clicked = True | |
with st.sidebar: | |
st.title("Your AI Trip Planner!") | |
where_to = st.text_area("Where To?") | |
number_of_days = st.text_area("How many days?") | |
itinerary_type = st.multiselect( | |
"Itinerary Type(s):", | |
( | |
"Standard", | |
"Adventure", | |
"Bachelor Party", | |
"Bachelor Party", | |
"Bicycling", | |
"City Experiences", | |
"Cultural Immersion", | |
"Dog Friendly", | |
"Eco Friendly", | |
"Educational", | |
"Family Friendly", | |
"Foodie", | |
"Honeymoon", | |
"Luxury", | |
"Motorcycle Riding", | |
"Nature", | |
"Relaxation", | |
"Rail/Train Trip", | |
"Road Trip", | |
"Shoestring Budget", | |
"Volunteering", | |
) | |
) | |
when_your_trip_start = st.date_input("When your trip start?", datetime.date(2024, 7, 6)) | |
when_your_trip_end = st.date_input("When your trip end?", datetime.date(2024, 7, 8)) | |
travel_preference = st.text_area("Any travel preference?") | |
st.button("Generate Trip Plan", on_click=click_button) | |
if st.session_state.clicked: | |
if where_to and number_of_days and itinerary_type: | |
message_placeholder = st.empty() | |
full_response = "" | |
prompt = f"""PLACE:```{where_to}``` , NUMBER_OF_DAYS:```{number_of_days}```, TRIP_TYPE: ```{itinerary_type}```""" + \ | |
PROMPT_FOR_MANDATE | |
for response in client.chat.completions.create( | |
model="gpt-4", | |
messages=[{'role': 'user', 'content': prompt}], | |
stream=True, | |
): | |
if response.choices[0].delta.content is not None: | |
full_response += response.choices[0].delta.content | |
message_placeholder.markdown(full_response + "▌") | |
message_placeholder.markdown(full_response) | |
elif where_to and number_of_days and itinerary_type or when_your_trip_start or when_your_trip_end or travel_preference: | |
message_placeholder = st.empty() | |
full_response = "" | |
prompt = f"""PLACE:```{where_to}``` , NUMBER_OF_DAYS:```{number_of_days}```, TRIP_TYPE: ```{itinerary_type}```, | |
TRIP_START: ```{when_your_trip_start}```, TRIP_END:```{when_your_trip_end}```, TRAVEL_PREFERENCE:```{travel_preference}```""" + \ | |
PROMPT_FOR_MANDATE | |
for response in client.chat.completions.create( | |
model="gpt-4", | |
messages=[{'role': 'user', 'content': prompt}], | |
stream=True, | |
): | |
if response.choices[0].delta.content is not None: | |
full_response += response.choices[0].delta.content | |
message_placeholder.markdown(full_response + "▌") | |
message_placeholder.markdown(full_response) | |