Restaurantguide / main.py
dhanvanth183's picture
Upload 16 files
267bd16 verified
import gradio as gr
from chromadblocal import DataHandler
from queryhandler import QueryHandler
# Initialize the DataHandler to access the ChromaDB collection and get unique cities
data_handler = DataHandler()
available_cities = data_handler.get_unique_cities() # Get list of unique cities
# Initialize the QueryHandler with the ChromaDB collection
query_handler = QueryHandler(data_handler.get_collection())
# Function to handle user queries
def process_query(user_prompt):
# Query the collection and return top results
results = query_handler.query(user_prompt, n_results=5)
# Generate the response based on the query results
recommendation_text, image_paths = query_handler.generate_response(results, user_prompt)
# Return response text and image paths (not gr.Image components)
return recommendation_text, image_paths # Return text and image paths
# Display greeting message along with available cities
def display_greeting_and_cities():
greeting = ("Hi there! Got questions about restaurants, cuisines, locations, ratings, or costs in these cities?"
" Just ask, and I’ll be thrilled to help you find what you need!")
cities_list = ", ".join(available_cities)
return f"{greeting}\n\nAvailable cities: {cities_list}"
# Create a Gradio interface
iface = gr.Interface(
fn=process_query, # Function to process input
inputs=gr.Textbox(label="Ask about restaurants, cuisines, or more"), # Custom label for input
outputs=[
gr.Textbox(label="Recommended Restaurants"), # Text output for recommendations
gr.Gallery(label="Restaurant Images") # Gallery to display images
],
title="Restaurant Query System",
description=display_greeting_and_cities() # Show greeting and cities above the input prompt
)
# Launch the Gradio app with allowed_paths specified
if __name__ == "__main__":
iface.launch(
server_name="127.0.0.1",
server_port=7860,
share=True,
allowed_paths=["D:/Projects/Liminal/AI_Guide/resources/uuid_images"] # Specify allowed paths during launch
)