|
|
@@ -1,3 +1,4 @@
|
|
|
+import asyncio
|
|
|
import json
|
|
|
import os
|
|
|
import uuid
|
|
|
@@ -79,7 +80,7 @@ async def handle_books():
|
|
|
print(f"处理请求失败,错误: {e}")
|
|
|
|
|
|
|
|
|
-async def process_question(question, query_text, rag_chat_agent):
|
|
|
+async def process_question(question, resource, qwen_client, rag_chat_agent):
|
|
|
try:
|
|
|
dataset_id_strs = "11,12"
|
|
|
dataset_ids = dataset_id_strs.split(",")
|
|
|
@@ -92,19 +93,15 @@ async def process_question(question, query_text, rag_chat_agent):
|
|
|
search_type=search_type,
|
|
|
)
|
|
|
|
|
|
- resource = get_resource_manager()
|
|
|
chat_result_mapper = ChatResult(resource.mysql_client)
|
|
|
-
|
|
|
- # 异步执行 chat 与 deepseek 的对话
|
|
|
- chat_result = await rag_chat_agent.chat_with_deepseek(question, query_results)
|
|
|
-
|
|
|
- # # 判断是否需要执行 study
|
|
|
+ chat_task = rag_chat_agent.get_chat_res(question, query_results)
|
|
|
+ llm_task = qwen_client.search_and_chat(
|
|
|
+ user_prompt=question, search_strategy="agent"
|
|
|
+ )
|
|
|
+ chat_result, llm_search = await asyncio.gather(chat_task, llm_task)
|
|
|
study_task_id = None
|
|
|
if chat_result["status"] == 0:
|
|
|
study_task_id = study(question)["task_id"]
|
|
|
-
|
|
|
- qwen_client = QwenClient()
|
|
|
- llm_search = qwen_client.search_and_chat(user_prompt=question)
|
|
|
decision = await rag_chat_agent.make_decision(question, chat_result, llm_search)
|
|
|
|
|
|
# 构建返回的数据
|
|
|
@@ -112,8 +109,7 @@ async def process_question(question, query_text, rag_chat_agent):
|
|
|
"query": question,
|
|
|
"result": decision["result"],
|
|
|
"status": decision["status"],
|
|
|
- "relevance_score": decision["relevance_score"],
|
|
|
- # "used_tools": decision["used_tools"],
|
|
|
+ "relevance_score": decision["relevance_score"]
|
|
|
}
|
|
|
|
|
|
# 插入数据库
|
|
|
@@ -122,7 +118,7 @@ async def process_question(question, query_text, rag_chat_agent):
|
|
|
dataset_id_strs,
|
|
|
json.dumps(query_results, ensure_ascii=False),
|
|
|
chat_result["summary"],
|
|
|
- chat_result["relevance_score"],
|
|
|
+ decision["relevance_score"],
|
|
|
chat_result["status"],
|
|
|
llm_search["content"],
|
|
|
json.dumps(llm_search["search_results"], ensure_ascii=False),
|
|
|
@@ -188,7 +184,6 @@ async def query_search(
|
|
|
resource = get_resource_manager()
|
|
|
content_chunk_mapper = ContentChunks(resource.mysql_client)
|
|
|
res = []
|
|
|
- print(json.dumps(response["results"], ensure_ascii=False, indent=2))
|
|
|
for result in response["results"]:
|
|
|
content_chunks = await content_chunk_mapper.select_chunk_content(
|
|
|
doc_id=result["doc_id"], chunk_id=result["chunk_id"]
|
|
|
@@ -197,6 +192,7 @@ async def query_search(
|
|
|
content_chunk = content_chunks[0]
|
|
|
res.append(
|
|
|
{
|
|
|
+ "id": content_chunk["id"],
|
|
|
"docId": content_chunk["doc_id"],
|
|
|
"content": content_chunk["text"],
|
|
|
"contentSummary": content_chunk["summary"],
|