すべてのプロダクト
Search
ドキュメントセンター

Artificial Intelligence Recommendation:プロジェクトを迅速に作成する

最終更新日:Nov 04, 2025

はじめに

インストールコマンド

`pairecmd` を使用してプロジェクトを迅速に作成できます。バージョン 2 は [PAI-Rec コンソール] をサポートしています。コンソールの使用をお勧めします。

バージョン 2

ダウンロードリンク:

[Linux バージョン]

[Mac バージョン]

Mac arm 版

[Windows バージョン]

ダウンロードが完了したら、次のコマンドを実行して、UNIX 系システムで実行可能ファイルの権限を設定します。chmod +x pairecmd

プロジェクトの作成

`pairec-demo` という名前のプロジェクトを作成するには、次のコマンドを実行します。このコマンドは、現在のディレクトリにプロジェクトコードを含む `pairec-demo` フォルダを生成します。

./pairecmdmac project --name pairec-demo

生成されたフォルダは、次の構造になっています。

pairec-demo
├── Makefile
├── conf
│   └── config.json.production
├── docker
│   └── Dockerfile
├── go.mod
└── src
    ├── controller
    │   └── feed.go
    └── main.go

`pairec-demo` フォルダに移動し、次のコマンドを実行します。

go mod tidy

プロジェクトのコンパイルとパッケージ化

プロジェクトには Makefile が用意されています。プロジェクトをコンパイルするには、次のコマンドを実行します。

make && make build

エラーが発生した場合は、最初に次のコマンドを実行します。

go mod tidy

プロジェクトをイメージにパッケージ化するには、次のコマンドを実行します。

make release

必要に応じて Makefile を変更できます。

image-20240715174501233.png

注: [Alibaba Cloud Container Registry] を使用して個人用イメージをアクティブ化し、 `BIN_NAME` で指定された [イメージリポジトリ] を作成できます。

プロジェクトの実行

`pairec-demo` フォルダに移動し、次のコマンドを実行してサービスを開始します。ログは端末に出力されます。

`config` パラメータを使用して、構成ファイルのパスを指定します。

go run src/main.go --config=conf/config.json.production --alsologtostderr

API をテストするには、別の端末を開き、次のコマンドを実行します。

curl -v http://localhost:8000/api/rec/feed -d '{"uid":"76295990", "size":10, "scene_id":"home_feed"}'

`config` パラメータの詳細については、「エンジン構成」をご参照ください。

API テスト

生成されたプロジェクトには、組み込みのレコメンデーション API が含まれています。実装の詳細については、 `controller/feed.go` ファイルを参照してください。API は次のように定義されています。

API 名

/api/rec/feed

リクエストパラメーター

パラメーター

説明

タイプ

必須

uid

ユーザー ID。

string

はい

"1000079"

size

取得するアイテムの数。

integer

はい

10

scene_id

シナリオ ID。

String

はい

home_feed

features

コンテキストフィーチャ。

json map

いいえ

{"age":20, "sex":"male"}

complex_type_features

複雑なタイプのコンテキストフィーチャ。モデルサービスに送信されるリクエストに型情報を含めるには、このパラメータを設定します。

json array

いいえ

[{"name":"age", "type":"int", "values":20}, {"name":"sex", "values":"male", "type":"string"}]

item_id

類似性レコメンデーションのアイテム ID。

string

いいえ

248791390

item_list

リコール用のカスタムリスト。

json array

いいえ

[{"item_id":"1111", "score":1},{"item_id":"222", "score":0.95}]

debug

デバッグモードを有効にして、より多くのログを出力するかどうかを指定します。

bool

いいえ

true

request_id

リクエストの一意の ID。このパラメータを指定しない場合、PAI-Rec エンジンによって自動的に生成されます。このパラメータを指定した場合、その値がリクエスト ID として使用されます。

string

いいえ

"c46c3f5e-6b32-4b5c-8aac-59a319941248"

API を介して渡す [バッチ] リコールデータがある場合は、 `item_list` パラメータに割り当てます。 `item_list` パラメータは、各アイテムがマップオブジェクトである配列です。各アイテムには、アイテム ID を指定する `item_id` フィールドが含まれている必要があります。他のすべてのフィールドはオプションです。アイテムに `score` フィールドが含まれている場合、その値はリコールスコアとして使用されます。他のすべてのフィールドは、アイテム [プロパティ] として処理されます。

complex_type_features

複雑なタイプのコンテキスト [フィーチャ] は、配列として渡す必要があります。各 [要素] には、次の情報が含まれています。

名前

説明

name

コンテキスト [フィーチャ] の名前。

age

type

コンテキスト [フィーチャ] のタイプ。

int

values

コンテキスト [フィーチャ] の値。特定の値、配列、マップなど、さまざまなタイプを設定できます。

20

