import logging import re from openpyxl import load_workbook from Util import LlmUtil # 更详细地控制日志输出 logger = logging.getLogger('MathRag') logger.setLevel(logging.INFO) handler = logging.StreamHandler() handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')) logger.addHandler(handler) # 要处理的Excel excel_file = r'D:\dsWork\dsProject\dsLightRag\Doc\T1、史校长资料\测试结果\100题测试结果.xlsx' if __name__ == '__main__': prompt = """ 请针对下面这两段文字【1】和【2】进行评分,最高分为10分,最低分为0分,每1分差别为一个档次。 具体评分标准为: 只要【1】中包含【2】完全相同或者含义相同的内容,即从【1】可以推理出【2】即视为正确,打10分; 【1】中完全没有【2】表达的内容即视为错误打0分;趋于中间的按照涵盖程度打分,分越高越相似。 请注意:结果展示时,请按照如下标准进行输出: 先展示分析过程,然后展示最终得分,【最终得分】:x分,x替换为具体的分数,范围从0到10的整数。 """ wb = load_workbook(excel_file) ws = wb.active # 获取第一个sheet for row in range(2, 102): # 行号从2到101 # 提示词 query_text = prompt + "\n" query_text = query_text + "下面将提供两段文字:\n" query_text = query_text + "【1】:\n" O_content = ws['O' + str(row)].value query_text = query_text + O_content + "\n" query_text = query_text + "【2】:\n" D_content = ws['D' + str(row)].value query_text = query_text + D_content + "\n" question = ws['C' + str(row)].value # 获取问题 logger.info("问题" + str(row - 1) + ":" + question) response = LlmUtil.get_llm_response(query_text) # 【1】:O2,【2】:D2 内容 # 结果保存到 P2 (打分过程) Q2(通过正则表达式截取出的 【最终得分】) # 使用正则表达式提取【最终得分】 match = re.search(r'【最终得分】:(\d+)分', response) final_score = '0' if match: final_score = match.group(1) # 保存到P2(打分过程)和Q2(最终得分) ws['P' + str(row)] = prompt + "\n" + response # 提示词+大模型响应 ws['Q' + str(row)] = final_score logger.info("大模型响应:" + response) logger.info("得分:" + final_score) wb.save(excel_file) wb.close() logger.info("恭喜,所有任务处理完成!")