|
|
@ -21,6 +21,7 @@ async def analyze(request): |
|
|
json={"text": input_text}, |
|
|
json={"text": input_text}, |
|
|
timeout=1800.0 # 30分钟 |
|
|
timeout=1800.0 # 30分钟 |
|
|
) |
|
|
) |
|
|
|
|
|
qaList = [] |
|
|
if resp.status_code == 202 or resp.status_code == 200: |
|
|
if resp.status_code == 202 or resp.status_code == 200: |
|
|
|
|
|
|
|
|
resp_json = resp.json() |
|
|
resp_json = resp.json() |
|
|
@ -45,9 +46,37 @@ async def analyze(request): |
|
|
"text": input_text}, |
|
|
"text": input_text}, |
|
|
timeout=1800.0 # 30分钟 |
|
|
timeout=1800.0 # 30分钟 |
|
|
) |
|
|
) |
|
|
|
|
|
resp_data = resp.json() |
|
|
|
|
|
inner_data = json.loads(resp_data["data"]) |
|
|
|
|
|
# 第二步:获取 json 数组 |
|
|
|
|
|
items = inner_data["json"] |
|
|
|
|
|
|
|
|
|
|
|
# 第三步:按 sort 排序(虽然所有都是 0.9,但为了通用性还是排序) |
|
|
|
|
|
# 如果 sort 相同,可以保留原始顺序(使用 stable sort),或按 xh 排序等 |
|
|
|
|
|
sorted_items = sorted(items, key=lambda x: x["sort"], reverse=True) |
|
|
|
|
|
|
|
|
|
|
|
# 第四步:取前5个 |
|
|
|
|
|
top5 = sorted_items[:1] |
|
|
|
|
|
for item in top5: |
|
|
|
|
|
resp = await client.post( |
|
|
|
|
|
"/extract_entities_and_relations", |
|
|
|
|
|
json={"text": item['answer']}, |
|
|
|
|
|
timeout=1800.0 # 30分钟 |
|
|
|
|
|
) |
|
|
|
|
|
if resp.status_code in (200, 202): |
|
|
|
|
|
result = resp.json() |
|
|
|
|
|
print(result) |
|
|
|
|
|
qaList.append({ |
|
|
|
|
|
"answer": item["answer"], |
|
|
|
|
|
"result": result, |
|
|
|
|
|
}) |
|
|
|
|
|
print(f"xh: {item['xh']}, answer: {item['answer']}, sort: {item['sort']}") |
|
|
|
|
|
print(resp.json()) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return Response( |
|
|
return Response( |
|
|
status_code=200, |
|
|
status_code=200, |
|
|
description=jsonify(resp.json()), |
|
|
description=jsonify(qaList), |
|
|
headers={"Content-Type": "text/plain; charset=utf-8"} |
|
|
headers={"Content-Type": "text/plain; charset=utf-8"} |
|
|
) |
|
|
) |
|
|
else: |
|
|
else: |
|
|
|