Peterase commited on
Commit
81b613f
Β·
1 Parent(s): b84ba40

fix: make _build_context and execute_chat async for hybrid search

Browse files

- Changed _build_context to async def
- Changed execute_chat to async def in RagChatUseCase
- Changed execute_chat to async def in AgentRouterUseCase
- Updated all callers to use await
- Fixes SyntaxError: 'await' outside async function

src/api/routes/rag.py CHANGED
@@ -61,7 +61,7 @@ def direct_search(
61
  raise HTTPException(status_code=500, detail=str(e))
62
 
63
  @router.post("/chat/test", response_model=ChatResponse)
64
- def chat_test(
65
  request: ChatRequest,
66
  agent_router_use_case: AgentRouterUseCase = Depends(get_agent_router_use_case)
67
  ):
@@ -70,7 +70,7 @@ def chat_test(
70
  # Get endpoint from environment variable or use default
71
  os.getenv("RAG_ENDPOINT", "/rag/chat/test")
72
 
73
- result = agent_router_use_case.execute_chat(request)
74
  return result
75
 
76
  @router.post("/chat/stream")
 
61
  raise HTTPException(status_code=500, detail=str(e))
62
 
63
  @router.post("/chat/test", response_model=ChatResponse)
64
+ async def chat_test(
65
  request: ChatRequest,
66
  agent_router_use_case: AgentRouterUseCase = Depends(get_agent_router_use_case)
67
  ):
 
70
  # Get endpoint from environment variable or use default
71
  os.getenv("RAG_ENDPOINT", "/rag/chat/test")
72
 
73
+ result = await agent_router_use_case.execute_chat(request)
74
  return result
75
 
76
  @router.post("/chat/stream")
src/core/use_cases/agent_router_use_case.py CHANGED
@@ -23,7 +23,7 @@ class AgentRouterUseCase:
23
  print(f"DEBUG: Intent Classification: {intent} for query: '{query[:80]}'")
24
  return intent
25
 
26
- def execute_chat(self, request: ChatRequest) -> Dict[str, Any]:
27
  intent = self._classify_intent(request.query)
28
  session_id = request.session_id or "anonymous"
29
 
@@ -38,7 +38,7 @@ class AgentRouterUseCase:
38
  }
39
  else:
40
  print(f"DEBUG: Routing to NEWS (RAG Pipeline)")
41
- return self.rag_chat.execute_chat(request)
42
 
43
  async def execute_stream(self, request: ChatRequest, is_guest: bool = False, user_id: int = None) -> AsyncGenerator[str, None]:
44
  intent = self._classify_intent(request.query)
 
23
  print(f"DEBUG: Intent Classification: {intent} for query: '{query[:80]}'")
24
  return intent
25
 
26
+ async def execute_chat(self, request: ChatRequest) -> Dict[str, Any]:
27
  intent = self._classify_intent(request.query)
28
  session_id = request.session_id or "anonymous"
29
 
 
38
  }
39
  else:
40
  print(f"DEBUG: Routing to NEWS (RAG Pipeline)")
41
+ return await self.rag_chat.execute_chat(request)
42
 
43
  async def execute_stream(self, request: ChatRequest, is_guest: bool = False, user_id: int = None) -> AsyncGenerator[str, None]:
44
  intent = self._classify_intent(request.query)
src/core/use_cases/rag_chat_use_case.py CHANGED
@@ -316,7 +316,7 @@ JSON:"""
316
  print(f"DEBUG: [{lang_code}] search failed: {e}")
317
  return []
318
 
319
- def _build_context(self, query: str, top_k: int, source_filter=None, language_filter=None, days_back=None) -> Tuple[str, List[Dict[str, Any]]]:
320
  # ── Step 1: Single LLM call β€” intent extraction + multilingual translation ──
321
  expanded_query = query
322
 
@@ -609,7 +609,7 @@ JSON:"""
609
  "intent": f"intent:{query_prefix_hash}"
610
  }
611
 
612
- def execute_chat(self, request: ChatRequest) -> Dict[str, Any]:
613
  print(f"DEBUG: execute_chat called with query: {request.query}")
614
  session_id = request.session_id or "default_session"
615
 
@@ -634,7 +634,7 @@ JSON:"""
634
  print("DEBUG: Cache MISS - Layer 1 (full response) - proceeding with RAG pipeline")
635
  history_text = self._get_history_text(session_id)
636
 
637
- context_text, final_sources = self._build_context(
638
  request.query,
639
  request.top_k,
640
  request.source_filter,
@@ -730,7 +730,7 @@ Answer:"""
730
  async def execute_stream(self, request: ChatRequest, is_guest: bool = False, user_id: int = None) -> AsyncGenerator[str, None]:
731
  session_id = request.session_id or "default_session"
732
  history_text = "" if is_guest else self._get_history_text(session_id)
733
- context_text, final_sources = self._build_context(
734
  request.query, request.top_k, request.source_filter, request.language_filter, getattr(request, 'days_back', None)
735
  )
736
 
 
316
  print(f"DEBUG: [{lang_code}] search failed: {e}")
317
  return []
318
 
319
+ async def _build_context(self, query: str, top_k: int, source_filter=None, language_filter=None, days_back=None) -> Tuple[str, List[Dict[str, Any]]]:
320
  # ── Step 1: Single LLM call β€” intent extraction + multilingual translation ──
321
  expanded_query = query
322
 
 
609
  "intent": f"intent:{query_prefix_hash}"
610
  }
611
 
612
+ async def execute_chat(self, request: ChatRequest) -> Dict[str, Any]:
613
  print(f"DEBUG: execute_chat called with query: {request.query}")
614
  session_id = request.session_id or "default_session"
615
 
 
634
  print("DEBUG: Cache MISS - Layer 1 (full response) - proceeding with RAG pipeline")
635
  history_text = self._get_history_text(session_id)
636
 
637
+ context_text, final_sources = await self._build_context(
638
  request.query,
639
  request.top_k,
640
  request.source_filter,
 
730
  async def execute_stream(self, request: ChatRequest, is_guest: bool = False, user_id: int = None) -> AsyncGenerator[str, None]:
731
  session_id = request.session_id or "default_session"
732
  history_text = "" if is_guest else self._get_history_text(session_id)
733
+ context_text, final_sources = await self._build_context(
734
  request.query, request.top_k, request.source_filter, request.language_filter, getattr(request, 'days_back', None)
735
  )
736