openai#
__all__ = ['AzureOpenAiEmbeddingDriver', 'OpenAiEmbeddingDriver']module-attribute
Bases: OpenAiEmbeddingDriver “)
Attributes#
Name |
Type |
Description |
|---|---|---|
<a href="openai.mdx#griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.azure_deployment" title="azure_deployment = field(kw_only=True, default=Factory(lambda self: self.model, takes_self=True), metadata={'serializable': True}) class-attribute instance-attribute (griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.azure_deployment)"><code class="language-python">azure_deployment</code></a> |
str |
An optional Azure OpenAi deployment id. Defaults to the model name.<br/> |
<a href="openai.mdx#griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.azure_endpoint" title="azure_endpoint = field(kw_only=True, metadata={'serializable': True}) class-attribute instance-attribute (griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.azure_endpoint)"><code class="language-python">azure_endpoint</code></a> |
str |
An Azure OpenAi endpoint.<br/> |
<a href="openai.mdx#griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.azure_ad_token" title="azure_ad_token = field(kw_only=True, default=None, metadata={'serializable': False}) class-attribute instance-attribute (griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.azure_ad_token)"><code class="language-python">azure_ad_token</code></a> |
Optional[str] |
An optional Azure Active Directory token.<br/> |
<a href="openai.mdx#griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.azure_ad_token_provider" title="azure_ad_token_provider = field(kw_only=True, default=None, metadata={'serializable': False}) class-attribute instance-attribute (griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.azure_ad_token_provider)"><code class="language-python">azure_ad_token_provider</code></a> |
Optional[Callable[[], str]] |
An optional Azure Active Directory token provider.<br/> |
<a href="openai.mdx#griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.api_version" title="api_version = field(default='2024-10-21', kw_only=True, metadata={'serializable': True}) class-attribute instance-attribute (griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.api_version)"><code class="language-python">api_version</code></a> |
str |
An Azure OpenAi API version.<br/> |
<a href="openai.mdx#griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.tokenizer" title="tokenizer = field(default=Factory(lambda self: OpenAiTokenizer(model=self.model), takes_self=True), kw_only=True) class-attribute instance-attribute (griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.tokenizer)"><code class="language-python">tokenizer</code></a> |
<a href="../../tokenizers#griptape.tokenizers.OpenAiTokenizer" title="OpenAiTokenizer (griptape.tokenizers.OpenAiTokenizer)"><code class="language-python">OpenAiTokenizer</code></a> |
An OpenAiTokenizer.<br/> |
<a href="openai.mdx#griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.client" title="client() (griptape.drivers.embedding.openai.AzureOpenAiEmbeddingDriver.client)"><code class="language-python">client</code></a> |
AzureOpenAI |
An openai.AzureOpenAI client.<br/> |
Source Code in
griptape/drivers/embedding/azure_openai_embedding_driver.py
@define
class AzureOpenAiEmbeddingDriver(OpenAiEmbeddingDriver):
"""Azure OpenAi Embedding Driver.
Attributes:
azure_deployment: An optional Azure OpenAi deployment id. Defaults to the model name.
azure_endpoint: An Azure OpenAi endpoint.
azure_ad_token: An optional Azure Active Directory token.
azure_ad_token_provider: An optional Azure Active Directory token provider.
api_version: An Azure OpenAi API version.
tokenizer: An `OpenAiTokenizer`.
client: An `openai.AzureOpenAI` client.
"""
azure_deployment: str = field(
kw_only=True,
default=Factory(lambda self: self.model, takes_self=True),
metadata={"serializable": True},
)
azure_endpoint: str = field(kw_only=True, metadata={"serializable": True})
azure_ad_token: Optional[str] = field(kw_only=True, default=None, metadata={"serializable": False})
azure_ad_token_provider: Optional[Callable[[], str]] = field(
kw_only=True,
default=None,
metadata={"serializable": False},
)
api_version: str = field(default="2024-10-21", kw_only=True, metadata={"serializable": True})
tokenizer: OpenAiTokenizer = field(
default=Factory(lambda self: OpenAiTokenizer(model=self.model), takes_self=True),
kw_only=True,
)
_client: Optional[openai.AzureOpenAI] = field(
default=None, kw_only=True, alias="client", metadata={"serializable": False}
)
@lazy_property()
def client(self) -> openai.AzureOpenAI:
return openai.AzureOpenAI(
organization=self.organization,
api_key=self.api_key,
api_version=self.api_version,
azure_endpoint=self.azure_endpoint,
azure_deployment=self.azure_deployment,
azure_ad_token=self.azure_ad_token,
azure_ad_token_provider=self.azure_ad_token_provider,
)
_client = field(default=None, kw_only=True, alias='client', metadata={'serializable': False})class-attribute instance-attributeapi_version = field(default='2024-10-21', kw_only=True, metadata={'serializable': True})class-attribute instance-attributeazure_ad_token = field(kw_only=True, default=None, metadata={'serializable': False})class-attribute instance-attributeazure_ad_token_provider = field(kw_only=True, default=None, metadata={'serializable': False})class-attribute instance-attributeazure_deployment = field(kw_only=True, default=Factory(lambda self: self.model, takes_self=True), metadata={'serializable': True})class-attribute instance-attributeazure_endpoint = field(kw_only=True, metadata={'serializable': True})class-attribute instance-attributetokenizer = field(default=Factory(lambda self: OpenAiTokenizer(model=self.model), takes_self=True), kw_only=True)class-attribute instance-attribute
client()#
Source Code in
griptape/drivers/embedding/azure_openai_embedding_driver.py
@lazy_property()
def client(self) -> openai.AzureOpenAI:
return openai.AzureOpenAI(
organization=self.organization,
api_key=self.api_key,
api_version=self.api_version,
azure_endpoint=self.azure_endpoint,
azure_deployment=self.azure_deployment,
azure_ad_token=self.azure_ad_token,
azure_ad_token_provider=self.azure_ad_token_provider,
)
OpenAiEmbeddingDriver#
Bases: BaseEmbeddingDriver “)
Attributes#
Name |
Type |
Description |
|---|---|---|
<a href="openai.mdx#griptape.drivers.embedding.openai.OpenAiEmbeddingDriver.model" title="model = field(default=DEFAULT_MODEL, kw_only=True, metadata={'serializable': True}) class-attribute instance-attribute (griptape.drivers.embedding.openai.OpenAiEmbeddingDriver.model)"><code class="language-python">model</code></a> |
str |
OpenAI embedding model name. Defaults to text-embedding-3-small.<br/> |
<a href="openai.mdx#griptape.drivers.embedding.openai.OpenAiEmbeddingDriver.base_url" title="base_url = field(default=None, kw_only=True, metadata={'serializable': True}) class-attribute instance-attribute (griptape.drivers.embedding.openai.OpenAiEmbeddingDriver.base_url)"><code class="language-python">base_url</code></a> |
Optional[str] |
API URL. Defaults to OpenAI's v1 API URL.<br/> |
<a href="openai.mdx#griptape.drivers.embedding.openai.OpenAiEmbeddingDriver.api_key" title="api_key = field(default=None, kw_only=True, metadata={'serializable': False}) class-attribute instance-attribute (griptape.drivers.embedding.openai.OpenAiEmbeddingDriver.api_key)"><code class="language-python">api_key</code></a> |
Optional[str] |
API key to pass directly. Defaults to OPENAI_API_KEY environment variable.<br/> |
<a href="openai.mdx#griptape.drivers.embedding.openai.OpenAiEmbeddingDriver.organization" title="organization = field(default=None, kw_only=True, metadata={'serializable': True}) class-attribute instance-attribute (griptape.drivers.embedding.openai.OpenAiEmbeddingDriver.organization)"><code class="language-python">organization</code></a> |
Optional[str] |
OpenAI organization. Defaults to 'OPENAI_ORGANIZATION' environment variable.<br/> |
<a href="openai.mdx#griptape.drivers.embedding.openai.OpenAiEmbeddingDriver.tokenizer" title="tokenizer = field(default=Factory(lambda self: OpenAiTokenizer(model=self.model), takes_self=True), kw_only=True) class-attribute instance-attribute (griptape.drivers.embedding.openai.OpenAiEmbeddingDriver.tokenizer)"><code class="language-python">tokenizer</code></a> |
<a href="../../tokenizers#griptape.tokenizers.OpenAiTokenizer" title="OpenAiTokenizer (griptape.tokenizers.OpenAiTokenizer)"><code class="language-python">OpenAiTokenizer</code></a> |
Optionally provide custom OpenAiTokenizer.<br/> |
<a href="openai.mdx#griptape.drivers.embedding.openai.OpenAiEmbeddingDriver.client" title="client() (griptape.drivers.embedding.openai.OpenAiEmbeddingDriver.client)"><code class="language-python">client</code></a> |
OpenAI |
Optionally provide custom openai.OpenAI client.<br/> |
azure_deployment |
OpenAI |
An Azure OpenAi deployment id.<br/> |
azure_endpoint |
OpenAI |
An Azure OpenAi endpoint.<br/> |
azure_ad_token |
OpenAI |
An optional Azure Active Directory token.<br/> |
azure_ad_token_provider |
OpenAI |
An optional Azure Active Directory token provider.<br/> |
api_version |
OpenAI |
An Azure OpenAi API version.<br/> |
Source Code in griptape/drivers/embedding/openai_embedding_driver.py
@define
class OpenAiEmbeddingDriver(BaseEmbeddingDriver):
"""OpenAI Embedding Driver.
Attributes:
model: OpenAI embedding model name. Defaults to `text-embedding-3-small`.
base_url: API URL. Defaults to OpenAIs v1 API URL.
api_key: API key to pass directly. Defaults to `OPENAI_API_KEY` environment variable.
organization: OpenAI organization. Defaults to OPENAI_ORGANIZATION environment variable.
tokenizer: Optionally provide custom `OpenAiTokenizer`.
client: Optionally provide custom `openai.OpenAI` client.
azure_deployment: An Azure OpenAi deployment id.
azure_endpoint: An Azure OpenAi endpoint.
azure_ad_token: An optional Azure Active Directory token.
azure_ad_token_provider: An optional Azure Active Directory token provider.
api_version: An Azure OpenAi API version.
"""
DEFAULT_MODEL = "text-embedding-3-small"
model: str = field(default=DEFAULT_MODEL, kw_only=True, metadata={"serializable": True})
base_url: Optional[str] = field(default=None, kw_only=True, metadata={"serializable": True})
api_key: Optional[str] = field(default=None, kw_only=True, metadata={"serializable": False})
organization: Optional[str] = field(default=None, kw_only=True, metadata={"serializable": True})
tokenizer: OpenAiTokenizer = field(
default=Factory(lambda self: OpenAiTokenizer(model=self.model), takes_self=True),
kw_only=True,
)
_client: Optional[openai.OpenAI] = field(
default=None, kw_only=True, alias="client", metadata={"serializable": False}
)
@lazy_property()
def client(self) -> openai.OpenAI:
return openai.OpenAI(api_key=self.api_key, base_url=self.base_url, organization=self.organization)
def try_embed_chunk(self, chunk: str, **kwargs) -> list[float]:
# Address a performance issue in older ada models
# https://github.com/openai/openai-python/issues/418#issuecomment-1525939500
if self.model.endswith("001"):
chunk = chunk.replace("\n", " ")
return self.client.embeddings.create(**self._params(chunk)).data[0].embedding
def _params(self, chunk: str) -> dict:
return {"input": chunk, "model": self.model}
DEFAULT_MODEL = 'text-embedding-3-small'class-attribute instance-attribute_client = field(default=None, kw_only=True, alias='client', metadata={'serializable': False})class-attribute instance-attributeapi_key = field(default=None, kw_only=True, metadata={'serializable': False})class-attribute instance-attributebase_url = field(default=None, kw_only=True, metadata={'serializable': True})class-attribute instance-attributemodel = field(default=DEFAULT_MODEL, kw_only=True, metadata={'serializable': True})class-attribute instance-attributeorganization = field(default=None, kw_only=True, metadata={'serializable': True})class-attribute instance-attributetokenizer = field(default=Factory(lambda self: OpenAiTokenizer(model=self.model), takes_self=True), kw_only=True)class-attribute instance-attribute
_params(chunk)#
Source Code in griptape/drivers/embedding/openai_embedding_driver.py
def _params(self, chunk: str) -> dict:
return {"input": chunk, "model": self.model}
client()#
Source Code in griptape/drivers/embedding/openai_embedding_driver.py
@lazy_property()
def client(self) -> openai.OpenAI:
return openai.OpenAI(api_key=self.api_key, base_url=self.base_url, organization=self.organization)
try_embed_chunk(chunk, **kwargs)#
Source Code in griptape/drivers/embedding/openai_embedding_driver.py
def try_embed_chunk(self, chunk: str, **kwargs) -> list[float]:
# Address a performance issue in older ada models
# https://github.com/openai/openai-python/issues/418#issuecomment-1525939500
if self.model.endswith("001"):
chunk = chunk.replace("\n", " ")
return self.client.embeddings.create(**self._params(chunk)).data[0].embedding