|
|
@ -63,9 +63,7 @@ def _create_retry_decorator(
|
|
|
|
| retry_if_exception_type(llm.error.APIError)
|
|
|
|
| retry_if_exception_type(llm.error.APIError)
|
|
|
|
| retry_if_exception_type(llm.error.APIConnectionError)
|
|
|
|
| retry_if_exception_type(llm.error.APIConnectionError)
|
|
|
|
| retry_if_exception_type(llm.error.RateLimitError)
|
|
|
|
| retry_if_exception_type(llm.error.RateLimitError)
|
|
|
|
| retry_if_exception_type(
|
|
|
|
| retry_if_exception_type(llm.error.ServiceUnavailableError)
|
|
|
|
llm.error.ServiceUnavailableError
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
),
|
|
|
|
),
|
|
|
|
before_sleep=before_sleep_log(logger, logging.WARNING),
|
|
|
|
before_sleep=before_sleep_log(logger, logging.WARNING),
|
|
|
|
)
|
|
|
|
)
|
|
|
@ -171,6 +169,7 @@ class OpenAIEmbeddings(BaseModel, Embeddings):
|
|
|
|
os.environ["OPENAI_API_TYPE"] = "azure"
|
|
|
|
os.environ["OPENAI_API_TYPE"] = "azure"
|
|
|
|
os.environ["OPENAI_API_BASE"] = "https://<your-endpoint.openai.azure.com/"
|
|
|
|
os.environ["OPENAI_API_BASE"] = "https://<your-endpoint.openai.azure.com/"
|
|
|
|
os.environ["OPENAI_API_KEY"] = "your AzureOpenAI key"
|
|
|
|
os.environ["OPENAI_API_KEY"] = "your AzureOpenAI key"
|
|
|
|
|
|
|
|
os.environ["OPENAI_ORG_ID"] = "your AzureOpenAI organization id"
|
|
|
|
os.environ["OPENAI_API_VERSION"] = "2023-05-15"
|
|
|
|
os.environ["OPENAI_API_VERSION"] = "2023-05-15"
|
|
|
|
os.environ["OPENAI_PROXY"] = "http://your-corporate-proxy:8080"
|
|
|
|
os.environ["OPENAI_PROXY"] = "http://your-corporate-proxy:8080"
|
|
|
|
|
|
|
|
|
|
|
@ -199,6 +198,7 @@ class OpenAIEmbeddings(BaseModel, Embeddings):
|
|
|
|
embedding_ctx_length: int = 8191
|
|
|
|
embedding_ctx_length: int = 8191
|
|
|
|
"""The maximum number of tokens to embed at once."""
|
|
|
|
"""The maximum number of tokens to embed at once."""
|
|
|
|
openai_api_key: Optional[str] = None
|
|
|
|
openai_api_key: Optional[str] = None
|
|
|
|
|
|
|
|
openai_org_id: Optional[str] = None
|
|
|
|
openai_organization: Optional[str] = None
|
|
|
|
openai_organization: Optional[str] = None
|
|
|
|
allowed_special: Union[Literal["all"], Set[str]] = set()
|
|
|
|
allowed_special: Union[Literal["all"], Set[str]] = set()
|
|
|
|
disallowed_special: Union[
|
|
|
|
disallowed_special: Union[
|
|
|
@ -270,6 +270,9 @@ class OpenAIEmbeddings(BaseModel, Embeddings):
|
|
|
|
values["openai_api_key"] = get_from_dict_or_env(
|
|
|
|
values["openai_api_key"] = get_from_dict_or_env(
|
|
|
|
values, "openai_api_key", "OPENAI_API_KEY"
|
|
|
|
values, "openai_api_key", "OPENAI_API_KEY"
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
values["openai_org_id"] = get_from_dict_or_env(
|
|
|
|
|
|
|
|
values, "openai_org_id", "OPENAI_ORG_ID", default=""
|
|
|
|
|
|
|
|
)
|
|
|
|
values["openai_api_base"] = get_from_dict_or_env(
|
|
|
|
values["openai_api_base"] = get_from_dict_or_env(
|
|
|
|
values,
|
|
|
|
values,
|
|
|
|
"openai_api_base",
|
|
|
|
"openai_api_base",
|
|
|
@ -326,6 +329,7 @@ class OpenAIEmbeddings(BaseModel, Embeddings):
|
|
|
|
"request_timeout": self.request_timeout,
|
|
|
|
"request_timeout": self.request_timeout,
|
|
|
|
"headers": self.headers,
|
|
|
|
"headers": self.headers,
|
|
|
|
"api_key": self.openai_api_key,
|
|
|
|
"api_key": self.openai_api_key,
|
|
|
|
|
|
|
|
"org_id" : self.openai_org_id,
|
|
|
|
"organization": self.openai_organization,
|
|
|
|
"organization": self.openai_organization,
|
|
|
|
"api_base": self.openai_api_base,
|
|
|
|
"api_base": self.openai_api_base,
|
|
|
|
"api_type": self.openai_api_type,
|
|
|
|
"api_type": self.openai_api_type,
|
|
|
@ -386,7 +390,7 @@ class OpenAIEmbeddings(BaseModel, Embeddings):
|
|
|
|
)
|
|
|
|
)
|
|
|
|
for j in range(0, len(token), self.embedding_ctx_length):
|
|
|
|
for j in range(0, len(token), self.embedding_ctx_length):
|
|
|
|
tokens.append(
|
|
|
|
tokens.append(
|
|
|
|
token[j : j + self.embedding_ctx_length]
|
|
|
|
token[j: j + self.embedding_ctx_length]
|
|
|
|
)
|
|
|
|
)
|
|
|
|
indices.append(i)
|
|
|
|
indices.append(i)
|
|
|
|
|
|
|
|
|
|
|
@ -406,7 +410,7 @@ class OpenAIEmbeddings(BaseModel, Embeddings):
|
|
|
|
for i in _iter:
|
|
|
|
for i in _iter:
|
|
|
|
response = embed_with_retry(
|
|
|
|
response = embed_with_retry(
|
|
|
|
self,
|
|
|
|
self,
|
|
|
|
input=tokens[i : i + _chunk_size],
|
|
|
|
input=tokens[i: i + _chunk_size],
|
|
|
|
**self._invocation_params,
|
|
|
|
**self._invocation_params,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
batched_embeddings.extend(
|
|
|
|
batched_embeddings.extend(
|
|
|
@ -486,7 +490,7 @@ class OpenAIEmbeddings(BaseModel, Embeddings):
|
|
|
|
)
|
|
|
|
)
|
|
|
|
for j in range(0, len(token), self.embedding_ctx_length):
|
|
|
|
for j in range(0, len(token), self.embedding_ctx_length):
|
|
|
|
tokens.append(
|
|
|
|
tokens.append(
|
|
|
|
token[j : j + self.embedding_ctx_length]
|
|
|
|
token[j: j + self.embedding_ctx_length]
|
|
|
|
)
|
|
|
|
)
|
|
|
|
indices.append(i)
|
|
|
|
indices.append(i)
|
|
|
|
|
|
|
|
|
|
|
@ -495,7 +499,7 @@ class OpenAIEmbeddings(BaseModel, Embeddings):
|
|
|
|
for i in range(0, len(tokens), _chunk_size):
|
|
|
|
for i in range(0, len(tokens), _chunk_size):
|
|
|
|
response = await async_embed_with_retry(
|
|
|
|
response = await async_embed_with_retry(
|
|
|
|
self,
|
|
|
|
self,
|
|
|
|
input=tokens[i : i + _chunk_size],
|
|
|
|
input=tokens[i: i + _chunk_size],
|
|
|
|
**self._invocation_params,
|
|
|
|
**self._invocation_params,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
batched_embeddings.extend(
|
|
|
|
batched_embeddings.extend(
|
|
|
|