From 32d5885b68c5d382abe26e8f10328f6987920c19 Mon Sep 17 00:00:00 2001 From: Kung Quang <1468667058@qq.com> Date: Wed, 24 Jul 2024 18:02:22 +0800 Subject: [PATCH] Fix api reference empty bug (#1655) ### What problem does this PR solve? fix api reference empty bug ``` for chunk_i in answer['reference'].get('chunks',[]): ^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'list' object has no attribute 'get' ``` ``` return np.array([d["relevance_score"] for d in res["results"]]), res["meta"]["tokens"]["input_tokens"]+res["meta"]["tokens"]["output_tokens"] ~~~^^^^^^^^^^^ KeyError: 'results' ``` ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- api/apps/api_app.py | 14 +++++++------- rag/llm/rerank_model.py | 2 ++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/api/apps/api_app.py b/api/apps/api_app.py index 52f0ba1ff..dee7b857f 100644 --- a/api/apps/api_app.py +++ b/api/apps/api_app.py @@ -199,9 +199,10 @@ def completion(): conv.message[-1] = {"role": "assistant", "content": ans["answer"]} def rename_field(ans): - for chunk_i in ans['reference'].get('chunks', []): - chunk_i['doc_name'] = chunk_i['docnm_kwd'] - chunk_i.pop('docnm_kwd') + for chunk in ans.get('reference', []): + for chunk_i in chunk.get('chunks', []): + chunk_i['doc_name'] = chunk_i['docnm_kwd'] + chunk_i.pop('docnm_kwd') def stream(): nonlocal dia, msg, req, conv @@ -232,10 +233,7 @@ def completion(): API4ConversationService.append_message(conv.id, conv.to_dict()) break - for chunk_i in answer['reference'].get('chunks',[]): - chunk_i['doc_name'] = chunk_i['docnm_kwd'] - chunk_i.pop('docnm_kwd') - + rename_field(answer) return get_json_result(data=answer) except Exception as e: @@ -252,6 +250,8 @@ def get(conversation_id): conv = conv.to_dict() for referenct_i in conv['reference']: + if referenct_i is None or len(referenct_i) == 0: + continue for chunk_i in referenct_i['chunks']: if 'docnm_kwd' in chunk_i.keys(): chunk_i['doc_name'] = chunk_i['docnm_kwd'] diff --git a/rag/llm/rerank_model.py b/rag/llm/rerank_model.py index fb20aea69..b6d5421ee 100644 --- a/rag/llm/rerank_model.py +++ b/rag/llm/rerank_model.py @@ -147,6 +147,8 @@ class XInferenceRerank(Base): } def similarity(self, query: str, texts: list): + if len(texts) == 0: + return np.array([]), 0 data = { "model": self.model_name, "query": query,