Trip-Scheduler / app.py
Ashish08's picture
Update app.py
5b51478 verified
raw
history blame contribute delete
No virus
3.47 kB
import os
import random
from datetime import datetime, timedelta, date, time
import openai
import streamlit as st
from dotenv import load_dotenv
from typing import Dict
# Load environment variables from a .env file
load_dotenv()
# Set the OpenAI API key from the .env file
openai.api_key = os.getenv('OPENAI_API')
# List of example destinations
example_destinations: list[str] = [
'Paris', 'London', 'New York', 'Tokyo', 'Sydney',
'Hong Kong', 'Singapore', 'Warsaw', 'Mexico City', 'Palermo'
]
# Randomly choose a destination
random_destination: str = random.choice(example_destinations)
# Get the current time and round to the nearest 15 minutes
now_date: datetime = datetime.now()
now_date = now_date.replace(minute=now_date.minute // 15 * 15, second=0, microsecond=0)
# Split into date and time objects
now_time: time = now_date.time()
now_date: date = now_date.date() + timedelta(days=1)
def generate_prompt(
destination: str,
arrival_to: str,
arrival_date: str,
arrival_time: str,
departure_from: str,
departure_date: str,
departure_time: str,
additional_information: str,
**kwargs: Dict[str, str]
) -> str:
"""Generate a trip schedule prompt based on the provided information."""
return f'''
Prepare trip schedule for {destination}, based on the following information:
* Arrival To: {arrival_to}
* Arrival Date: {arrival_date}
* Arrival Time: {arrival_time}
* Departure From: {departure_from}
* Departure Date: {departure_date}
* Departure Time: {departure_time}
* Additional Notes: {additional_information}
'''.strip()
def submit() -> None:
"""Generate trip schedule based on user input and display the output."""
prompt: str = generate_prompt(**st.session_state)
# generate output
output = openai.Completion.create(
engine='gpt-3.5-turbo-instruct',
prompt=prompt,
temperature=0.45,
top_p=1,
frequency_penalty=2,
presence_penalty=0,
max_tokens=1024
)
st.session_state['output'] = output['choices'][0]['text']
# Initialization
if 'output' not in st.session_state:
st.session_state['output'] = '--'
# UI Elements
st.title('GPT-3 Trip Scheduler')
st.subheader('Let us plan your trip!')
# Form for User Input
with st.form(key='trip_form'):
c1, c2, c3 = st.columns(3)
with c1:
st.subheader('Destination')
origin: str = st.text_input('Destination', value=random_destination, key='destination')
st.form_submit_button('Submit', on_click=submit)
with c2:
st.subheader('Arrival')
st.selectbox('Arrival To', ('Airport', 'Train Station', 'Bus Station', 'Ferry Terminal', 'Port', 'Other'), key='arrival_to')
st.date_input('Arrival Date', value=now_date, key='arrival_date')
st.time_input('Arrival Time', value=now_time, key='arrival_time')
with c3:
st.subheader('Departure')
st.selectbox('Departure From', ('Airport', 'Train Station', 'Bus Station', 'Ferry Terminal', 'Port', 'Other'), key='departure_from')
st.date_input('Departure Date', value=now_date + timedelta(days=1), key='departure_date')
st.time_input('Departure Time', value=now_time, key='departure_time')
st.text_area('Additional Information', height=200, value='I want to visit as many places as possible! (respect time)', key='additional_information')
# Display Generated Trip Schedule
st.subheader('Trip Schedule')
st.write(st.session_state.output)