otoz-smart-search / utils /mongo_utils.py
teenaxta's picture
Upload 15 files
7baafc3 verified
raw
history blame
2.46 kB
from typing import Dict, Any
def generate_mongodb_query(filters: Dict[str, Any]) -> Dict[str, Any]:
query = {}
# # makeModel
# if filters.get('makeModel') != "NULL":
# query['makeModel'] = filters['makeModel']
# # Model
# if filters.get('model') != "NULL":
# query['model'] = filters['model']
# # Make
# if filters.get('make') != "NULL":
# query['make'] = filters['make']
# # Color
# if filters.get('color') != "NULL":
# query['color'] = filters['color']
# # Features
# if filters.get('features') != "NULL" and filters.get('features'):
# query['features'] = {'$all': filters['features']}
# price
if filters.get('minprice') != "NULL" or filters.get('maxprice') != "NULL":
price_filter = {}
if filters.get('minprice') != "NULL":
price_filter['$gte'] = filters['minprice']
if filters.get('maxprice') != "NULL":
price_filter['$lte'] = filters['maxprice']
if price_filter:
query['msrp'] = price_filter
# # Year
# if filters.get('minyear') != "NULL" or filters.get('maxyear') != "NULL":
# year_filter = {}
# if filters.get('minyear') != "NULL":
# year_filter['$gte'] = filters['minyear']
# if filters.get('maxyear') != "NULL":
# year_filter['$lte'] = filters['maxyear']
# if year_filter:
# query['year'] = year_filter
return query
def get_prompt(query):
prompt = f"""
You are a helpful assistant that extracts the price and features of a car from a given user query.
You will extract the following fields:
- makeModel (string datatype)
- minprice (int datatype)
- maxprice (int datatype)
- minyear (int datatype)
- maxyear (int datatype)
- features (list of strings)
- color (string datatype)
- make (string datatype)
- model (string datatype)
price should only be a numerical number. dont write words or text or abbreviations. Just numbers like 40000 or 50000.
return "NULL" in the field if it is not mentioned
You goal is to extract the price and features of a car from a given user query.
return a json only
example output:
{{
"makeModel": "MINI HARDTOP 4 DOOR",
"price": "40000",
"features": ["Leather Seats", "Navigation", "Sunroof"]
}}
Here is the user query: {query}
"""
return prompt