Spaces:
Build error
Build error
| import gradio as gr | |
| import os | |
| from gradio.themes import Size, GoogleFont | |
| from agents.gather_agent import Gather_Agent | |
| from agents.check_agent import Check_Agent | |
| from agents.response_agent import Response_Agent | |
| from agents.planner_agent import Planner_Agent | |
| import get_map | |
| # Create custom Color objects for our primary, secondary, and neutral colors | |
| primary_color = gr.themes.colors.green | |
| secondary_color = gr.themes.colors.amber | |
| neutral_color = gr.themes.colors.stone # Assuming black for text | |
| # Set the sizes | |
| spacing_size = gr.themes.sizes.spacing_md | |
| radius_size = gr.themes.sizes.radius_md | |
| text_size = gr.themes.sizes.text_md | |
| # Set the fonts | |
| font = GoogleFont("Source Sans Pro") | |
| font_mono = GoogleFont("IBM Plex Mono") | |
| # Create the theme | |
| theme = gr.themes.Base( | |
| primary_hue=primary_color, | |
| secondary_hue=secondary_color, | |
| neutral_hue=neutral_color, | |
| spacing_size=spacing_size, | |
| radius_size=radius_size, | |
| text_size=text_size, | |
| font=font, | |
| font_mono=font_mono | |
| ) | |
| gather_agent = Gather_Agent() | |
| check_agent = Check_Agent() | |
| response_agent = Response_Agent() | |
| planner_agent = Planner_Agent() | |
| def send_message(user_input, chat_history): | |
| isComplete = False | |
| helper_anwser = "" | |
| _input_gather = gather_agent.format_prompt(history=chat_history, input=user_input) | |
| parsed_result_gather = gather_agent.get_parsed_result(_input_gather) | |
| _input_check = check_agent.format_prompt(input=parsed_result_gather) | |
| isComplete = check_agent.get_parsed_result(_input_check) | |
| if isComplete == False: | |
| _input_response = response_agent.format_prompt(input=parsed_result_gather) | |
| helper_anwser = response_agent.get_parsed_result(_input_response) | |
| # _input_check = check_agent.format_prompt(input=parsed_result_gather) | |
| # isComplete, helper_anwser = check_agent.get_parsed_result(_input_check) | |
| return isComplete, helper_anwser, parsed_result_gather | |
| def get_itenerary(parsed_result_gather): | |
| _input_planner = planner_agent.format_prompt(parsed_result_gather) | |
| return planner_agent.get_itenerary(_input_planner) | |
| def get_itenerary_places(itenerary): | |
| _input_places = planner_agent.format_prompt_to_get_places(itenerary) | |
| return planner_agent.get_places_from_itenerary(_input_places) | |
| # isComplete = False | |
| # chat_history = "" | |
| # helper_anwser = "Hello, can you tell me your trip details and constraints so I can give you great recomendations?" | |
| # user_input = input("Helper: " + helper_anwser + "\nUser: ") | |
| with gr.Blocks(theme=theme, title="TrainLine") as demo: | |
| gr.Markdown( | |
| """ | |
| <div style="vertical-align: middle"> | |
| <div style="float: left"> | |
| <img src="https://static.trainlinecontent.com/content/vul/logos/trainline-mint.svg" alt="" | |
| width="120" height="120"> | |
| </div> | |
| </div> | |
| """) | |
| helper_anwser = "Hello, can you tell me your trip details and constraints so I can give you great recomendations?" | |
| with gr.TabItem("Travel Companion"): | |
| chatbot = gr.Chatbot(value=[[None, helper_anwser]]) | |
| user_input = gr.Textbox() | |
| gr.Examples([ | |
| "I want to go to Rome. can you recommend a site seeing tour for one day?", | |
| "I like to walk a lot and i prefer to visit fine arts museums", | |
| "Porto for 3 days. i will arrive on monday and leave on thursday. i can only visit places after 5pm so be " | |
| "sure i can visit those places", | |
| "I would like to plan a trip to Europe with my family of four. We want to visit Paris, Rome, and Madrid in " | |
| "10 days. Can you suggest an itinerary that includes transportation and accommodations? " | |
| "Also, please provide information on the best restaurants in each city for a budget of $50 per person per meal." | |
| ], user_input) | |
| with gr.TabItem("Map"): | |
| map = gr.Plot(visible=True).style() | |
| result_df = gr.Dataframe(type="pandas", visible=True) | |
| isComplete = False | |
| history = "" | |
| locations = [] | |
| def user(user_message, history): | |
| print(user_message, history) | |
| return gr.update(value="", interactive=False), history + [[user_message, None]] | |
| # def bot(chat_history): | |
| # print(chat_history) | |
| # # Create history | |
| # history = "" | |
| # for i in range(len(chat_history)-1): | |
| # history += "User: " + chat_history[i][0] + "\nHelper: " + chat_history[i][1] + "\n" | |
| # history += "User: " + chat_history[-1][0] | |
| # # isComplete, helper_anwser, data_collected = send_message(message, history) | |
| # # if isComplete == True: | |
| # # helper_anwser = get_itenerary(data_collected) | |
| # # chat_history.append((message, helper_anwser)) | |
| # return "", chat_history | |
| def respond(chat_history): | |
| print(chat_history) | |
| # Create history | |
| history = "" | |
| for i in range(1, len(chat_history) - 1): | |
| history += "User: " + chat_history[i][0] + "\nHelper: " + chat_history[i][1] + "\n" | |
| message = chat_history[-1][0] | |
| print(history) | |
| print(message) | |
| isComplete, helper_anwser, data_collected = send_message(message, history) | |
| chat_history.pop(-1) | |
| if isComplete == True: | |
| itenerary = get_itenerary(data_collected) | |
| locations = get_itenerary_places(itenerary) | |
| helper_anwser = itenerary + "\nList of places with adresses: " + str(locations) | |
| map, result_df = get_map.filter_map(locations) | |
| chat_history.append((message, helper_anwser)) | |
| return chat_history, map, result_df | |
| chat_history.append((message, helper_anwser)) | |
| return chat_history, None, None | |
| # user_input.submit(respond, [user_input, chatbot], [user_input, chatbot]) | |
| response = user_input.submit(user, [user_input, chatbot], [user_input, chatbot], queue=False).then( | |
| respond, chatbot, [chatbot, map, result_df] | |
| ) | |
| response.then(lambda: gr.update(interactive=True), None, [user_input], queue=False) | |
| # if map != None: | |
| # map.update(visible=True) | |
| # result_df.update(visible=True) | |
| demo.launch(auth=( os.environ["USER"],os.environ["PASSWORD"])) | |
| # while isComplete == False: | |
| # isComplete, helper_anwser, data_collected = main.send_message(user_input, chat_history) | |
| # if isComplete == False: | |
| # chat_history += "User: " + user_input + "\nHelper: " + helper_anwser + "\n" | |
| # user_input = input("Helper: " + helper_anwser + "\nUser: ") | |
| # itenerary_response = main.get_itenerary(data_collected) | |
| # I would like to go to paris, from 12th of july to 15th of July, I want to visit museums, eat at local restaurants and visit the louvre on my first day. My son is allergic to peanuts, and I like to sleep in, so please don't book anything before 11am. I would also like to not get further then 2km from the city's center. |