rajsinghparihar
fixed function input dtypes
10eebb7
raw
history blame
3.94 kB
import gradio as gr
import os
from dotenv import load_dotenv
import serpapi
from typing import Optional, Dict
load_dotenv()
def search_flights(
departure_id: str,
arrival_id: str,
outbound_date: str,
return_date: str,
currency: str,
) -> Dict:
"""
Search for flights using Google Flights API via SerpAPI.
This function retrieves flight information including prices, schedules, and airport details
for a given route and date range.
Args:
departure_id (str): The departure airport IATA code (e.g., "HYD" for Hyderabad).
arrival_id (str): The arrival airport IATA code (e.g., "HKT" for Phuket).
outbound_date (str): The outbound date in YYYY-MM-DD format.
return_date (str): The return date in YYYY-MM-DD format.
currency (str): The currency code for prices (e.g., "USD", "EUR").
Returns:
Dict: A dictionary containing flight search results including:
- Price insights
- Best flight options
- Airport information
- Flight schedules
"""
params = {
"engine": "google_flights",
"departure_id": departure_id,
"arrival_id": arrival_id,
"outbound_date": outbound_date,
"return_date": return_date,
"currency": currency,
"hl": "en",
"api_key": os.getenv("SERP_API_KEY"),
}
result = serpapi.search(params)
return result.as_dict()
def search_hotels(
query: str,
check_in_date: str,
check_out_date: str,
num_adults: str,
currency: str,
sort_by_id: Optional[str] = None,
min_price: Optional[str] = None,
max_price: Optional[str] = None,
rating_id: Optional[str] = None,
):
"""
Uses Google Hotels API via SerpAPI to search for hotels and returns property information.
Args:
query (str): The location or hotel name to search for.
check_in_date (str): The check-in date in YYYY-MM-DD format.
check_out_date (str): The check-out date in YYYY-MM-DD format.
num_adults (str): Number of adult guests.
currency (str): The currency code for prices.
sort_by_id (Optional[str]): Parameter is used to sort results (Available options: "3" - Lowest price, "8" - Highest rating, "13" - Most reviewed)
min_price (Optional[str]): Filter for price lower limit.
max_price (Optional[str]): Filter for price upper limit.
rating_id (Optional[str]): Parameter is used for filtering the results to certain rating. (Available options: "7" - 3.5+, "8" - 4.0+, "9" - 4.5+)
Returns:
dict: A dictionary containing hotel properties with their details including
prices, ratings, amenities, and location information.
"""
params = {
"engine": "google_hotels",
"q": query,
"check_in_date": check_in_date,
"check_out_date": check_out_date,
"adults": num_adults,
"currency": currency,
"hl": "en",
"api_key": os.getenv("SERP_API_KEY"),
}
if sort_by_id:
params["sort_by"] = sort_by_id
if min_price:
params["min_price"] = min_price
if max_price:
params["max_price"] = max_price
if rating_id:
params["rating"] = rating_id
result = serpapi.search(params)
result_dict = result.as_dict()
hotel_results = {"properties": []}
if "properties" in result_dict:
hotel_results["properties"] = result_dict["properties"]
return hotel_results
with gr.Blocks(theme="gradio/monochrome") as demo:
with gr.Tab("Search Flights"):
gr.Interface(
fn=search_flights,
inputs=["text"] * 5,
outputs=gr.JSON(),
)
with gr.Tab("Search Hotels"):
gr.Interface(
fn=search_hotels,
inputs=["text"] * 9,
outputs=gr.JSON(),
)
demo.queue(max_size=1)
demo.launch(mcp_server=True)