GemAI_Backend / app /tools.py
Aasher's picture
Update the project to use a real-time Amazon products API instead of a vector store. Improve the prompt to handle updated tool
ad5d74e
from agno.tools import tool
from .product_search import AmazonProductSearch, FilterModel, ProductItem
from .config import settings
from typing import Optional
import json
from dotenv import load_dotenv
load_dotenv()
@tool
def fetch_products(
query: str,
limit: int = settings.SEARCH_LIMIT,
filters: Optional[FilterModel] = None,
) -> list[dict]:
"""
Fetch products from Amazon based on query and filters
Args:
query (str): Search query
limit (int, optional): Number of products to return. Must be between 2-10. Defaults to 6.
filters (FilterModel, optional): Filters to apply. Defaults to None.
Returns:
list[dict]: List of products dictionary items matching the query and filters
"""
limit = max(2, min(limit, 10)) # Ensure limit is between 2 and 10
product_searcher = AmazonProductSearch(
rapid_api_key=settings.RAPIDAPI_KEY, rerank_model=settings.RERANKING_MODEL
)
products: list[ProductItem] = product_searcher.fetch_products(
query=query,
filters=filters,
limit=limit
)
return json.dumps([product.model_dump() for product in products])