Bläddra i källkod

Fix: DataSet.update() now refreshes object data (#8058)

### What problem does this PR solve?

#8057 

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
tags/v0.19.1
Liu An 5 månader sedan
förälder
incheckning
ab5e3ded68
Inget konto är kopplat till bidragsgivarens mejladress

+ 10
- 1
api/apps/sdk/dataset.py Visa fil

logging.exception(e) logging.exception(e)
return get_error_data_result(message="Database operation failed") return get_error_data_result(message="Database operation failed")


return get_result()
try:
ok, k = KnowledgebaseService.get_by_id(kb.id)
if not ok:
return get_error_data_result(message="Dataset created failed")
except OperationalError as e:
logging.exception(e)
return get_error_data_result(message="Database operation failed")

response_data = remap_dictionary_keys(k.to_dict())
return get_result(data=response_data)




@manager.route("/datasets", methods=["GET"]) # noqa: F821 @manager.route("/datasets", methods=["GET"]) # noqa: F821

+ 8
- 4
sdk/python/ragflow_sdk/modules/base.py Visa fil

# limitations under the License. # limitations under the License.
# #



class Base: class Base:
def __init__(self, rag, res_dict): def __init__(self, rag, res_dict):
self.rag = rag self.rag = rag
self._update_from_dict(rag, res_dict)

def _update_from_dict(self, rag, res_dict):
for k, v in res_dict.items(): for k, v in res_dict.items():
if isinstance(v, dict): if isinstance(v, dict):
self.__dict__[k] = Base(rag, v) self.__dict__[k] = Base(rag, v)
pr = {} pr = {}
for name in dir(self): for name in dir(self):
value = getattr(self, name) value = getattr(self, name)
if not name.startswith('__') and not callable(value) and name != "rag":
if not name.startswith("__") and not callable(value) and name != "rag":
if isinstance(value, Base): if isinstance(value, Base):
pr[name] = value.to_json() pr[name] = value.to_json()
else: else:
return pr return pr


def post(self, path, json=None, stream=False, files=None): def post(self, path, json=None, stream=False, files=None):
res = self.rag.post(path, json, stream=stream,files=files)
res = self.rag.post(path, json, stream=stream, files=files)
return res return res


def get(self, path, params=None): def get(self, path, params=None):
res = self.rag.delete(path, json) res = self.rag.delete(path, json)
return res return res


def put(self,path, json):
res = self.rag.put(path,json)
def put(self, path, json):
res = self.rag.put(path, json)
return res return res


def __str__(self): def __str__(self):

+ 7
- 9
sdk/python/ragflow_sdk/modules/dataset.py Visa fil

# limitations under the License. # limitations under the License.
# #


from .document import Document

from .base import Base from .base import Base
from .document import Document




class DataSet(Base): class DataSet(Base):
super().__init__(rag, res_dict) super().__init__(rag, res_dict)


def update(self, update_message: dict): def update(self, update_message: dict):
res = self.put(f'/datasets/{self.id}',
update_message)
res = self.put(f"/datasets/{self.id}", update_message)
res = res.json() res = res.json()
if res.get("code") != 0: if res.get("code") != 0:
raise Exception(res["message"]) raise Exception(res["message"])


self._update_from_dict(self.rag, res.get("data", {}))
return self

def upload_documents(self, document_list: list[dict]): def upload_documents(self, document_list: list[dict]):
url = f"/datasets/{self.id}/documents" url = f"/datasets/{self.id}/documents"
files = [("file", (ele["display_name"], ele["blob"])) for ele in document_list] files = [("file", (ele["display_name"], ele["blob"])) for ele in document_list]
return doc_list return doc_list
raise Exception(res.get("message")) raise Exception(res.get("message"))


def list_documents(self, id: str | None = None, keywords: str | None = None, page: int = 1, page_size: int = 30,
orderby: str = "create_time", desc: bool = True):
res = self.get(f"/datasets/{self.id}/documents",
params={"id": id, "keywords": keywords, "page": page, "page_size": page_size, "orderby": orderby,
"desc": desc})
def list_documents(self, id: str | None = None, keywords: str | None = None, page: int = 1, page_size: int = 30, orderby: str = "create_time", desc: bool = True):
res = self.get(f"/datasets/{self.id}/documents", params={"id": id, "keywords": keywords, "page": page, "page_size": page_size, "orderby": orderby, "desc": desc})
res = res.json() res = res.json()
documents = [] documents = []
if res.get("code") == 0: if res.get("code") == 0:

Laddar…
Avbryt
Spara