trip-planner / app.py
Amitabhab's picture
Add reference to Sambanova Cloud
c94993c
#!/usr/bin/env python
import sys
import json
import gradio as gr
import plotly.graph_objects as go
import logging
from crew import SurpriseTravelCrew, AddressSummaryCrew
def filter_map(text_list, lat, lon):
fig = go.Figure(go.Scattermapbox(
lat=lat,
lon=lon,
mode='markers',
marker=go.scattermapbox.Marker(
size=11
),
hovertext=text_list
))
fig.update_layout(
mapbox_style="open-street-map",
hovermode='closest',
mapbox=dict(
bearing=0,
center=go.layout.mapbox.Center(
lat=lat[1],
lon=lon[1]
),
pitch=0,
zoom=10
),
)
return fig
def run(origin, destination, age, trip_duration, children, budget):
# Replace with your inputs, it will automatically interpolate any tasks and agents information
logger.info(f"Origin: {origin}, Destination: {destination}, Age: {age}, Duration: {trip_duration}, Children: {children}, Daily Budget: {budget}")
inputs = {
'origin': origin,
'destination': destination,
'age': age,
'trip_duration': trip_duration,
'children': children,
'budget': budget
}
result = SurpriseTravelCrew().crew().kickoff(inputs=inputs)
inputs_for_address = {
'text': str(result)
}
addresses = AddressSummaryCrew().crew().kickoff(inputs=inputs_for_address)
json_addresses = None
if addresses.json_dict:
json_addresses = addresses.json_dict
if not json_addresses:
try:
json_addresses = json.loads(addresses.raw)
except json.JSONDecodeError as e:
print ("Error loading Crew Output for addresses")
return (result, None)
fig = filter_map(json_addresses["name"], json_addresses["lat"], json_addresses["lon"])
return (result, fig)
logger = logging.getLogger()
logger.setLevel(logging.INFO)
demo = gr.Interface(
title="Plan your itinerary with the help of AI",
description="Use this app to create a detailed itinerary on how to explore a new place. Itinerary is customized to your taste. Powered by Sambanova Cloud.",
fn=run,
inputs=["text", "text", gr.Slider(value=30, minimum=15, maximum=90, step=5),
gr.Slider(value=5, minimum=1, maximum=14, step=1),
gr.Checkbox(),
gr.Slider(value=100, minimum=20, maximum=1000, step=20)],
outputs=[
gr.Textbox(label="Complete Itinerary", show_copy_button=True, autoscroll=False),
gr.Plot(label="Venues on a Map. Please verify with a Navigation System before going")
]
)
demo.launch()