Skip to content

Commit

Permalink
add back deprecated api [v0.9.48] (#10581)
Browse files Browse the repository at this point in the history
  • Loading branch information
logan-markewich authored Feb 12, 2024
1 parent 9793117 commit 4187950
Show file tree
Hide file tree
Showing 4 changed files with 160 additions and 2 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# ChangeLog

## [0.9.48] - 2024-02-12

### Bug Fixes / Nits

- Add back deprecated API for BedrockEmbdding (#10581)

## [0.9.47] - 2024-02-11

Last patch before v0.10!
Expand Down
2 changes: 1 addition & 1 deletion llama_index/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.9.47
0.9.48
152 changes: 152 additions & 0 deletions llama_index/embeddings/bedrock.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
import json
import os
import warnings
from enum import Enum
from typing import Any, Callable, Dict, List, Literal, Optional, Sequence

from deprecated import deprecated

from llama_index.bridge.pydantic import Field, PrivateAttr
from llama_index.callbacks.base import CallbackManager
from llama_index.constants import DEFAULT_EMBED_BATCH_SIZE
from llama_index.core.embeddings.base import BaseEmbedding, Embedding
from llama_index.core.llms.types import ChatMessage
from llama_index.types import BaseOutputParser, PydanticProgramMode
Expand Down Expand Up @@ -166,6 +171,153 @@ def list_supported_models() -> Dict[str, List[str]]:
def class_name(self) -> str:
return "BedrockEmbedding"

@deprecated(
version="0.9.48",
reason=(
"Use the provided kwargs in the constructor, "
"set_credentials will be removed in future releases."
),
action="once",
)
def set_credentials(
self,
aws_region: Optional[str] = None,
aws_access_key_id: Optional[str] = None,
aws_secret_access_key: Optional[str] = None,
aws_session_token: Optional[str] = None,
aws_profile: Optional[str] = None,
) -> None:
aws_region = aws_region or os.getenv("AWS_REGION")
aws_access_key_id = aws_access_key_id or os.getenv("AWS_ACCESS_KEY_ID")
aws_secret_access_key = aws_secret_access_key or os.getenv(
"AWS_SECRET_ACCESS_KEY"
)
aws_session_token = aws_session_token or os.getenv("AWS_SESSION_TOKEN")

if aws_region is None:
warnings.warn(
"AWS_REGION not found. Set environment variable AWS_REGION or set aws_region"
)

if aws_access_key_id is None:
warnings.warn(
"AWS_ACCESS_KEY_ID not found. Set environment variable AWS_ACCESS_KEY_ID or set aws_access_key_id"
)
assert aws_access_key_id is not None

if aws_secret_access_key is None:
warnings.warn(
"AWS_SECRET_ACCESS_KEY not found. Set environment variable AWS_SECRET_ACCESS_KEY or set aws_secret_access_key"
)
assert aws_secret_access_key is not None

if aws_session_token is None:
warnings.warn(
"AWS_SESSION_TOKEN not found. Set environment variable AWS_SESSION_TOKEN or set aws_session_token"
)
assert aws_session_token is not None

session_kwargs = {
"profile_name": aws_profile,
"region_name": aws_region,
"aws_access_key_id": aws_access_key_id,
"aws_secret_access_key": aws_secret_access_key,
"aws_session_token": aws_session_token,
}

try:
import boto3

session = boto3.Session(**session_kwargs)
except ImportError:
raise ImportError(
"boto3 package not found, install with" "'pip install boto3'"
)

if "bedrock-runtime" in session.get_available_services():
self._client = session.client("bedrock-runtime")
else:
self._client = session.client("bedrock")

@classmethod
@deprecated(
version="0.9.48",
reason=(
"Use the provided kwargs in the constructor, "
"set_credentials will be removed in future releases."
),
action="once",
)
def from_credentials(
cls,
model_name: str = Models.TITAN_EMBEDDING,
aws_region: Optional[str] = None,
aws_access_key_id: Optional[str] = None,
aws_secret_access_key: Optional[str] = None,
aws_session_token: Optional[str] = None,
aws_profile: Optional[str] = None,
embed_batch_size: int = DEFAULT_EMBED_BATCH_SIZE,
callback_manager: Optional[CallbackManager] = None,
verbose: bool = False,
) -> "BedrockEmbedding":
"""
Instantiate using AWS credentials.
Args:
model_name (str) : Name of the model
aws_access_key_id (str): AWS access key ID
aws_secret_access_key (str): AWS secret access key
aws_session_token (str): AWS session token
aws_region (str): AWS region where the service is located
aws_profile (str): AWS profile, when None, default profile is chosen automatically
Example:
.. code-block:: python
from llama_index.embeddings import BedrockEmbedding
# Define the model name
model_name = "your_model_name"
embeddings = BedrockEmbedding.from_credentials(
model_name,
aws_access_key_id,
aws_secret_access_key,
aws_session_token,
aws_region,
aws_profile,
)
"""
session_kwargs = {
"profile_name": aws_profile,
"region_name": aws_region,
"aws_access_key_id": aws_access_key_id,
"aws_secret_access_key": aws_secret_access_key,
"aws_session_token": aws_session_token,
}

try:
import boto3

session = boto3.Session(**session_kwargs)
except ImportError:
raise ImportError(
"boto3 package not found, install with" "'pip install boto3'"
)

if "bedrock-runtime" in session.get_available_services():
client = session.client("bedrock-runtime")
else:
client = session.client("bedrock")
return cls(
client=client,
model_name=model_name,
embed_batch_size=embed_batch_size,
callback_manager=callback_manager,
verbose=verbose,
)

def _get_embedding(self, payload: str, type: Literal["text", "query"]) -> Embedding:
if self._client is None:
self.set_credentials()
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ name = "llama-index"
packages = [{include = "llama_index"}]
readme = "README.md"
repository = "https://github.com/run-llama/llama_index"
version = "0.9.47"
version = "0.9.48"

[tool.poetry.dependencies]
SQLAlchemy = {extras = ["asyncio"], version = ">=1.4.49"}
Expand Down

0 comments on commit 4187950

Please sign in to comment.