codekingpro/portable-devtools
114k
1import json2import uuid3from typing import List4 5from langchain_core.documents import Document6 7from langchain_community.document_loaders.base import BaseLoader8from langchain_community.tools.nuclia.tool import NucliaUnderstandingAPI9 10 11class NucliaLoader(BaseLoader):12 """Load from any file type using `Nuclia Understanding API`."""13 14 def __init__(self, path: str, nuclia_tool: NucliaUnderstandingAPI):15 self.nua = nuclia_tool16 self.id = str(uuid.uuid4())17 self.nua.run({"action": "push", "id": self.id, "path": path, "text": None})18 19 def load(self) -> List[Document]:20 """Load documents."""21 data = self.nua.run(22 {23 "action": "pull",24 "id": self.id,25 "path": None,26 "text": None,27 }28 )29 if not data:30 return []31 obj = json.loads(data)32 text = obj["extracted_text"][0]["body"]["text"]33 print(text) # noqa: T20134 metadata = {35 "file": obj["file_extracted_data"][0],36 "metadata": obj["field_metadata"][0],37 }38 return [Document(page_content=text, metadata=metadata)]39 