codekingpro/portable-devtools
114k
1from typing import Iterator, Optional2 3from langchain_core.documents import Document4 5from langchain_community.document_loaders.base import BaseLoader6 7 8class PsychicLoader(BaseLoader):9 """Load from `Psychic.dev`."""10 11 def __init__(12 self, api_key: str, account_id: str, connector_id: Optional[str] = None13 ):14 """Initialize with API key, connector id, and account id.15 16 Args:17 api_key: The Psychic API key.18 account_id: The Psychic account id.19 connector_id: The Psychic connector id.20 """21 22 try:23 from psychicapi import ConnectorId, Psychic24 except ImportError:25 raise ImportError(26 "`psychicapi` package not found, please run `pip install psychicapi`"27 )28 self.psychic = Psychic(secret_key=api_key)29 self.connector_id = ConnectorId(connector_id)30 self.account_id = account_id31 32 def lazy_load(self) -> Iterator[Document]:33 psychic_docs = self.psychic.get_documents(34 connector_id=self.connector_id, account_id=self.account_id35 )36 for doc in psychic_docs.documents:37 yield Document(38 page_content=doc["content"],39 metadata={"title": doc["title"], "source": doc["uri"]},40 )41 