Source code for langchain_experimental.recommenders.amazon_personalize

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)