在heli_db_to_excel.py中添加SEQUENCE_ID字段到数据处理结果,并新增根据会话ID查询SEQUENCE_ID的方法;在DifyCompareTest.py中优化回答判断逻辑,增加对空回答的处理,调整文件处理的最大并发数。

This commit is contained in:
2025-08-01 13:45:58 +08:00
parent 9b957665b5
commit 948827d553
2 changed files with 18 additions and 7 deletions
+12 -1
View File
@@ -277,6 +277,7 @@ class DataProcessor:
"消息发送者": record["message_sender"], "消息发送者": record["message_sender"],
"发送者昵称": record["sender_nickname"], "发送者昵称": record["sender_nickname"],
"创建时间": record["CREATE_TIME"], "创建时间": record["CREATE_TIME"],
"SEQUENCE_ID": record["SEQUENCE_ID"],
}) })
return result return result
@@ -337,11 +338,21 @@ class MariaDBClient:
df, _ = self.execute_query(sql, (start_date, end_date)) df, _ = self.execute_query(sql, (start_date, end_date))
return df return df
def get_sequence_id_by_session_id(self, session_id: str) -> Optional[pd.DataFrame]:
"""根据会话ID查询消息详情"""
sql = """
SELECT SEQUENCE_ID
FROM crm_hlyj.crm_hlyj_dmri
WHERE SESSION_ID = %s
"""
df, _ = self.execute_query(sql, (session_id,))
return df
def query_messages_by_session_id(self, session_id: str) -> Optional[pd.DataFrame]: def query_messages_by_session_id(self, session_id: str) -> Optional[pd.DataFrame]:
"""根据会话ID查询消息详情""" """根据会话ID查询消息详情"""
sql = """ sql = """
SELECT CREATE_TIME, CUS_NICK_NAME, MODE, MSG_TYPE, AGENT_NAME, CONTENT, SELECT CREATE_TIME, CUS_NICK_NAME, MODE, MSG_TYPE, AGENT_NAME, CONTENT,
SESSION_ID, ACCOUNT, SYSTEM_MODE_MESSAGE_TYPE SESSION_ID, ACCOUNT, SYSTEM_MODE_MESSAGE_TYPE, SEQUENCE_ID
FROM crm_hlyj.crm_hlyj_dmri FROM crm_hlyj.crm_hlyj_dmri
WHERE SESSION_ID = %s WHERE SESSION_ID = %s
ORDER BY CREATE_TIME ORDER BY CREATE_TIME
+6 -6
View File
@@ -69,7 +69,8 @@ class DifyCompareTest:
max_retries = 3 max_retries = 3
retry_count = 0 retry_count = 0
if len(old_answer) == 0 or len(now_answer) == 0:
return "回答基本不相同"
while retry_count < max_retries: while retry_count < max_retries:
try: try:
response = self.llm.invoke(user_prompt=user_prompt, need_retry=False, response_format={"type": "json_object"}) response = self.llm.invoke(user_prompt=user_prompt, need_retry=False, response_format={"type": "json_object"})
@@ -100,15 +101,14 @@ class DifyCompareTest:
) )
result = response.json() result = response.json()
answer = result.get('answer', "") answer = result.get('answer', "")
answer = answer.split("----------------------------------------")[0].strip()
if len(answer) == 0: if len(answer) == 0:
raise Exception(f"回答为空: {result}") raise Exception(f"回答为空: {result}")
if old_answer: if old_answer:
judge_result = self.llm_judge_answer(old_answer=old_answer, now_answer=answer) judge_result = self.llm_judge_answer(old_answer=old_answer, now_answer=answer)
else: else:
judge_result="" judge_result=""
judge_result=""
# 只取回答的前半部分 # 只取回答的前半部分
answer = answer.split("----------------------------------------")[0].strip()
message_id = result.get('message_id', "") message_id = result.get('message_id', "")
return answer, judge_result, message_id return answer, judge_result, message_id
except Exception as e: except Exception as e:
@@ -247,14 +247,14 @@ if __name__ == "__main__":
# 处理第一个文件 # 处理第一个文件
excel_files = [ excel_files = [
# ("data/excel/5月.xlsx", "data/excel/5月问答对比.xlsx"), ("data/excel/300专业提问.xlsx", "data/excel/300专业提问_问答测试.xlsx"),
("data/excel/第四轮点踩问题.xlsx", "data/excel/第四轮点踩问题_问答测试.xlsx") # ("data/excel/有知识的.xlsx", "data/excel/有知识的_问答测试.xlsx")
] ]
for excel_path, save_path in excel_files: for excel_path, save_path in excel_files:
logging.info(f"开始处理文件: {excel_path}") logging.info(f"开始处理文件: {excel_path}")
try: try:
dify_compare_test.run(excel_path=excel_path, save_path=save_path, max_workers=3) dify_compare_test.run(excel_path=excel_path, save_path=save_path, max_workers=10)
logging.info(f"文件处理完成: {excel_path}") logging.info(f"文件处理完成: {excel_path}")
except Exception as e: except Exception as e:
logging.error(f"处理文件 {excel_path} 时出错: {e}") logging.error(f"处理文件 {excel_path} 时出错: {e}")