amazon_bedrock_titan_embedding_driver Innovation Release
Adapted from the Griptape AI Framework documentation.
Bases:
BaseEmbeddingDriver
Attributes
| Name | Type | Description |
|---|---|---|
model | str | Embedding model name. Defaults to DEFAULT_MODEL. |
tokenizer | BaseTokenizer | Optionally provide custom BedrockTitanTokenizer. |
session | Session | Optionally provide custom boto3.Session. |
client | BedrockRuntimeClient | Optionally provide custom bedrock-runtime client. |
Source Code in griptape/drivers/embedding/amazon_bedrock_titan_embedding_driver.py
@define class AmazonBedrockTitanEmbeddingDriver(BaseEmbeddingDriver): """Amazon Bedrock Titan Embedding Driver. Attributes: model: Embedding model name. Defaults to DEFAULT_MODEL. tokenizer: Optionally provide custom `BedrockTitanTokenizer`. session: Optionally provide custom `boto3.Session`. client: Optionally provide custom `bedrock-runtime` client. """ DEFAULT_MODEL = "amazon.titan-embed-text-v1" model: str = field(default=DEFAULT_MODEL, kw_only=True, metadata={"serializable": True}) session: boto3.Session = field(default=Factory(lambda: import_optional_dependency("boto3").Session()), kw_only=True) tokenizer: BaseTokenizer = field( default=Factory(lambda self: AmazonBedrockTokenizer(model=self.model), takes_self=True), kw_only=True, ) _client: Optional[BedrockRuntimeClient] = field( default=None, kw_only=True, alias="client", metadata={"serializable": False} ) @lazy_property() def client(self) -> BedrockRuntimeClient: return self.session.client("bedrock-runtime") def try_embed_artifact(self, artifact: TextArtifact | ImageArtifact, **kwargs) -> list[float]: if isinstance(artifact, TextArtifact): return self.try_embed_chunk(artifact.value) return self._invoke_model({"inputImage": base64.b64encode(artifact.value).decode()})["embedding"] def try_embed_chunk(self, chunk: str, **kwargs) -> list[float]: return self._invoke_model( { "inputText": chunk, } )["embedding"] def _invoke_model(self, payload: dict) -> dict[str, Any]: response = self.client.invoke_model( body=json.dumps(payload), modelId=self.model, accept="application/json", contentType="application/json", ) return json.loads(response.get("body").read())
DEFAULT_MODEL = 'amazon.titan-embed-text-v1'class-attribute instance-attribute_client = field(default=None, kw_only=True, alias='client', metadata={'serializable': False})class-attribute instance-attributemodel = field(default=DEFAULT_MODEL, kw_only=True, metadata={'serializable': True})class-attribute instance-attributesession = field(default=Factory(lambda: import_optional_dependency('boto3').Session()), kw_only=True)class-attribute instance-attributetokenizer = field(default=Factory(lambda self: AmazonBedrockTokenizer(model=self.model), takes_self=True), kw_only=True)class-attribute instance-attribute
_invoke_model(payload)
Source Code in griptape/drivers/embedding/amazon_bedrock_titan_embedding_driver.py
def _invoke_model(self, payload: dict) -> dict[str, Any]: response = self.client.invoke_model( body=json.dumps(payload), modelId=self.model, accept="application/json", contentType="application/json", ) return json.loads(response.get("body").read())
client()
Source Code in griptape/drivers/embedding/amazon_bedrock_titan_embedding_driver.py
@lazy_property() def client(self) -> BedrockRuntimeClient: return self.session.client("bedrock-runtime")
try_embed_artifact(artifact, **kwargs)
Source Code in griptape/drivers/embedding/amazon_bedrock_titan_embedding_driver.py
def try_embed_artifact(self, artifact: TextArtifact | ImageArtifact, **kwargs) -> list[float]: if isinstance(artifact, TextArtifact): return self.try_embed_chunk(artifact.value) return self._invoke_model({"inputImage": base64.b64encode(artifact.value).decode()})["embedding"]
try_embed_chunk(chunk, **kwargs)
Source Code in griptape/drivers/embedding/amazon_bedrock_titan_embedding_driver.py
def try_embed_chunk(self, chunk: str, **kwargs) -> list[float]: return self._invoke_model( { "inputText": chunk, } )["embedding"]