feat: record reranker call outcome into ModelUsageTracker
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -9,6 +9,7 @@ from loguru import logger
|
||||
|
||||
from app.config.settings import settings
|
||||
from app.domain.retrieval import Reranker, RetrievedChunk
|
||||
from app.shared.model_usage_tracker import get_model_usage_tracker
|
||||
|
||||
|
||||
class OpenAICompatibleReranker(Reranker):
|
||||
@@ -37,10 +38,26 @@ class OpenAICompatibleReranker(Reranker):
|
||||
scores = self._call_reranker(query, texts)
|
||||
except Exception as exc:
|
||||
logger.warning("Reranker call failed ({}), falling back to original order: {}", type(exc).__name__, exc)
|
||||
# Record the failure so the Status page reflects real reranker health.
|
||||
get_model_usage_tracker().record(
|
||||
provider="reranker",
|
||||
model=self._model,
|
||||
success=False,
|
||||
latency_ms=int((time.time() - start) * 1000),
|
||||
error=str(exc),
|
||||
)
|
||||
return chunks[:top_k]
|
||||
|
||||
elapsed_ms = int((time.time() - start) * 1000)
|
||||
logger.debug("Reranker scored {} chunks in {}ms", len(chunks), elapsed_ms)
|
||||
# TEI/Cohere-style rerank responses carry no token usage field —
|
||||
# only call success/latency is meaningful for this role.
|
||||
get_model_usage_tracker().record(
|
||||
provider="reranker",
|
||||
model=self._model,
|
||||
success=True,
|
||||
latency_ms=elapsed_ms,
|
||||
)
|
||||
|
||||
ranked = sorted(
|
||||
[(score, chunk) for score, chunk in zip(scores, chunks)],
|
||||
|
||||
Reference in New Issue
Block a user