Spaces:
Running
Running
"""Handles the integration of XGBoost model with Modal to predict item prices.""" | |
import modal | |
from src.agents.base_agent import Agent | |
from src.modal_services.app_config import APP_NAME | |
class XGBoostPriceAgent(Agent): | |
"""XGBoostPriceAgent connects to a remote Modal container. | |
Uses E5 and XGBoost to predict prices from descriptions. | |
""" | |
name = "XGBPrice Agent" | |
color = "yellow" | |
def __init__(self) -> None: | |
"""Initialize the agent.""" | |
self._modal_called = False | |
remote_xgb_pricer = modal.Cls.from_name(APP_NAME, "XGBPricer") | |
self.xgb = remote_xgb_pricer() | |
self.log("is ready") | |
def price(self, description: str) -> float: | |
"""Call the remote XGBPricer to estimate price.""" | |
if not self._modal_called: | |
self.log("π‘ Connecting to Modal β loading XGBoost and embedding model...") | |
self._modal_called = True | |
try: | |
result = self.xgb.price.remote(description) | |
# self.log(f"predicting ${result:.2f} β ") | |
return result | |
except Exception as e: | |
self.log(f"[ERROR] Remote XGBPricer failed: {e}") | |
raise RuntimeError( | |
"XGBoostPriceAgent failed to get price from Modal." | |
) from e | |