griptape_cloud
__all__ = ['GriptapeCloudVectorStoreDriver']
module-attribute
Bases:
BaseVectorStoreDriver
Attributes
Name | Type | Description |
---|---|---|
api_key | str | API Key for Gen AI Builder. |
knowledge_base_id | str | Knowledge Base ID for Gen AI Builder. |
base_url | str | Base URL for Gen AI Builder. |
headers | dict | Headers for Gen AI Builder. |
Source Code in griptape/drivers/vector/griptape_cloud_vector_store_driver.py
@define class GriptapeCloudVectorStoreDriver(BaseVectorStoreDriver): """A vector store driver for Gen AI Builder Knowledge Bases. Attributes: api_key: API Key for Gen AI Builder. knowledge_base_id: Knowledge Base ID for Gen AI Builder. base_url: Base URL for Gen AI Builder. headers: Headers for Gen AI Builder. """ base_url: str = field( default=Factory(lambda: os.getenv("GT_CLOUD_BASE_URL", "https://cloud.griptape.ai")), ) api_key: str = field(default=Factory(lambda: os.environ["GT_CLOUD_API_KEY"])) knowledge_base_id: str = field(kw_only=True, metadata={"serializable": True}) headers: dict = field( default=Factory(lambda self: {"Authorization": f"Bearer {self.api_key}"}, takes_self=True), kw_only=True, ) embedding_driver: BaseEmbeddingDriver = field( default=Factory(lambda: DummyEmbeddingDriver()), metadata={"serializable": True}, kw_only=True, init=False, ) def upsert_vector( self, vector: list[float], vector_id: Optional[str] = None, namespace: Optional[str] = None, meta: Optional[dict] = None, **kwargs, ) -> str: raise NotImplementedError(f"{self.__class__.__name__} does not support vector upsert.") def upsert_text_artifact( self, artifact: TextArtifact, namespace: Optional[str] = None, meta: Optional[dict] = None, vector_id: Optional[str] = None, **kwargs, ) -> str: raise NotImplementedError(f"{self.__class__.__name__} does not support text artifact upsert.") def upsert_text( self, string: str, vector_id: Optional[str] = None, namespace: Optional[str] = None, meta: Optional[dict] = None, **kwargs, ) -> str: raise NotImplementedError(f"{self.__class__.__name__} does not support text upsert.") def load_entry(self, vector_id: str, *, namespace: Optional[str] = None) -> BaseVectorStoreDriver.Entry: raise NotImplementedError(f"{self.__class__.__name__} does not support entry loading.") def load_entries(self, *, namespace: Optional[str] = None) -> list[BaseVectorStoreDriver.Entry]: raise NotImplementedError(f"{self.__class__.__name__} does not support entry loading.") def load_artifacts(self, *, namespace: Optional[str] = None) -> ListArtifact: raise NotImplementedError(f"{self.__class__.__name__} does not support Artifact loading.") def query( self, query: str | TextArtifact | ImageArtifact, *, count: Optional[int] = None, namespace: Optional[str] = None, include_vectors: Optional[bool] = None, distance_metric: Optional[str] = None, # GriptapeCloudVectorStoreDriver-specific params: filter: Optional[dict] = None, # noqa: A002 **kwargs, ) -> list[BaseVectorStoreDriver.Entry]: """Performs a query on the Knowledge Base. Performs a query on the Knowledge Base and returns Artifacts with close vector proximity to the query, optionally filtering to only those that match the provided filter(s). """ if isinstance(query, ImageArtifact): raise ValueError(f"{self.__class__.__name__} does not support querying with Image Artifacts.") url = griptape_cloud_url(self.base_url, f"api/knowledge-bases/{self.knowledge_base_id}/query") query_args = { "count": count, "distance_metric": distance_metric, "filter": filter, "include_vectors": include_vectors, } query_args = {k: v for k, v in query_args.items() if v is not None} request: dict[str, Any] = { "query": str(query), "query_args": query_args, } response = requests.post(url, json=request, headers=self.headers).json() entries = response.get("entries", []) return [BaseVectorStoreDriver.Entry.from_dict(entry) for entry in entries] def delete_vector(self, vector_id: str) -> NoReturn: raise NotImplementedError(f"{self.__class__.__name__} does not support deletion.")
api_key = field(default=Factory(lambda: os.environ['GT_CLOUD_API_KEY']))
class-attribute instance-attributebase_url = field(default=Factory(lambda: os.getenv('GT_CLOUD_BASE_URL', 'https://cloud.griptape.ai')))
class-attribute instance-attributeembedding_driver = field(default=Factory(lambda: DummyEmbeddingDriver()), metadata={'serializable': True}, kw_only=True, init=False)
class-attribute instance-attributeheaders = field(default=Factory(lambda self: {'Authorization': f'Bearer {self.api_key}'}, takes_self=True), kw_only=True)
class-attribute instance-attributeknowledge_base_id = field(kw_only=True, metadata={'serializable': True})
class-attribute instance-attribute
delete_vector(vector_id)
Source Code in griptape/drivers/vector/griptape_cloud_vector_store_driver.py
def delete_vector(self, vector_id: str) -> NoReturn: raise NotImplementedError(f"{self.__class__.__name__} does not support deletion.")
load_artifacts(*, namespace=None)
Source Code in griptape/drivers/vector/griptape_cloud_vector_store_driver.py
def load_artifacts(self, *, namespace: Optional[str] = None) -> ListArtifact: raise NotImplementedError(f"{self.__class__.__name__} does not support Artifact loading.")
load_entries(*, namespace=None)
Source Code in griptape/drivers/vector/griptape_cloud_vector_store_driver.py
def load_entries(self, *, namespace: Optional[str] = None) -> list[BaseVectorStoreDriver.Entry]: raise NotImplementedError(f"{self.__class__.__name__} does not support entry loading.")
load_entry(vector_id, *, namespace=None)
Source Code in griptape/drivers/vector/griptape_cloud_vector_store_driver.py
def load_entry(self, vector_id: str, *, namespace: Optional[str] = None) -> BaseVectorStoreDriver.Entry: raise NotImplementedError(f"{self.__class__.__name__} does not support entry loading.")
query(query, *, count=None, namespace=None, include_vectors=None, distance_metric=None, filter=None, **kwargs)
Source Code in griptape/drivers/vector/griptape_cloud_vector_store_driver.py
def query( self, query: str | TextArtifact | ImageArtifact, *, count: Optional[int] = None, namespace: Optional[str] = None, include_vectors: Optional[bool] = None, distance_metric: Optional[str] = None, # GriptapeCloudVectorStoreDriver-specific params: filter: Optional[dict] = None, # noqa: A002 **kwargs, ) -> list[BaseVectorStoreDriver.Entry]: """Performs a query on the Knowledge Base. Performs a query on the Knowledge Base and returns Artifacts with close vector proximity to the query, optionally filtering to only those that match the provided filter(s). """ if isinstance(query, ImageArtifact): raise ValueError(f"{self.__class__.__name__} does not support querying with Image Artifacts.") url = griptape_cloud_url(self.base_url, f"api/knowledge-bases/{self.knowledge_base_id}/query") query_args = { "count": count, "distance_metric": distance_metric, "filter": filter, "include_vectors": include_vectors, } query_args = {k: v for k, v in query_args.items() if v is not None} request: dict[str, Any] = { "query": str(query), "query_args": query_args, } response = requests.post(url, json=request, headers=self.headers).json() entries = response.get("entries", []) return [BaseVectorStoreDriver.Entry.from_dict(entry) for entry in entries]
upsert_text(string, vector_id=None, namespace=None, meta=None, **kwargs)
Source Code in griptape/drivers/vector/griptape_cloud_vector_store_driver.py
def upsert_text( self, string: str, vector_id: Optional[str] = None, namespace: Optional[str] = None, meta: Optional[dict] = None, **kwargs, ) -> str: raise NotImplementedError(f"{self.__class__.__name__} does not support text upsert.")
upsert_text_artifact(artifact, namespace=None, meta=None, vector_id=None, **kwargs)
Source Code in griptape/drivers/vector/griptape_cloud_vector_store_driver.py
def upsert_text_artifact( self, artifact: TextArtifact, namespace: Optional[str] = None, meta: Optional[dict] = None, vector_id: Optional[str] = None, **kwargs, ) -> str: raise NotImplementedError(f"{self.__class__.__name__} does not support text artifact upsert.")
upsert_vector(vector, vector_id=None, namespace=None, meta=None, **kwargs)
Source Code in griptape/drivers/vector/griptape_cloud_vector_store_driver.py
def upsert_vector( self, vector: list[float], vector_id: Optional[str] = None, namespace: Optional[str] = None, meta: Optional[dict] = None, **kwargs, ) -> str: raise NotImplementedError(f"{self.__class__.__name__} does not support vector upsert.")
- On this page
- Attributes
- delete_vector(vector_id)
- load_artifacts(*, namespace=None)
- load_entries(*, namespace=None)
- load_entry(vector_id, *, namespace=None)
- query(query, *, count=None, namespace=None, include_vectors=None, distance_metric=None, filter=None, **kwargs)
- upsert_text(string, vector_id=None, namespace=None, meta=None, **kwargs)
- upsert_text_artifact(artifact, namespace=None, meta=None, vector_id=None, **kwargs)
- upsert_vector(vector, vector_id=None, namespace=None, meta=None, **kwargs)
Could this page be better? Report a problem or suggest an addition!