Spaces:
Build error
Build error
| from map_search import query_data | |
| import gradio as gr | |
| from gradio.themes.base import Base | |
| import pandas as pd | |
| import plotly.graph_objects as go | |
| def query_data_with_map(question): | |
| if question: | |
| # Assuming query_data returns a tuple: (list_of_arrays, text_from_gemini) | |
| list_of_arrays, text_from_gemini = query_data(question) | |
| # Convert list_of_arrays to a DataFrame | |
| df = pd.DataFrame(list_of_arrays, columns=['title', 'chalet_title', 'final_price', 'unit_custom_title', 'lat', 'lng']) | |
| text_list = [(row['title'], row['unit_custom_title'], row['chalet_title'], row['final_price']) for index, row in df.iterrows()] | |
| fig = go.Figure(go.Scattermapbox( | |
| customdata=text_list, | |
| lat=df['lat'].tolist(), | |
| lon=df['lng'].tolist(), | |
| mode='markers', | |
| marker=go.scattermapbox.Marker( | |
| size=6 | |
| ), | |
| hoverinfo="text", | |
| hovertemplate=( | |
| '<b>Title</b>: %{customdata[0]}<br>' | |
| '<b>Unit Custom Title</b>: %{customdata[1]}<br>' | |
| '<b>Chalet Title</b>: %{customdata[2]}<br>' | |
| '<b>Final Price</b>: SAR %{customdata[3]}' | |
| ) | |
| )) | |
| else: | |
| # Create an empty map | |
| fig = go.Figure(go.Scattermapbox( | |
| lat=[], | |
| lon=[], | |
| mode='markers', | |
| marker=go.scattermapbox.Marker( | |
| size=20 | |
| ) | |
| )) | |
| text_from_gemini = "" | |
| fig.update_layout( | |
| mapbox_style="open-street-map", | |
| hovermode='closest', | |
| mapbox=dict( | |
| bearing=0, | |
| center=go.layout.mapbox.Center( | |
| lat=24.7136, # Latitude for Riyadh | |
| lon=46.6753 # Longitude for Riyadh | |
| ), | |
| pitch=0, | |
| zoom=10 | |
| ) | |
| ) | |
| return fig, text_from_gemini | |
| with gr.Blocks(theme=Base(), title="Riyadh Entertainment Map powered by Smart Search System using Vector Search + RAG") as demo: | |
| gr.Markdown( | |
| """ | |
| # Smart Search System using Atlas Vector Search + RAG Architecture | |
| """) | |
| textbox = gr.Textbox(label="Enter your query here", lines=1) | |
| with gr.Row(): | |
| button = gr.Button("Search", variant="primary") | |
| with gr.Column(): | |
| output1 = gr.Plot(label="Map Output") | |
| output2 = gr.Textbox(lines=1, max_lines=10, label="Output generated by chaining Atlas Vector Search to Langchain's `load_qa_chain` + Gemini flash 1.5 LLM:") | |
| # Load the empty map when the app starts | |
| demo.load(query_data_with_map, inputs=[textbox], outputs=[output1, output2]) | |
| # Call query_data_with_map function upon clicking the Submit button | |
| button.click(query_data_with_map, textbox, outputs=[output1, output2]) | |
| demo.launch(share=True) |