|
@@ -422,6 +422,7 @@ async def chat():
|
|
|
json.dumps(data, ensure_ascii=False),
|
|
|
chat_res["summary"],
|
|
|
chat_res["relevance_score"],
|
|
|
+ chat_res["status"],
|
|
|
)
|
|
|
return jsonify({"status_code": 200, "detail": "success", "data": data})
|
|
|
|
|
@@ -471,6 +472,66 @@ async def chunk_list():
|
|
|
}
|
|
|
)
|
|
|
|
|
|
+
|
|
|
+@server_bp.route("/chat/detail", methods=["POST"])
|
|
|
+async def chat_detail():
|
|
|
+ body = await request.get_json()
|
|
|
+ query_text = body.get("query")
|
|
|
+ dataset_id_strs = "11,12"
|
|
|
+ dataset_ids = dataset_id_strs.split(",")
|
|
|
+ search_type = "hybrid"
|
|
|
+ query_results = await query_search(
|
|
|
+ query_text=query_text,
|
|
|
+ filters={"dataset_id": dataset_ids},
|
|
|
+ search_type=search_type,
|
|
|
+ )
|
|
|
+ resource = get_resource_manager()
|
|
|
+ content_chunk_mapper = ContentChunks(resource.mysql_client)
|
|
|
+ contents_mapper = Contents(resource.mysql_client)
|
|
|
+ chat_result_mapper = ChatResult(resource.mysql_client)
|
|
|
+ res = []
|
|
|
+ for result in query_results["results"]:
|
|
|
+ content_chunks = await content_chunk_mapper.select_chunk_content(
|
|
|
+ doc_id=result["doc_id"], chunk_id=result["chunk_id"]
|
|
|
+ )
|
|
|
+ contents = await contents_mapper.select_content_by_doc_id(result["doc_id"])
|
|
|
+ if not content_chunks:
|
|
|
+ return jsonify(
|
|
|
+ {"status_code": 500, "detail": "content_chunk not found", "data": {}}
|
|
|
+ )
|
|
|
+ if not contents:
|
|
|
+ return jsonify(
|
|
|
+ {"status_code": 500, "detail": "contents not found", "data": {}}
|
|
|
+ )
|
|
|
+ content_chunk = content_chunks[0]
|
|
|
+ content = contents[0]
|
|
|
+ res.append(
|
|
|
+ {
|
|
|
+ "contentChunk": content_chunk["text"],
|
|
|
+ "contentSummary": content_chunk["summary"],
|
|
|
+ "content": content["text"],
|
|
|
+ "score": result["score"],
|
|
|
+ }
|
|
|
+ )
|
|
|
+
|
|
|
+ chat_classifier = ChatClassifier()
|
|
|
+ chat_res = await chat_classifier.chat_with_deepseek(query_text, res)
|
|
|
+ data = {
|
|
|
+ "result": chat_res["summary"],
|
|
|
+ "status": chat_res["status"],
|
|
|
+ "metaData": res,
|
|
|
+ }
|
|
|
+ await chat_result_mapper.insert_chat_result(
|
|
|
+ query_text,
|
|
|
+ dataset_id_strs,
|
|
|
+ json.dumps(data, ensure_ascii=False),
|
|
|
+ chat_res["summary"],
|
|
|
+ chat_res["relevance_score"],
|
|
|
+ chat_res["status"],
|
|
|
+ )
|
|
|
+ return jsonify({"status_code": 200, "detail": "success", "data": data})
|
|
|
+
|
|
|
+
|
|
|
@server_bp.route("/auto_rechunk", methods=["GET"])
|
|
|
async def auto_rechunk():
|
|
|
resource = get_resource_manager()
|