Spaces:
Running
Running
File size: 1,237 Bytes
8366946 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
"""FTPriceAgent uses a remote fine-tuned LLM on Modal.
Predicts item prices from descriptions.
"""
import modal
from src.agents.base_agent import Agent
from src.modal_services.app_config import APP_NAME
class FTPriceAgent(Agent):
"""Agent for running a fine-tuned LLM remotely."""
name = "FTPrice Agent"
color = "red"
def __init__(self) -> None:
"""Initialize agent with Modal class instance."""
self._modal_called = False
ft_pricer = modal.Cls.from_name(APP_NAME, "FTPricer")
self.ftpricer = ft_pricer()
self.log("is ready")
def price(self, description: str) -> float:
"""Remote call to estimate price, with error handling."""
if not self._modal_called:
self.log("🧠 Calling Modal's fine-tuned LLM...")
self._modal_called = True
try:
result = self.ftpricer.price.remote(
description
) # 2nd API call: run price method
# self.log(f"predicting ${result:.2f} ✅")
return result
except Exception as e:
self.log(f"[ERROR] Remote pricing failed: {e}")
raise RuntimeError("FTPriceAgent failed to get price from Modal.") from e
|