这是与 Recommendations AI、Retail Search 和新的 Retail 控制台相关的文档。如需在受限 GA 阶段使用 Retail Search,请与 Cloud 销售人员联系

如果您仅使用 Recommendations AI,请保留在 Recommendations 控制台上并参阅 Recommendations AI 文档

获取推荐信息

本页面介绍如何为特定用户和用户事件请求推荐。

上传商品并记录用户事件后,您可以根据特定用户的已记录用户事件及其当前活动,为该用户请求商品推荐。

准备工作

您必须先按照准备工作中的步骤创建 Google Cloud 项目并设置身份验证,然后才能访问 Retail API。

此外,您需要具备经过训练和调节的推荐(模型)以及一个或多个有效的投放配置,才能通过 Recommendations AI 请求预测。

推荐预览

在更新网站代码以请求推荐之前,您可以使用预测预览来确认您的配置是否按预期工作。

请确保您已先为 Recommendations AI 创建了投放配置

如需预览投放配置返回的建议,请执行以下操作:

  1. 转到 Google Cloud Console 中的“Retail 评估”页面。

    转到“评估”页面

  2. 选择要预览的投放配置。

  3. 输入访问者 ID 以预览针对该用户的建议。

  4. 点击预测预览查看预测结果。

获取推荐

如需了解预测费用详情,请参阅价格

curl

如需获取推荐,请向 predict REST 方法发出 POST 请求,并提供相应的请求正文:

  • 您使用的服务帐号需要具有“Retail Viewer”角色或更高权限的角色。

  • SERVING_CONFIG_ID 替换为要在其中使用预测的投放配置。了解详情

  • 如果您使用 BigQuery 导入 Google Analytics 360 用户事件,请将 visitorId 设置为 Google Analytics(分析)客户端 ID。请参阅 Google Analytics(分析)文档,了解如何获取客户端 ID。

  • 如果您要运行 A/B 实验,请将 experimentIds 设置为此实验组的 ID。了解详情

  • 为发起推荐请求的用户操作提供用户事件对象。

    请注意,系统不会记录此用户事件;它仅用于为相关推荐请求提供背景信息。而您应该像在 Retail API 中记录其他用户事件一样来记录此用户事件。

  • (可选)提供过滤条件来缩小可能返回的商品范围。了解详情

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data  '{
          "filter": "FILTER_STRING",
          "validateOnly": false,
          "userEvent": {
              "eventType": "detail-page-view",
              "visitorId": "VISITOR_ID",
              "userInfo": {
                  "userId": "USER_ID",
                  "ipAddress": "IP_ADDRESS",
                  "userAgent": "USER_AGENT"
              },
              "experimentIds": "EXPERIMENT_GROUP",
              "productDetails": [{
                  "product": {
                    "id": "PRODUCT_ID"
                 }
              }]
          }
        }' \
https://retail.googleapis.com/v2/projects/[PROJECT_ID]/locations/global/catalogs/default_catalog/placements/SERVING_CONFIG_ID:predict

您应该会看到如下所示的结果:

{
  "results": [{"id": "sample-id-1"}, {"id": "sample-id-2"}],
  "attribution_token": "sample-atr-token"
}

您必须将 attribution_token 值与您提供作为此预测结果的任何网址相关联,然后为这些网址返回该值和用户事件。了解详情

Java

public static PredictResponse predictWithNextPageToken(UserEvent userEvent, int pageSize,
    String nextPageToken)
    throws IOException, InterruptedException {
  PredictionServiceClient predictionClient = getPredictionServiceClient();

  PredictRequest request = PredictRequest.newBuilder()
      .setPlacement(HOME_PAGE_PLACEMENT_NAME)
      .setUserEvent(userEvent)
      .setPageSize(pageSize)
      .setPageToken(nextPageToken)
      .setValidateOnly(true)
      .build();

  PredictResponse response = predictionClient.predict(request);

  predictionClient.shutdownNow();
  predictionClient.awaitTermination(2, TimeUnit.SECONDS);

  return response;
}

价格重排序

启用这项功能后,推荐概率相近的推荐产品会按价格进行排序,价格最高的商品列在第一位。相关性仍会用于订购商品,因此启用价格重排序与按价格排序不同。

可以在服务配置级层或根据预测请求设置价格重排序。

如果您在 Cloud Console 中创建服务配置时选择价格重排序设置,则该设置将应用于该配置提供的所有建议,您无需执行进一步操作。

如果您需要控制特定建议的价格重排序,可以使用 PredictRequest.params 字段通过 Retail API 进行控制。这将替换或会以其他方式应用于此建议的任何配置级层重排序设置。

建议多样性

多样性会影响单个预测请求返回的结果是否来自产品目录的不同类别。

可以在服务配置级层或根据预测请求设置多样性。

如果您在 Cloud Console 中创建服务配置时选择多样化设置,则该设置将应用于该配置提供的所有建议,您无需执行进一步操作。

如果您需要控制特定建议的多样性,可以使用 PredictRequest.params 字段通过 Retail API 进行控制。这将替换或会以其他方式应用于此建议的任何配置级层多样化设置。查看可接受的值。

使用建议过滤条件

您可以使用 predict 方法中的 filter 字段过滤 Recommendations AI 返回的推荐。

filter 字段接受两种过滤规范:

  • 标记表达式

    如果您在上传商品时添加了 tag 值,则可以指定仅匹配过滤所用的所有标记的商品返回为推荐。了解详情

    标记表达式可以包含布尔运算符 ORNOT,并且必须用一个或多个空格将其与标记值分隔开来。标记值也可以在前面加上短划线 (-),它相当于 NOT 运算符。使用布尔运算符的标记表达式必须用英文括号括起来。

  • filterOutOfStockItems

    filterOutOfStockItems 标志可滤除 stockStateOUT_OF_STOCK 的所有产品。

您可以结合使用这两种类型的过滤条件;系统仅返回满足所有指定过滤条件表达式的项。

以下是一些示例过滤字符串:

"filter": "tag=\"spring-sale\""
"filter": "filterOutOfStockItems"
"filter": "tag=\"spring-sale\" tag=\"exclusive\" filterOutOfStockItems"

以下示例仅返回具有“spring-sale”和/或“exclusive”标记并且不具有“items-to-exclude”标记的有货商品。

"filter": "tag=(\"spring-sale" OR \"exclusive\") tag=(-\"items-to-exclude\") filterOutOfStockItems"