例:

  1. 単一の値を渡す: [{"name":"age", "type":"int", "values":20}, {"name":"sex", "values":"male", "type":"string"}]

  2. 配列を渡す: [{"name":"list_features", "type":"list<int>", "values":[1,2,3]}]

  3. マップを渡す: [{"name":"map_features", "type":"map<int,int>", "values":{"1":10,"2":20,"3":30}}]、または [{"name":"map_features", "type":"map<int,int>", "values":{"1":"10","2":"20","3":"30"}}],

`type` パラメータは、次のタイプをサポートしています: int int64floatdoublestringlist<int>list<int64>list<float>list<double>list<string>map<int,int>map<int,int64>map<int,float>map<int,double>map<int,string>map<string,int>map<string,int64>map<string,float>map<string,double>map<string,string>map<int64,int>map<int64,int64>map<int64,float>map<int64,double>map<int64,string>

`complex_type_features` パラメータと `features` パラメータは同時に使用できます。

API レスポンス

名前

説明

タイプ

code

[API 呼び出し] で返されるビジネスコード。

int

200

msg

ビジネス情報。

string

success

request_id

[リクエスト] の一意の ID。

string

e332fe9c-7d99-45a8-a047-bc7ec33d07f6

size

返される推奨アイテムの数。

int

10

experiment_id

実験 ID。A/B テストが実行されていない場合は、空の文字列が返されます。

string

ER2_L1#EG1#E2

items

推奨アイテムのリスト。

json array

[{"item_id":"248791390","score":0.9991594902203332,"retrieve_id":"mock_recall"}]

次の表は、アイテムのパラメータについて説明しています。

名前

説明

タイプ

item_id

推奨アイテムの ID。

string

3v5RE7417j7R

retrieve_id

リコール [ソース] の ID。

string

u2i_recall

score

推奨スコア。

float

0.45

extra

カスタム出力フィールド。指定されていない場合は返されません。

json map

詳細については、カスタム出力フィールドの説明を参照してください。

エラーコード

エラーコード

説明

msg

200

[API 呼び出し] は成功しました。

success

299

返されたアイテムの数が不十分です。

items size not enough

400

パラメータエラーが発生しました。 `msg` フィールドの説明は、エラの種類によって異なります。

uid not empty or unexpected end of JSON input

500

[サーバーエラー] が発生しました。[HTTP ステータスコード] が返されます。

リクエストサンプル

curl -v http://host/api/rec/feed -d '{"uid":"76295990", "size":10, "scene_id":"home_feed"}'

レスポンスデータ

{
    "code":200,
    "msg":"success",
    "request_id":"e332fe9c-7d99-45a8-a047-bc7ec33d07f6",
    "size":10,
    "experiment_id":"",
    "items":[
          {
            "item_id":"248791390",
            "score":0.9991594902203332,
            "retrieve_id":"mock_recall"
          },
                ...
    ]
}

カスタムフィールドを出力する

[デフォルト] では、各アイテムに対して `item_id`、 `retrieve_id`、および `score` フィールドが返されます。アイテム [プロパティ] やモデルスコアなどの追加のカスタムフィールドを出力するには、 `SceneConfs` で特定のシナリオの出力フィールドをカスタマイズします。これを行うには、 `OutputFields` に [構成] を定義します。API は、カスタムフィールドを `extra` フィールドに返します。

次の [コード] は、[構成] の例を示しています。

"SceneConfs": {
  "${scene_name}": {
    "default": {
      "RecallNames": [
        "collaborative_filter"
      ],
      "OutputFields": [
           "item:type",
           "item:age",
           "score:*",
           "score:model_v1_ctr"
      ]
    }
  }
}
  • `item:` で始まるフィールドは、対応するアイテム [プロパティ] を出力します。 [プロパティ] が存在しない場合は、 `null` が返されます。

  • `score:` で始まるフィールドは、モデルによって返されたスコアを出力します。

  • `score:*` はすべてのモデルスコアを出力します。スコアは `algo_scores` に配置されます。

よくある質問

Q: レコメンデーション API を介してアイテムリストを渡して再ソートするにはどうすればよいですか?

回答: `item_list` API パラメーターを使用してアイテムリストを渡すことができます。次に、エンジン構成で コンテキストアイテムリコール (ContextItemRecall) を設定します。この構成により、PAI-Rec エンジンは `item_list` パラメーターからアイテムリストを読み取ることができます。

Q: PAI-Rec データを記録し、実験レポートを使用するためにクライアントをインストルメントするにはどうすればよいですか?

回答: レコメンデーション API は `request_id` と `experiment_id` の 2 つのフィールドを返します。これらのフィールドを記録するためにクライアントをインストルメントする必要があります。最低でも、インプレッションとクリックの動作ログにこれらのフィールドを含める必要があります。また、再生時間、カートへの追加操作、購入などの他の動作ログに含めることも推奨します。これらの他の動作がインストルメントされていない場合、パフォーマンス統計に影響が及ぶ可能性があります。詳細については、「データ登録とフィールド構成」の SQL ユースケースをご参照ください。オフラインの「実験レポートソーステーブル」を生成し、AB テストプラットフォームに登録して、カスタムメトリック を構成できます。レポートデータが計算された後、「実験メトリクスレポート」で実験レポートを表示できます。