优化DifyCompareTest和WorkorderToDify模块,调整日志记录格式,修复API密钥获取方式,增强工单处理流程,添加元数据管理功能,改进并发上传逻辑,更新文档处理方式。
This commit is contained in:
@@ -105,7 +105,7 @@ class DifyApi:
|
||||
while idx < 5:
|
||||
if self.get_document_indexing_status(dataset_id, response.json().get("batch")):
|
||||
break
|
||||
time.sleep(1)
|
||||
time.sleep(5)
|
||||
idx += 1
|
||||
else:
|
||||
logging.warning("文档索引超时,可能需要手动检查。")
|
||||
@@ -221,11 +221,101 @@ class DifyApi:
|
||||
# 获取所有文档
|
||||
doc_info = self.get_documents(dataset_id, keyword=document_name)
|
||||
for doc_id, info in doc_info.items():
|
||||
if info["name"].split('.')[0] == document_name:
|
||||
if info["name"] == document_name:
|
||||
return doc_id
|
||||
|
||||
print(f'获取文档ID失败。名称: {document_name}。原因:未找到文档ID')
|
||||
return ''
|
||||
|
||||
def add_document_metadata(self, dataset_id: str, document_id: str, metadata_list: List[Dict]) -> bool:
|
||||
"""
|
||||
为文档添加元数据。
|
||||
|
||||
:param dataset_id: 数据集ID。
|
||||
:param document_id: 文档ID。
|
||||
:param metadata_list: 元数据列表,每项包含id、name和value。
|
||||
:return: 如果添加成功返回True,否则返回False。
|
||||
"""
|
||||
url = f"{self.dify_url}/datasets/{dataset_id}/documents/metadata"
|
||||
headers = {
|
||||
'Authorization': f'Bearer {self.dify_dataset_api_key}',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
data = {
|
||||
"operation_data": [
|
||||
{
|
||||
"document_id": document_id,
|
||||
"metadata_list": metadata_list
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
|
||||
if response.status_code == 200:
|
||||
logging.info(f"成功为文档 {document_id} 添加元数据")
|
||||
return True
|
||||
else:
|
||||
logging.error(f"添加元数据失败,状态码: {response.status_code}, 响应: {response.text}")
|
||||
return False
|
||||
except Exception as e:
|
||||
logging.error(f"添加元数据请求失败: {e}")
|
||||
return False
|
||||
|
||||
def get_dataset_metadata(self, dataset_id: str) -> List[Dict]:
|
||||
"""
|
||||
获取数据集的元数据。
|
||||
|
||||
:param dataset_id: 数据集ID。
|
||||
:return: 元数据列表,如果获取失败则返回空列表。
|
||||
"""
|
||||
url = f"{self.dify_url}/datasets/{dataset_id}/metadata"
|
||||
headers = {
|
||||
'Authorization': f'Bearer {self.dify_dataset_api_key}'
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.get(url, headers=headers, verify=False)
|
||||
if response.status_code == 200:
|
||||
return response.json()
|
||||
else:
|
||||
logging.error(f"获取数据集元数据失败,状态码: {response.status_code}, 响应: {response.text}")
|
||||
return []
|
||||
except Exception as e:
|
||||
logging.error(f"获取数据集元数据请求失败: {e}")
|
||||
return []
|
||||
|
||||
def create_dataset_metadata(self, dataset_id: str, metadata_type: str, metadata_name: str) -> Dict:
|
||||
"""
|
||||
创建数据集元数据。
|
||||
|
||||
:param dataset_id: 数据集ID。
|
||||
:param metadata_type: 元数据类型,如"string"。
|
||||
:param metadata_name: 元数据名称。
|
||||
:return: 创建的元数据信息,如果创建失败则返回空字典。
|
||||
"""
|
||||
url = f"{self.dify_url}/datasets/{dataset_id}/metadata"
|
||||
headers = {
|
||||
'Authorization': f'Bearer {self.dify_dataset_api_key}',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
data = {
|
||||
"type": metadata_type,
|
||||
"name": metadata_name
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
|
||||
if response.json()["id"]:
|
||||
logging.info(f"成功创建数据集元数据: {metadata_name}")
|
||||
return response.json()
|
||||
else:
|
||||
logging.error(f"创建数据集元数据失败,状态码: {response.status_code}, 响应: {response.text}")
|
||||
return {}
|
||||
except Exception as e:
|
||||
logging.error(f"创建数据集元数据请求失败: {e}")
|
||||
return {}
|
||||
|
||||
def get_document_last_update_time(self, dataset_id: str, document_name: str) -> str:
|
||||
"""
|
||||
@@ -638,9 +728,7 @@ if __name__ == '__main__':
|
||||
load_dotenv()
|
||||
|
||||
d = DifyApi()
|
||||
id = d.upload_file(r"D:\Code\DataConvertUpload\wiki3todify\images\5fd27f31858f808f7659165628bfb8a7.png")
|
||||
print(id)
|
||||
|
||||
# d.remove_dataset_all_doc("0b835829-4d47-4419-832f-3cd6d9510b87")
|
||||
|
||||
# d.remove_dataset_all_doc("8673162d-0db1-4752-905e-ae3ef377a541")
|
||||
# d.remove_dataset_all_doc("78abfb73-7e12-4dd4-92ff-b377b0235690")
|
||||
# d.remove_dataset_all_doc("841b890e-c769-4839-8314-70756c0bf3c1")
|
||||
|
||||
Reference in New Issue
Block a user