

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 获取实时物品推荐
<a name="getting-real-time-item-recommendations"></a>

 您可以通过 Amazon Personalize 控制台、Amazon Command Line Interface (Amazon CLI) 或 Amazon SDK 从 Amazon Personalize 推荐器或自定义市场活动中获取实时物品推荐。

**Topics**
+ [获取物品建议（控制台）](#get-real-time-recommendations-console)
+ [获取物品建议 (Amazon CLI)](#get-item-rec-cli)
+ [获取物品建议 (Amazon SDK)](#get-item-rec-sdk)

## 获取物品建议（控制台）
<a name="get-real-time-recommendations-console"></a>

 要通过 Amazon Personalize 控制台获取建议，您需要在推荐器（域数据集组）或自定义市场活动的详情页面上提供请求信息。

**获得建议**

1. 打开 Amazon Personalize 控制台（网址为 [https://console.aws.amazon.com/personalize/home](https://console.amazonaws.cn/personalize/home)），并登录您的账户。

1. 选择包含您要使用的市场活动或推荐器的数据集组。

1. 在导航窗格中，选择**市场活动** 或**推荐器**。

1. 选择目标市场活动或推荐器。

1.  对于活动，在**测试市场活动结果**下，根据您使用的食谱输入建议请求详细信息。对于推荐器，选择**测试推荐器**，然后根据使用案例输入建议请求详细信息。

    如果您在用户登录（匿名用户）之前为其记录了事件，则可以通过提供来自这些事件的 `sessionId`（就像是其 `userId`），获取针对此用户的建议。有关为匿名用户记录事件的更多信息，请参阅[为匿名用户记录事件](recording-events.md#recording-anonymous-user-events)。

1. （可选）选择筛选器。有关更多信息，请参阅 [筛选建议和用户细分](filter.md)。

1. 如果您使用上下文元数据，请为每个上下文提供数据。对于每个上下文，为**键** 输入元数据字段。对于**值**，输入上下文数据。有关更多信息，请参阅 [利用上下文元数据提高建议的相关性](contextual-metadata.md)。

1. 如果您在市场活动或推荐器的建议中启用了元数据，请为**物品数据集列**选择要包含在建议结果中的元数据列。有关为市场活动启用元数据的信息，请参阅[推荐中的物品元数据](campaigns.md#create-campaign-return-metadata)。有关为推荐器启用元数据的信息，请参阅[在推荐中为 Amazon Personalize 中的域推荐器启用元数据](create-recommender-return-metadata.md)。

1.  如果您想推广一部分物品，可以选择填写**推广**字段。有关更多信息，请参阅 [通过实时推荐推广物品](promoting-items.md)。

1. 选择**获得建议**。此时，将显示一个包含针对用户推荐的前 25 个物品的表格。如果您使用 User-Personalization-v2，则每个推荐物品都会包含一份理由清单，说明为什么在推荐中包括该物品。有关更多信息，请参阅 [User-Personalization-v2 的推荐理由](recommendations.md#recommendation-reasons)。

## 获取物品建议 (Amazon CLI)
<a name="get-item-rec-cli"></a>

使用以下代码从市场活动中获得建议。要从推荐器中获得建议，请将 `campaign-arn` 参数替换为 `recommender-arn`。

 指定要获取建议的用户的 ID 及市场活动或推荐器的 Amazon 资源名称 (ARN)。这时，将显示为用户推荐的前 10 个物品的列表。如果您使用 User-Personalization-v2，则每个推荐物品都会包含一份理由清单，说明为什么在推荐中包括该物品。有关更多信息，请参阅 [User-Personalization-v2 的推荐理由](recommendations.md#recommendation-reasons)。

要更改推荐物品的数量，请更改 `numResults` 的值。默认值为 25 个物品。最大值为 500 个物品。如果您使用 RELATED\_ITEMS 食谱来训练支持市场活动的解决方案版本，请将 `user-id` 参数替换为 `item-id` 并指定物品 ID。

 如果您在用户登录（匿名用户）之前为其记录了事件，则可以通过提供来自这些事件的 `sessionId`（就像是其 `userId`），获取针对此用户的建议。有关为匿名用户记录事件的更多信息，请参阅[为匿名用户记录事件](recording-events.md#recording-anonymous-user-events)。

```
aws personalize-runtime get-recommendations \
--campaign-arn {{campaign arn}} \
--user-id {{User ID}} \
--num-results 10
```

## 获取物品建议 (Amazon SDK)
<a name="get-item-rec-sdk"></a>

以下代码展示了如何使用 Amazon SDK 从市场活动中为用户获取 Amazon Personalize 推荐。要从推荐器中获得建议，请将 `campaignArn` 参数替换为 `recommenderArn`。

指定要获取建议的用户的 ID 及市场活动或推荐器的 Amazon 资源名称 (ARN)。这时，将显示为用户推荐的前 10 个物品的列表。如果您使用 User-Personalization-v2，则每个推荐物品都会包含一份理由清单，说明为什么在推荐中包括该物品。有关更多信息，请参阅 [User-Personalization-v2 的推荐理由](recommendations.md#recommendation-reasons)。

要更改推荐物品的数量，请更改 `numResults` 的值。默认值为 25 个物品。最大值为 500 个物品。如果您使用 RELATED\_ITEMS 食谱来训练支持市场活动的解决方案版本，请将 `userId` 参数替换为 `itemId` 并指定物品 ID。

如果您在市场活动或推荐器的建议中启用了元数据，则可以指定要包含在响应中的物品数据集元数据列。有关代码示例，请参阅[在推荐中包括物品元数据（Amazon SDK）](getting-recommendations-with-metadata.md#getting-recommendations-with-metadata-sdk)。有关启用元数据的信息，请参阅[推荐中的物品元数据](campaigns.md#create-campaign-return-metadata)。

 如果您在用户登录（匿名用户）之前为其记录了事件，则可以通过提供来自这些事件的 `sessionId`（就像是其 `userId`），获取针对此用户的建议。有关为匿名用户记录事件的更多信息，请参阅[为匿名用户记录事件](recording-events.md#recording-anonymous-user-events)。

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalizeRt = boto3.client('personalize-runtime')

response = personalizeRt.get_recommendations(
    campaignArn = '{{Campaign ARN}}',
    userId = '{{User ID}}',
    numResults = 10
)

print("Recommended items")
for item in response['itemList']:
    print (item['itemId'])
```

------
#### [ SDK for Java 2.x ]

```
    public static void getRecs(PersonalizeRuntimeClient personalizeRuntimeClient, String campaignArn, String userId) {

        try {
            GetRecommendationsRequest recommendationsRequest = GetRecommendationsRequest.builder()
                    .campaignArn(campaignArn)
                    .numResults(20)
                    .userId(userId)
                    .build();

            GetRecommendationsResponse recommendationsResponse = personalizeRuntimeClient
                    .getRecommendations(recommendationsRequest);
            List<PredictedItem> items = recommendationsResponse.itemList();
            for (PredictedItem item : items) {
                System.out.println("Item Id is : " + item.itemId());
                System.out.println("Item score is : " + item.score());
            }

        } catch (AwsServiceException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

------
#### [ SDK for JavaScript v3 ]

```
// Get service clients module and commands using ES6 syntax.
import { GetRecommendationsCommand } from "@aws-sdk/client-personalize-runtime";

import { personalizeRuntimeClient } from "./libs/personalizeClients.js";
// Or, create the client here.
// const personalizeRuntimeClient = new PersonalizeRuntimeClient({ region: "REGION"});

// Set the recommendation request parameters.
export const getRecommendationsParam = {
  campaignArn: "CAMPAIGN_ARN" /* required */,
  userId: "USER_ID" /* required */,
  numResults: 15 /* optional */,
};

export const run = async () => {
  try {
    const response = await personalizeRuntimeClient.send(
      new GetRecommendationsCommand(getRecommendationsParam),
    );
    console.log("Success!", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------