From 1bc11445c88c038d22fa489982c3769ce37cfece Mon Sep 17 00:00:00 2001 From: Mahika Gupta Date: Wed, 17 Jun 2026 15:18:53 +0530 Subject: [PATCH 1/3] docs: update stale Workers model-tier references --- app/services/ai/cloudflare_ai.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/services/ai/cloudflare_ai.py b/app/services/ai/cloudflare_ai.py index d58a34c..3c523e8 100644 --- a/app/services/ai/cloudflare_ai.py +++ b/app/services/ai/cloudflare_ai.py @@ -10,7 +10,7 @@ 50K credits available for inference at the edge. -Model Selection Strategy (consistent with workers/src/config/models.ts): +Model Selection Strategy (aligned with the Workers model tier selection in workers/src/lib/workers-ai.ts): - SPEED: llama-3.2-3b-instruct (ultra-fast, <100ms, simple queries) - BALANCED: llama-3.3-70b-instruct-fp8-fast (best quality/speed balance) - QUALITY: gpt-oss-120b (highest quality, production use) @@ -110,7 +110,8 @@ class ModelTier(str, Enum): """ Model tiers for automatic selection based on query complexity. - Consistent with workers/src/config/models.ts TIER_MODELS mapping. + Keep in sync with Workers model tier selection logic in + workers/src/lib/workers-ai.ts. """ SPEED = "speed" # Ultra-fast, simple queries (<100ms) BALANCED = "balanced" # Best quality/speed balance (default) @@ -119,7 +120,7 @@ class ModelTier(str, Enum): # Tier to model mapping -# Consistent with workers/src/config/models.ts TIER_MODELS +# consistent with Workers model tier selection logic in workers/src/lib/workers-ai.ts TIER_MODELS = { ModelTier.SPEED: CFModel.LLAMA_3_2_3B, # Ultra-fast for simple tasks ModelTier.BALANCED: CFModel.LLAMA_3_3_70B_FAST, # Best quality/speed balance From 46707121003abd7be28f6fcb55e38a04e6287528 Mon Sep 17 00:00:00 2001 From: Mahika Gupta Date: Wed, 8 Jul 2026 12:32:22 +0530 Subject: [PATCH 2/3] fix(search): compute provider average latency correctly --- app/services/search/multi_search.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/app/services/search/multi_search.py b/app/services/search/multi_search.py index 745f476..7352b8b 100644 --- a/app/services/search/multi_search.py +++ b/app/services/search/multi_search.py @@ -68,7 +68,7 @@ def __init__(self): """Initialize multi-provider search service.""" self.client = httpx.AsyncClient(timeout=30) self.providers = self._configure_providers() - self.provider_stats = {provider: {"requests": 0, "errors": 0, "avg_latency": 0.0} + self.provider_stats = {provider: {"requests": 0, "errors": 0,"total_latency":0.0, "avg_latency": 0.0} for provider in SearchProvider} def _configure_providers(self) -> Dict[SearchProvider, SearchProviderConfig]: @@ -128,14 +128,16 @@ async def search(self, options: SearchOptions) -> List[SearchResult]: start_time = asyncio.get_event_loop().time() results = await self._search_with_provider(provider_type, options) - if results: - # Update stats - latency = asyncio.get_event_loop().time() - start_time - self.provider_stats[provider_type]["requests"] += 1 - self.provider_stats[provider_type]["avg_latency"] = ( - (self.provider_stats[provider_type]["avg_latency"] + latency) / 2 + + # Update stats + latency = asyncio.get_event_loop().time() - start_time + stats = self.provider_stats[provider_type] + stats["requests"] += 1 + stats["total_latency"] += latency + stats["avg_latency"] = ( + stats["total_latency"] / stats["requests"] ) - + if results: logger.info("search_successful", provider=config.name, results=len(results), From e5ce54deaae0d28197e4abd8acc72cc2ebd9c856 Mon Sep 17 00:00:00 2001 From: Mahika Gupta Date: Wed, 8 Jul 2026 12:45:16 +0530 Subject: [PATCH 3/3] fix(search): compute provider average latency correctly --- app/services/search/multi_search.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/app/services/search/multi_search.py b/app/services/search/multi_search.py index 7352b8b..b149199 100644 --- a/app/services/search/multi_search.py +++ b/app/services/search/multi_search.py @@ -128,21 +128,21 @@ async def search(self, options: SearchOptions) -> List[SearchResult]: start_time = asyncio.get_event_loop().time() results = await self._search_with_provider(provider_type, options) - - # Update stats - latency = asyncio.get_event_loop().time() - start_time - stats = self.provider_stats[provider_type] - stats["requests"] += 1 - stats["total_latency"] += latency - stats["avg_latency"] = ( - stats["total_latency"] / stats["requests"] - ) if results: - logger.info("search_successful", - provider=config.name, - results=len(results), - latency=latency) - return results + # Update stats + latency = asyncio.get_event_loop().time() - start_time + stats = self.provider_stats[provider_type] + stats["requests"] += 1 + stats["total_latency"] += latency + stats["avg_latency"] = ( + stats["total_latency"] / stats["requests"] + ) + + logger.info("search_successful", + provider=config.name, + results=len(results), + latency=latency) + return results except Exception as e: self.provider_stats[provider_type]["errors"] += 1