from typing import Any, List, Mapping, Optional, Sequence
[docs]class AmazonPersonalize:
"""Amazon Personalize Runtime是用于执行实时操作的包装器。
有关更多详细信息,请参阅[此链接](https://docs.aws.amazon.com/personalize/latest/dg/API_Operations_Amazon_Personalize_Runtime.html)。
参数:
campaign_arn: str,可选:用于获取推荐的活动的Amazon资源名称(ARN)。
recommender_arn: str,可选:用于获取推荐的推荐者的Amazon资源名称(ARN)。
client: 可选:boto3客户端。
credentials_profile_name: str,可选:AWS配置文件名称。
region_name: str,可选:AWS区域,例如us-west-2。
示例:
.. code-block:: python
personalize_client = AmazonPersonalize (
campaignArn='<my-campaign-arn>' )"""
[docs] def __init__(
self,
campaign_arn: Optional[str] = None,
recommender_arn: Optional[str] = None,
client: Optional[Any] = None,
credentials_profile_name: Optional[str] = None,
region_name: Optional[str] = None,
):
self.campaign_arn = campaign_arn
self.recommender_arn = recommender_arn
if campaign_arn and recommender_arn:
raise ValueError(
"Cannot initialize AmazonPersonalize with both "
"campaign_arn and recommender_arn."
)
if not campaign_arn and not recommender_arn:
raise ValueError(
"Cannot initialize AmazonPersonalize. Provide one of "
"campaign_arn or recommender_arn"
)
try:
if client is not None:
self.client = client
else:
import boto3
import botocore.config
if credentials_profile_name is not None:
session = boto3.Session(profile_name=credentials_profile_name)
else:
# use default credentials
session = boto3.Session()
client_params = {}
if region_name:
client_params["region_name"] = region_name
service = "personalize-runtime"
session_config = botocore.config.Config(user_agent_extra="langchain")
client_params["config"] = session_config
self.client = session.client(service, **client_params)
except ImportError:
raise ModuleNotFoundError(
"Could not import boto3 python package. "
"Please install it with `pip install boto3`."
)
[docs] def get_recommendations(
self,
user_id: Optional[str] = None,
item_id: Optional[str] = None,
filter_arn: Optional[str] = None,
filter_values: Optional[Mapping[str, str]] = None,
num_results: Optional[int] = 10,
context: Optional[Mapping[str, str]] = None,
promotions: Optional[Sequence[Mapping[str, Any]]] = None,
metadata_columns: Optional[Mapping[str, Sequence[str]]] = None,
**kwargs: Any,
) -> Mapping[str, Any]:
"""从Amazon Personalize服务获取推荐。
在以下链接中查看更多详细信息:
https://docs.aws.amazon.com/personalize/latest/dg/API_RS_GetRecommendations.html
参数:
user_id: str, 可选: 用户标识符,用于检索推荐
item_id: str, 可选: 项目标识符,用于检索推荐
filter_arn: str, 可选: 要应用于返回的推荐的过滤器的ARN
filter_values: Mapping, 可选: 在过滤推荐时使用的值
num_results: int, 可选: 默认=10: 要返回的结果数量
context: Mapping, 可选: 在获取推荐时使用的上下文元数据
promotions: Sequence, 可选: 应用于推荐请求的促销活动
metadata_columns: Mapping, 可选: 作为响应的一部分返回的元数据列
返回:
response: Mapping[str, Any]: 返回一个itemList和recommendationId。
示例:
.. code-block:: python
personalize_client = AmazonPersonalize(campaignArn='<my-campaign-arn>' )
response = personalize_client.get_recommendations(user_id="1")
"""
if not user_id and not item_id:
raise ValueError("One of user_id or item_id is required")
if filter_arn:
kwargs["filterArn"] = filter_arn
if filter_values:
kwargs["filterValues"] = filter_values
if user_id:
kwargs["userId"] = user_id
if num_results:
kwargs["numResults"] = num_results
if context:
kwargs["context"] = context
if promotions:
kwargs["promotions"] = promotions
if item_id:
kwargs["itemId"] = item_id
if metadata_columns:
kwargs["metadataColumns"] = metadata_columns
if self.campaign_arn:
kwargs["campaignArn"] = self.campaign_arn
if self.recommender_arn:
kwargs["recommenderArn"] = self.recommender_arn
return self.client.get_recommendations(**kwargs)
[docs] def get_personalized_ranking(
self,
user_id: str,
input_list: List[str],
filter_arn: Optional[str] = None,
filter_values: Optional[Mapping[str, str]] = None,
context: Optional[Mapping[str, str]] = None,
metadata_columns: Optional[Mapping[str, Sequence[str]]] = None,
**kwargs: Any,
) -> Mapping[str, Any]:
"""重新对给定用户的推荐项目列表进行排名。
https://docs.aws.amazon.com/personalize/latest/dg/API_RS_GetPersonalizedRanking.html
参数:
user_id: str, 必需: 用户标识符,用于检索推荐
input_list: List[str], 必需: 要排名的项目列表(按itemId)
filter_arn: str, 可选: 要应用的过滤器的ARN
filter_values: Mapping, 可选: 过滤推荐时要使用的值
context: Mapping, 可选: 获取推荐时要使用的上下文元数据
metadata_columns: Mapping, 可选: 作为响应的一部分返回的元数据列
返回:
response: Mapping[str, Any]: 返回personalizedRanking和recommendationId。
示例:
.. code-block:: python
personalize_client = AmazonPersonalize(campaignArn='<my-campaign-arn>' )
response = personalize_client.get_personalized_ranking(user_id="1",
input_list=["123,"256"])
"""
if filter_arn:
kwargs["filterArn"] = filter_arn
if filter_values:
kwargs["filterValues"] = filter_values
if user_id:
kwargs["userId"] = user_id
if input_list:
kwargs["inputList"] = input_list
if context:
kwargs["context"] = context
if metadata_columns:
kwargs["metadataColumns"] = metadata_columns
kwargs["campaignArn"] = self.campaign_arn
return self.client.get_personalized_ranking(kwargs)