You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.6 KiB
54 lines
1.6 KiB
import json
|
|
import logging
|
|
|
|
import requests
|
|
from openpyxl import load_workbook
|
|
|
|
# 更详细地控制日志输出
|
|
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)
|
|
|
|
|
|
def getAnswer(query_text):
|
|
# 根据问题查询知识库
|
|
url = "http://10.10.21.20:8100/api/chat"
|
|
headers = {
|
|
"Content-Type": "application/json"
|
|
}
|
|
data = {
|
|
"query": query_text,
|
|
"topic": "ChuZhongShuXue"
|
|
}
|
|
try:
|
|
response = requests.post(url, headers=headers, data=json.dumps(data))
|
|
response.raise_for_status()
|
|
return response.json().get("data").get("reply")
|
|
except requests.exceptions.RequestException as e:
|
|
logger.error(f"请求发生异常: {str(e)}")
|
|
return None
|
|
|
|
|
|
# 要处理的Excel
|
|
excel_file = r'D:\dsWork\dsProject\dsLightRag\Doc\T1、史校长资料\测试结果\100题测试结果.xlsx'
|
|
|
|
if __name__ == '__main__':
|
|
wb = load_workbook(excel_file)
|
|
ws = wb.active # 获取第一个sheet
|
|
# 读取C列第2行到101行的数据
|
|
idx = 1
|
|
for row in range(2, 102): # 行号从2到101
|
|
query_text = ws[f'C{row}'].value
|
|
logger.info("问题{}:{}".format(idx, query_text))
|
|
# 知识库作答
|
|
rag_answer = getAnswer(query_text)
|
|
logger.info("成功完成问题{}:{}".format(idx, query_text))
|
|
# 回写到Excel表中
|
|
ws['O'+str(idx+1)] = rag_answer
|
|
idx = idx + 1
|
|
# 保存修改
|
|
wb.save(excel_file)
|
|
wb.close()
|