Spaces:
Running
Running
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 |
|