これは、Recommendations AI、Retail Search、新しい Retail コンソールに関するドキュメントです。

レコメンデーションを表示する

このページでは、特定のユーザー イベントとユーザー イベントに関するレコメンデーションをリクエストする方法について説明します。

商品をアップロードし、ユーザー イベントを記録すると、記録されたユーザー イベントとそのユーザーの現在のアクティビティに基づいて、特定のユーザーに対する商品のレコメンデーションをリクエストできます。

Retail API は、ランク付けされた商品 ID のリストを返します。画像やテキストを使用して、ウェブサイトに結果をレンダリングするのはお客様の責任です。

パーソナライズされた結果をエンドユーザーからキャッシュに保存したり、パーソナライズされた結果を別のエンドユーザーに戻したりすることはありません。

始める前に

Retail API にアクセスする前に、始める前にの手順に従って Google Cloud プロジェクトを作成し、認証を設定する必要があります。

また、Recommendations AI による予測をリクエストするには、トレーニングおよび調整されたレコメンデーション(モデル)と 1 つ以上のアクティブなサービス提供構成が必要です。

レコメンデーションを評価する

ウェブサイトのコードを更新してレコメンデーションをリクエストする前に、プレビューの予測結果を使用して、モデルとサービス提供構成が期待どおりに機能していることを確認できます。

サービス提供構成の詳細については、サービス提供構成をご覧ください。

サービス提供構成の結果は、評価ページからプレビューするか、コンソール内のサービス提供構成の詳細ページに移動して、その評価タブをクリックしてプレビューできます。次の手順では、[評価] ページからプレビューする方法を説明します。

サービス提供構成で返されるレコメンデーションをプレビューするには:

  1. Google Cloud Console の [Retail Models] ページに移動します。

    [Evaluate] ページに移動

  2. [レコメンデーション] タブをクリックします(まだ選択されていない場合)。

  3. プレビューするサービス提供構成を選択します。

  4. 訪問者 ID を入力して、そのユーザーのレコメンデーションをプレビューします。

  5. [関連付けられたアイテム] セクションが表示されている場合は、[アイテムを追加] をクリックして商品 ID を入力し、そのアイテムに関連するレコメンデーションを取得します。複数の関連アイテムを追加できます。

    アイテムを追加できるのは、選択したサービス提供構成のモデルタイプで、レコメンデーションの入力として商品が必要な場合のみです。「あなたへのおすすめ」モデルの場合、関連するアイテムを入力する必要はありません。

  6. [予測プレビュー] をクリックして、予測結果を表示します。

プレビューしているサービス提供構成の [詳細] ページを表示するには、[サービス提供構成を選択] フィールドで [サービス提供構成を表示] をクリックします。

レコメンデーションを表示する

料金の詳細については、料金をご覧ください。

curl

レコメンデーションを取得するには、予測predict REST メソッドに対して POST リクエストを行い、以下のように、適切なリクエスト本文を指定します。

  • 使用するサービス アカウントには、「Retail 閲覧者」以上のロールが必要です。

  • SERVING_CONFIG_ID を、予測を使用するサービス提供構成に置き換えます。詳細

  • BigQuery を使用して Google アナリティクス 360 のユーザー イベントをインポートした場合は、visitorId を Google アナリティクス クライアント ID に設定します。クライアント ID を取得する方法については、Google アナリティクスのドキュメントをご覧ください。

  • 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"
}

この予測の結果として提供する URL に attribution_token 値を関連付ける必要があります。また、その URL をユーザー イベントとともに返す必要があります。詳細

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 でサービス構成を作成するときに料金の再ランキングの設定を選択すると、その構成によって配信されるすべてのレコメンデーションにその設定が適用されるため、それ以上の操作は必要ありません。

特定のレコメンデーションの価格の再ランキングを管理する必要がある場合は、Retail API の PredictRequest.params フィールドを使用して管理できます。これにより、この推奨事項に適用される構成レベルの再ランキング設定がオーバーライドされます。

レコメンデーションの多様性

多様化は、1 つの予測リクエストで、商品カタログの異なるカテゴリから結果が返されるかどうかに影響します。

多様化は、サービス構成レベルで、または予測リクエストごとに設定できます。

Cloud Console でサービス構成を作成するときに多様化設定を選択すると、その構成によって適用されるすべての推奨にデフォルトでその設定が適用されるため、これ以上のアクションは必要ありません。

特定のレコメンデーションの多様性を管理する必要がある場合は、Retail API の PredictRequest.params フィールドを使用して管理できます。これにより、この推奨事項に適用される構成レベルの多様化設定がすべてオーバーライドされます。使用できる値については、こちらをご覧ください。

レコメンデーション フィルタを使用する

predict メソッドで filter フィールドを使用すると、Recommendations AI が返すレコメンデーションをフィルタリングできます。

filter フィールドには、次の 2 つのフィルタ指定形式を指定できます。

  • Tag 式

    商品をアップロードしたときに tag 値をカタログ アイテムに追加した場合は、フィルタを適用したすべてのタグと一致する商品のみがレコメンデーションとして返されるように指定できます。Product.tags[] フィールドの API リファレンス ドキュメントをご覧ください。

    Tag 式には、ブール演算子 OR または NOT を含めることができます。これらの演算子は、Tag 値から 1 つ以上のスペースで区切られている必要があります。Tag 値の直前にダッシュ(-)を付けることもできます。これは NOT 演算子と同等です。ブール演算子を使用する Tag 式は、かっこで囲む必要があります。

  • filterOutOfStockItems

    filterOutOfStockItems フラグは、stockStateOUT_OF_STOCK の商品をすべて除外します。

これら 2 種類のフィルタを組み合わせることができ、指定したすべてのフィルタ条件を満たすアイテムのみが返されます。

フィルタ文字列の例:

"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"