Spaces:
Running
Running
| from __future__ import annotations | |
| import time | |
| from fastapi import APIRouter, Depends | |
| from app.api.deps import get_embeddings_service, require_auth | |
| from app.models.schemas import SemanticRouterRequest, SemanticRouterResponse | |
| from app.services.embeddings_service import EmbeddingService | |
| from app.services.semantic_router_service import SemanticRouterService | |
| router = APIRouter() | |
| async def route_query( | |
| body: SemanticRouterRequest, | |
| token: str = Depends(require_auth), | |
| embedding_service: EmbeddingService = Depends(get_embeddings_service), | |
| ) -> SemanticRouterResponse: | |
| start = time.perf_counter() | |
| svc = SemanticRouterService(embedding_service) | |
| routes_dict = [r.model_dump() for r in body.routes] | |
| result = svc.route(body.query, routes_dict, body.threshold) | |
| elapsed_ms = round((time.perf_counter() - start) * 1000, 3) | |
| return SemanticRouterResponse( | |
| success=result["success"], | |
| time_ms=elapsed_ms, | |
| name=result.get("name"), | |
| models=result.get("models", []), | |
| error=result.get("error"), | |
| confidence=result.get("confidence"), | |
| margin=result.get("margin"), | |
| threshold=result.get("threshold"), | |
| matched_utterance=result.get("matched_utterance"), | |
| ) | |