This commit is contained in:
wangmeihua 2025-08-12 19:18:47 +08:00
parent a36d809031
commit 069e287bdd

View File

@ -1,6 +1,7 @@
from appPublic.log import debug, error from appPublic.log import debug, error
from typing import Dict, Any, List from typing import Dict, Any, List
import uuid import uuid
import json
from ahserver.serverenv import ServerEnv from ahserver.serverenv import ServerEnv
from uapi.appapi import UAPI from uapi.appapi import UAPI
from appPublic.dictObject import DictObject from appPublic.dictObject import DictObject
@ -15,7 +16,8 @@ class APIService:
uapi = UAPI(request, DictObject(**globals())) uapi = UAPI(request, DictObject(**globals()))
debug(f'{uapi=}, {type(uapi.call)}') debug(f'{uapi=}, {type(uapi.call)}')
params_kw = {"input": texts} params_kw = {"input": texts}
d = 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 d.get("object") != "list" or not d.get("data"): if d.get("object") != "list" or not d.get("data"):
error(f"嵌入服务响应格式错误: {d}") error(f"嵌入服务响应格式错误: {d}")
raise RuntimeError("嵌入服务响应格式错误") raise RuntimeError("嵌入服务响应格式错误")
@ -34,7 +36,8 @@ class APIService:
raise ValueError("查询文本不能为空") raise ValueError("查询文本不能为空")
uapi = UAPI(request, DictObject(**globals())) uapi = UAPI(request, DictObject(**globals()))
params_kw = {"query": query} params_kw = {"query": query}
d = 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 d.get("object") != "list" or not d.get("data"): if d.get("object") != "list" or not d.get("data"):
error(f"实体识别服务响应格式错误: {d}") error(f"实体识别服务响应格式错误: {d}")
raise RuntimeError("实体识别服务响应格式错误") raise RuntimeError("实体识别服务响应格式错误")
@ -54,7 +57,8 @@ class APIService:
try: try:
uapi = UAPI(request, DictObject(**globals())) uapi = UAPI(request, DictObject(**globals()))
params_kw = {"text": text} params_kw = {"text": text}
d = 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 d.get("object") != "list": if d.get("object") != "list":
error(f"request #{request_id} invalid response format: {d}") error(f"request #{request_id} invalid response format: {d}")
raise RuntimeError("三元组抽取服务响应格式错误") raise RuntimeError("三元组抽取服务响应格式错误")
@ -87,7 +91,8 @@ class APIService:
"documents": documents, "documents": documents,
"top_n": top_n "top_n": top_n
} }
d = 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 d.get("object") != "rerank.result" or not d.get("data"): if d.get("object") != "rerank.result" or not d.get("data"):
error(f"重排序服务响应格式错误: {d}") error(f"重排序服务响应格式错误: {d}")
raise RuntimeError("重排序服务响应格式错误") raise RuntimeError("重排序服务响应格式错误")
@ -110,7 +115,8 @@ class APIService:
try: try:
uapi = UAPI(request, DictObject(**globals())) uapi = UAPI(request, DictObject(**globals()))
params_kw = {} params_kw = {}
d = 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 d.get("status") != 200: if d.get("status") != 200:
error(f"Neo4j 文档请求失败,状态码: {d.get('status')}") error(f"Neo4j 文档请求失败,状态码: {d.get('status')}")
raise RuntimeError(f"Neo4j 文档请求失败: {d.get('status')}") raise RuntimeError(f"Neo4j 文档请求失败: {d.get('status')}")
@ -125,7 +131,9 @@ class APIService:
"""初始化 Neo4j 服务""" """初始化 Neo4j 服务"""
uapi = UAPI(request, DictObject(**globals())) uapi = UAPI(request, DictObject(**globals()))
params_kw = {} params_kw = {}
return await uapi.call(upappid, apiname, user, params_kw) b = await uapi.call(upappid, apiname, user, params_kw)
d = json.loads(b.decode('utf-8'))
return d
async def neo4j_insert_triples(self, request, triples: list, document_id: str, knowledge_base_id: str, userid: str, upappid: str, apiname: str, user: str) -> Dict[str, Any]: async def neo4j_insert_triples(self, request, triples: list, document_id: str, knowledge_base_id: str, userid: str, upappid: str, apiname: str, user: str) -> Dict[str, Any]:
"""插入三元组到 Neo4j""" """插入三元组到 Neo4j"""
@ -136,19 +144,25 @@ class APIService:
"knowledge_base_id": knowledge_base_id, "knowledge_base_id": knowledge_base_id,
"userid": userid "userid": userid
} }
return await uapi.call(upappid, apiname, user, params_kw) b = uapi.call(upappid, apiname, user, params_kw)
d = json.loads(b.decode('utf-8'))
return d
async def neo4j_delete_document(self, request, document_id: str, upappid: str, apiname: str, user: str) -> Dict[str, Any]: async def neo4j_delete_document(self, request, document_id: str, upappid: str, apiname: str, user: str) -> Dict[str, Any]:
"""删除指定文档""" """删除指定文档"""
uapi = UAPI(request, DictObject(**globals())) uapi = UAPI(request, DictObject(**globals()))
params_kw = {"document_id": document_id} params_kw = {"document_id": document_id}
return await uapi.call(upappid, apiname, user, params_kw) b = uapi.call(upappid, apiname, user, params_kw)
d = json.loads(b.decode('utf-8'))
return d
async def neo4j_delete_knowledgebase(self, request, userid: str, knowledge_base_id: str, upappid: str, apiname: str, user: str) -> Dict[str, Any]: async def neo4j_delete_knowledgebase(self, request, userid: str, knowledge_base_id: str, upappid: str, apiname: str, user: str) -> Dict[str, Any]:
"""删除用户知识库""" """删除用户知识库"""
uapi = UAPI(request, DictObject(**globals())) uapi = UAPI(request, DictObject(**globals()))
params_kw = {"userid": userid, "knowledge_base_id": knowledge_base_id} params_kw = {"userid": userid, "knowledge_base_id": knowledge_base_id}
return await uapi.call(upappid, apiname, user, params_kw) b = uapi.call(upappid, apiname, user, params_kw)
d = json.loads(b.decode('utf-8'))
return d
async def neo4j_match_triplets(self, request, query: str, query_entities: list, userid: str, knowledge_base_id: str, upappid: str, apiname: str, user: str) -> Dict[str, Any]: async def neo4j_match_triplets(self, request, query: str, query_entities: list, userid: str, knowledge_base_id: str, upappid: str, apiname: str, user: str) -> Dict[str, Any]:
"""根据实体匹配相关三元组""" """根据实体匹配相关三元组"""
@ -159,20 +173,26 @@ class APIService:
"userid": userid, "userid": userid,
"knowledge_base_id": knowledge_base_id "knowledge_base_id": knowledge_base_id
} }
return await uapi.call(upappid, apiname, user, params_kw) b = uapi.call(upappid, apiname, user, params_kw)
d = json.loads(b.decode('utf-8'))
return d
# Milvus 服务 # Milvus 服务
async def milvus_create_collection(self, request, upappid: str, apiname: str, user: str, db_type: str = "") -> Dict[str, Any]: async def milvus_create_collection(self, request, upappid: str, apiname: str, user: str, db_type: str = "") -> Dict[str, Any]:
"""创建 Milvus 集合""" """创建 Milvus 集合"""
uapi = UAPI(request, DictObject(**globals())) uapi = UAPI(request, DictObject(**globals()))
params_kw = {"db_type": db_type} params_kw = {"db_type": db_type}
return await uapi.call(upappid, apiname, user, params_kw) b = uapi.call(upappid, apiname, user, params_kw)
d = json.loads(b.decode('utf-8'))
return d
async def milvus_delete_collection(self, request, upappid: str, apiname: str, user: str, db_type: str = "") -> Dict[str, Any]: async def milvus_delete_collection(self, request, upappid: str, apiname: str, user: str, db_type: str = "") -> Dict[str, Any]:
"""删除 Milvus 集合""" """删除 Milvus 集合"""
uapi = UAPI(request, DictObject(**globals())) uapi = UAPI(request, DictObject(**globals()))
params_kw = {"db_type": db_type} params_kw = {"db_type": db_type}
return await uapi.call(upappid, apiname, user, params_kw) b = uapi.call(upappid, apiname, user, params_kw)
d = json.loads(b.decode('utf-8'))
return d
async def milvus_insert_document(self, request, chunks: List[Dict], upappid: str, apiname: str, user: str, db_type: str = "") -> Dict[str, Any]: async def milvus_insert_document(self, request, chunks: List[Dict], upappid: str, apiname: str, user: str, db_type: str = "") -> Dict[str, Any]:
"""添加 Milvus 记录""" """添加 Milvus 记录"""
@ -181,11 +201,9 @@ class APIService:
"chunks": chunks, "chunks": chunks,
"dbtype": db_type "dbtype": db_type
} }
payload = json.dumps(params_kw) # 转换为 JSON 字符串 b = uapi.call(upappid, apiname, user, params_kw)
payload_bytes = payload.encode() # 编码为字节 d = json.loads(b.decode('utf-8'))
payload_size = len(payload_bytes) # 获取字节数 return d
debug(f"request payload size for insertdocument: {payload_size} bytes")
return await uapi.call(upappid, apiname, user, params_kw)
async def milvus_delete_document(self, request, userid: str, file_path: str, knowledge_base_id: str, document_id: str, upappid: str, apiname: str, user: str, db_type: str = "") -> Dict[str, Any]: async def milvus_delete_document(self, request, userid: str, file_path: str, knowledge_base_id: str, document_id: str, upappid: str, apiname: str, user: str, db_type: str = "") -> Dict[str, Any]:
"""删除 Milvus 记录""" """删除 Milvus 记录"""
@ -197,13 +215,17 @@ class APIService:
"document_id": document_id, "document_id": document_id,
"dbtype": db_type "dbtype": db_type
} }
return await uapi.call(upappid, apiname, user, params_kw) b = uapi.call(upappid, apiname, user, params_kw)
d = json.loads(b.decode('utf-8'))
return d
async def milvus_delete_knowledgebase(self, request, userid: str, knowledge_base_id: str, upappid: str, apiname: str, user: str) -> Dict[str, Any]: async def milvus_delete_knowledgebase(self, request, userid: str, knowledge_base_id: str, upappid: str, apiname: str, user: str) -> Dict[str, Any]:
"""删除 Milvus 知识库""" """删除 Milvus 知识库"""
uapi = UAPI(request, DictObject(**globals())) uapi = UAPI(request, DictObject(**globals()))
params_kw = {"userid": userid, "knowledge_base_id": knowledge_base_id} params_kw = {"userid": userid, "knowledge_base_id": knowledge_base_id}
return await uapi.call(upappid, apiname, user, params_kw) b = uapi.call(upappid, apiname, user, params_kw)
d = json.loads(b.decode('utf-8'))
return d
async def milvus_search_query(self, request, query_vector: List[float], userid: str, knowledge_base_ids: list, limit: int, offset: int, upappid: str, apiname: str, user: str) -> Dict[str, Any]: async def milvus_search_query(self, request, query_vector: List[float], userid: str, knowledge_base_ids: list, limit: int, offset: int, upappid: str, apiname: str, user: str) -> Dict[str, Any]:
"""根据用户知识库检索 Milvus""" """根据用户知识库检索 Milvus"""
@ -215,19 +237,25 @@ class APIService:
"limit": limit, "limit": limit,
"offset": offset "offset": offset
} }
return await uapi.call(upappid, apiname, user, params_kw) b = uapi.call(upappid, apiname, user, params_kw)
d = json.loads(b.decode('utf-8'))
return d
async def milvus_list_user_files(self, request, userid: str, upappid: str, apiname: str, user: str) -> Dict[str, Any]: async def milvus_list_user_files(self, request, userid: str, upappid: str, apiname: str, user: str) -> Dict[str, Any]:
"""列出 Milvus 用户知识库列表""" """列出 Milvus 用户知识库列表"""
uapi = UAPI(request, DictObject(**globals())) uapi = UAPI(request, DictObject(**globals()))
params_kw = {"userid": userid} params_kw = {"userid": userid}
return await uapi.call(upappid, apiname, user, params_kw) b = uapi.call(upappid, apiname, user, params_kw)
d = json.loads(b.decode('utf-8'))
return d
async def milvus_list_all_knowledgebases(self, request, upappid: str, apiname: str, user: str) -> Dict[str, Any]: async def milvus_list_all_knowledgebases(self, request, upappid: str, apiname: str, user: str) -> Dict[str, Any]:
"""列出 Milvus 数据库中所有数据""" """列出 Milvus 数据库中所有数据"""
uapi = UAPI(request, DictObject(**globals())) uapi = UAPI(request, DictObject(**globals()))
params_kw = {} params_kw = {}
return await uapi.call(upappid, apiname, user, params_kw) b = uapi.call(upappid, apiname, user, params_kw)
d = json.loads(b.decode('utf-8'))
return d
# RAG 服务 # RAG 服务
async def rag_create_collection(self, request, upappid: str, apiname: str, user: str, db_type: str = "") -> Dict[str, Any]: async def rag_create_collection(self, request, upappid: str, apiname: str, user: str, db_type: str = "") -> Dict[str, Any]: