randomisedbackend2 / search_engine.py
akiko19191's picture
Upload folder using huggingface_hub
6af31ea verified
raw
history blame
3.28 kB
from googleapiclient.discovery import build
# from dotenv import load_dotenv
# load_dotenv(r'C:\Users\Vaibhav Arora\Documents\MyExperimentsandCodes\APPS_WEBSITES\CANADA_WHOLESALE_PROJECT\GITHUB_REPOS\mvp-vue\wholesale-grocery-app\AIAPPS\.env')
from google import genai
from pydantic import BaseModel
import ast
import os
import json
import random
import time
class Categorise(BaseModel):
category: str
client = genai.Client(api_key=random.choice(json.loads(os.getenv("GEMINI_KEY_LIST"))))
def categorise(product):
client = genai.Client(api_key=random.choice(json.loads(os.getenv("GEMINI_KEY_LIST"))))
try:
response = client.models.generate_content(
model="gemini-2.5-flash-lite-preview-06-17",
contents=f"Categorise this product:{product} , into one of the following categories: `Fruits,Vegetables,Bakery`",
config={
"response_mime_type": "application/json",
"response_schema": list[Categorise],
},
)
except:
time.sleep(2)
response = client.models.generate_content(
model="gemini-2.5-flash",
contents=f"Categorise this product:{product} , into one of the following categories: `Fruits,Vegetables,Bakery`",
config={
"response_mime_type": "application/json",
"response_schema": list[Categorise],
},
)
return ast.literal_eval(response.text)[0]["category"]
def search_images(query: str, api_key: str, cse_id: str,no) -> dict | None:
"""
Performs an image search using the Google Custom Search API.
"""
print(f"Searching for images with query: '{query}'...")
try:
service = build("customsearch", "v1", developerKey="AIzaSyBntcCqrtL5tdpM3iIXzPvKydCvZx1KdqQ")
result = service.cse().list(
q=query,
cx="a2982aa5c06f54e66",
searchType='image',
num=no
).execute()
print("Search successful.")
return result
except Exception as e:
print(f"An error occurred during Google Search: {e}")
return None
def search_and_filter_images(query,no=2):
search_results = search_images(query, os.getenv("CSE_API_KEY"), os.getenv("CSE_ID"),no)
if search_results and 'items' in search_results:
top_10_items = search_results['items']
print(f"Found {len(top_10_items)} image results. Downloading them...")
image_files_for_llm = []
downloaded_filenames = []
for i, item in enumerate(top_10_items):
image_url = item.get('link')
if not image_url:
continue
file_extension = os.path.splitext(image_url.split("?")[0])[-1]
if not file_extension:
file_extension = ".unknown" # Default extension
if not file_extension in [".jpeg", ".jpg", ".png", ".gif", ".bmp", ".webp"]:
continue
image_files_for_llm.append({
"type": "image_url",
"image_url": f"{image_url}"
})
# print(image_files_for_llm)
return (image_files_for_llm)