rag
This commit is contained in:
parent
f7aca36265
commit
c25a9c05ca
@ -68,21 +68,39 @@ class APIService:
|
|||||||
async def extract_triples(self, request, text: str, upappid: str, apiname: str, user: str) -> list:
|
async def extract_triples(self, request, text: str, upappid: str, apiname: str, user: str) -> list:
|
||||||
"""调用三元组抽取服务"""
|
"""调用三元组抽取服务"""
|
||||||
request_id = str(uuid.uuid4())
|
request_id = str(uuid.uuid4())
|
||||||
debug(f"Request #{request_id} started for triples extraction")
|
debug(f"Request #{request_id} started for triples extraction, text={text[:100]}")
|
||||||
try:
|
try:
|
||||||
|
# 清理输入文本,移除控制字符
|
||||||
|
import re
|
||||||
|
text = re.sub(r'[\x00-\x1F\x7F]', '', text) # 移除 ASCII 控制字符
|
||||||
uapi = UAPI(request, DictObject(**globals()))
|
uapi = UAPI(request, DictObject(**globals()))
|
||||||
params_kw = {"text": text}
|
params_kw = {"text": text}
|
||||||
b = await uapi.call(upappid, apiname, user, params_kw)
|
b = await uapi.call(upappid, apiname, user, params_kw)
|
||||||
d = json.loads(b.decode('utf-8'))
|
if not b:
|
||||||
if d.get("object") != "list":
|
error(f"request #{request_id} 三元组抽取服务返回空响应: upappid={upappid}, apiname={apiname}")
|
||||||
error(f"request #{request_id} invalid response format: {d}")
|
raise RuntimeError("三元组抽取服务返回空响应")
|
||||||
|
try:
|
||||||
|
response_text = b.decode('utf-8')
|
||||||
|
except UnicodeDecodeError as decode_err:
|
||||||
|
error(f"request #{request_id} 响应解码失败: {str(decode_err)}, 原始响应: {b[:100]}")
|
||||||
|
raise RuntimeError(f"响应解码失败: {str(decode_err)}")
|
||||||
|
debug(f"request #{request_id} 三元组抽取服务原始响应: {response_text[:500]}")
|
||||||
|
# 清理响应字符串,移除控制字符
|
||||||
|
response_text = re.sub(r'[\x00-\x1F\x7F]', '', response_text)
|
||||||
|
try:
|
||||||
|
d = json.loads(response_text)
|
||||||
|
except json.JSONDecodeError as json_err:
|
||||||
|
error(f"request #{request_id} JSON 解析失败: {str(json_err)}, 响应内容: {response_text[:500]}")
|
||||||
|
raise RuntimeError(f"JSON 解析失败: {str(json_err)}")
|
||||||
|
if d.get("object") != "list" or not d.get("data"):
|
||||||
|
error(f"request #{request_id} 三元组抽取服务响应格式错误: {d}")
|
||||||
raise RuntimeError("三元组抽取服务响应格式错误")
|
raise RuntimeError("三元组抽取服务响应格式错误")
|
||||||
triples = d["data"]
|
triples = d["data"]
|
||||||
debug(f"request #{request_id} extracted {len(triples)} triples")
|
debug(f"request #{request_id} extracted {len(triples)} triples")
|
||||||
return triples
|
return triples
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error(f"request #{request_id} failed to extract triples: {str(e)}")
|
error(f"request #{request_id} failed to extract triples: {str(e)}, upappid={upappid}, apiname={apiname}")
|
||||||
raise RuntimeError(f"三元组抽取服务调用失败: {str(e)}")
|
return [] # 根据业务需求返回空列表
|
||||||
|
|
||||||
# 重排序服务 (BAAI/bge-reranker-v2-m3)
|
# 重排序服务 (BAAI/bge-reranker-v2-m3)
|
||||||
async def rerank_results(self, request, query: str, results: list, top_n: int, upappid: str, apiname: str, user: str) -> list:
|
async def rerank_results(self, request, query: str, results: list, top_n: int, upappid: str, apiname: str, user: str) -> list:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user