Callback API
PAI-Rec mencakup API callback bawaan yang mencatat fitur real-time seperti parameter permintaan dan fitur pengguna serta item real-time pada saat permintaan rekomendasi. Log ini dapat digunakan untuk analitik data, pelatihan model offline, atau pembelajaran online.
Latar Belakang
Fitur real-time merupakan elemen penting dalam sistem rekomendasi, meliputi statistik real-time dan fitur urutan real-time, terutama fitur urutan pengguna. Penambahan fitur real-time sering kali meningkatkan performa sistem rekomendasi. Namun, fitur real-time memerlukan akurasi tinggi. Menggunakan metode offline untuk inferensi fitur real-time, seperti mengasosiasikan data berdasarkan jendela waktu, dapat menyebabkan masalah. Latensi antara tautan sistem sulit diprediksi, yang dapat mengakibatkan ketidakakuratan fitur dan kebocoran fitur. Menambahkan fitur-fitur ini ke dalam model pengambilan dan pengurutan sering kali kontraproduktif.
Untuk memastikan akurasi, fitur real-time harus ditangkap tepat pada saat permintaan rekomendasi. Waktu terbaik untuk mencatat fitur real-time adalah ketika permintaan rekomendasi mencapai layanan rekomendasi. Saat algoritma menghitung hasil rekomendasi, Anda dapat mencatat ID permintaan, fitur pengguna real-time, dan fitur item real-time ke antrian pesan seperti DataHub atau Kafka. Kemudian, sinkronkan log ke MaxCompute (ODPS).

Definisi API
Titik akhir API
/api/callback
Parameter permintaan
Parameter | Tipe | Diperlukan | Deskripsi | Contoh |
scene_id | string | Ya | Rekomendasi halaman utama | homepage |
uid | string | Ya | ID pendaftaran pengguna | 85578510 |
request_id | string | Ya | Pengenal unik untuk permintaan | d9cb1c8d*** |
features | json string | Tidak | Fitur pengguna | {"age":25, "city":"beijing"} |
item_list | json list | Ya | Daftar ID item yang direkomendasikan | [{"item_id":"99886867"}, {"item_id":"99888623"}] |
request_info | json string | Tidak | Permintaan Informasi | {"recom_id":"12334234"} |
Contoh permintaan
curl 'http://host/api/callback' -d '{"uid":"84603208","request_id":"d9cb1c8d-4d3f-491b-9ea3-380481dabde3","scene_id":"homepage","features":{"age":25, "city":"beijing"}, "item_list":[{"item_id":"113939841"},{"item_id":"113764910"}],"request_info":{"recom_id":"1111111"}}'Data respons
{
"code":200,
"msg":"success",
}Bidang | Tipe | Deskripsi | Contoh |
code | integer | Pengenal kode balasan | Kode status API. 200 menunjukkan sukses. |
msg | string | Pesan | sukses menunjukkan sukses. |
Konfigurasi Callback
Alur callback memiliki dua bagian utama.
Memuat fitur pengguna dan item.
Dalam banyak kasus, jika Anda menggunakan model EasyRec, fitur item disertakan dengan model. Anda harus meminta model EasyRec untuk mengambil fitur Feature Generation (FG) yang dihasilkan oleh model tersebut.
Anda dapat menulis data fitur ke antrian pesan, seperti DataHub.
"CallBackConfs": {
"home_feed": {
"DataSource": {
"Name": "pairec_callback_dh",
"Type": "datahub"
},
"RankConf": {
"RankAlgoList": [
"ali_rnk_v2_woid_callback_public_v2"
],
"ContextFeatures": [
"none"
],
"Processor": "EasyRec"
},
"RawFeatures": false,
"RawFeaturesRate": 0,
"ItemSize": 100,
"ItemSizeRate": 10,
"UseUserFeatures": true
}
}home_feed adalah nama skenario. Parameter ini menentukan skenario untuk mana data dicatat.
DataSource
Type: Jenis antrian pesan. Saat ini, hanya DataHub yang didukung.
pairec_callback_dh: Nama sumber data DataHub. Anda dapat menemukan nama ini di DatahubConfs.
RankConf: Konfigurasi model. Ini sama dengan konfigurasi model untuk layanan Mesin DPI. Jika tidak ada fitur yang dihasilkan oleh model, Anda tidak perlu mengonfigurasinya.
RawFeatures: Menentukan apakah akan mencatat fitur mentah item. Setel parameter ini ke true untuk mencatatnya. Jika disetel ke true, Anda juga harus menyetel RawFeaturesRate ke rasio sampling antara 0 dan 100.
ItemSize: Mengontrol jumlah item untuk callback. Jika API rekomendasi mengembalikan terlalu banyak item, gunakan parameter ini untuk membatasi jumlahnya. Callback hanya memproses ItemSize pertama. Jika Anda tidak menyetel parameter ini, jumlah item yang dikirimkan oleh alur rekomendasi digunakan secara default.
ItemSizeRate: Memilih sejumlah item berdasarkan rasio. Nilainya bisa dari 1 hingga 100. Jika Anda menyetel ItemSize dan ItemSizeRate, sistem pertama-tama memotong daftar menjadi ItemSize item dan kemudian melakukan sampling dari daftar yang dipotong berdasarkan ItemSizeRate.
UseUserFeatures: Saat menggunakan AutoInvokeCallBack, menentukan apakah akan menggunakan fitur pengguna yang diperoleh dari alur rekomendasi. Jika Anda menyetel parameter ini, Anda tidak perlu mengonfigurasi pengambilan fitur pengguna di FeatureConfs untuk alur callback.
Konfigurasi sumber data
"DatahubConfs": {
"pairec_callback_dh": {
"Endpoint": "http://dh-cn-hangzhou-int-vpc.aliyuncs.com",
"ProjectName": "${ProjectName}",
"TopicName": "pairec_callback_log",
"Schemas": [
{
"Field": "request_id",
"Type": "string"
},
{
"Field": "module",
"Type": "string"
},
{
"Field": "scene",
"Type": "string"
},
{
"Field": "request_time",
"Type": "integer"
},
{
"Field": "user_features",
"Type": "string"
},
{
"Field": "item_features",
"Type": "string"
},
{
"Field": "request_info",
"Type": "string"
},
{
"Field": "user_id",
"Type": "string"
},
{
"Field": "item_id",
"Type": "string"
},
{
"Field": "raw_features",
"Type": "string"
},
{
"Field": "generate_features",
"Type": "string"
},
{
"Field": "context_features",
"Type": "string"
}
]
}
}Dalam konfigurasi di atas, Anda tidak perlu membuat topik secara manual. PAI-Rec dapat secara otomatis membuat topik berdasarkan nama topik dan skema.
Konfigurasi pemuatan fitur
Untuk informasi lebih lanjut, lihat Konfigurasi Fitur. Perbedaannya adalah Anda harus menggunakan `nama_skenario + _callback` sebagai alias skenario untuk pemuatan fitur. Sebagai contoh, nama skenario `home_feed_callback` dibuat dengan menggabungkan `home_feed` dan `_callback`.
Nama skenario home_feed_callback dibuat dengan menggabungkan home_feed dan _callback.
"FeatureConfs": {
"home_feed_callback": {
"AsynLoadFeature": true,
"FeatureLoadConfs": [
{
"FeatureDaoConf": {
"AdapterType": "hologres",
"HologresName": "pairec-holo",
"FeatureKey": "user:uid",
"UserFeatureKeyName": "client_str",
"HologresTableName": "dwd_ali_user_all_feature_v2_holo",
"UserSelectFields": "*",
"FeatureStore": "user"
},
"Features": [
{
"FeatureType": "new_feature",
"FeatureName": "day_h",
"Normalizer": "hour_in_day",
"FeatureStore": "user"
},
{
"FeatureType": "new_feature",
"FeatureName": "week_day",
"Normalizer": "weekday",
"FeatureStore": "user"
},
{
"FeatureType": "new_feature",
"FeatureName": "rand_int_v",
"Normalizer": "random",
"FeatureStore": "user"
}
]
},
{
"FeatureDaoConf": {
"AdapterType": "hologres",
"HologresName": "pairec-holo",
"FeatureKey": "user:uid",
"UserFeatureKeyName": "client_str",
"HologresTableName": "dwd_ali_user_table_v3_expo_static_feature_v2_holo",
"UserSelectFields": "*",
"FeatureStore": "user"
}
}
]
}
}Format log
Permintaan callback berisi satu ID pengguna dan daftar item. Karena fitur pengguna bisa besar, fitur pengguna dan item dicatat secara terpisah untuk menghemat ruang.
Log fitur pengguna berisi data berikut:
request_id: ID permintaan dari permintaan callback.
scene: Nama skenario dari permintaan callback.
request_time: Waktu permintaan.
user_features: Fitur pengguna, diformat sebagai string JSON.
user_id: ID pengguna.
request_info: Informasi tambahan dari permintaan callback.
module: Bidang statis dengan nilai `user`, yang menunjukkan bahwa ini adalah log fitur pengguna.
Log fitur item berisi data berikut:
request_id: ID permintaan dari permintaan callback.
scene: Nama skenario dari permintaan callback.
request_time: Waktu permintaan.
module: Bidang statis dengan nilai `item`, yang menunjukkan bahwa ini adalah log fitur item.
item_id: ID item.
user_id: ID pengguna.
raw_features: Fitur mentah yang dikembalikan oleh model EasyRec.
generate_features: Informasi fitur setelah FG, dikembalikan oleh model EasyRec.
context_features: Fitur konteks yang dikembalikan oleh model EasyRec.
item_features: Fitur item, diformat sebagai string JSON.
Callback otomatis skenario
Secara umum, callback diterapkan sebagai layanan terpisah, dan Anda harus merakit data untuk memanggilnya. Namun, mesin DPI PAI-Rec juga mendukung panggilan otomatis ke alur callback. Untuk mengaktifkan fitur ini, konfigurasikan pengaturan callback di file konfigurasi dan aktifkan flag `AutoInvokeCallBack` di `SceneConfs`. Setelah permintaan rekomendasi selesai, sistem secara otomatis memanggil API callback.
Jika `AutoInvokeCallBack` disetel ke `true`, Anda juga dapat menyetel `AutoInvokeCallBackRate` untuk mengontrol persentase permintaan yang memicu callback. Nilainya bisa dari 1 hingga 100. Jika Anda tidak menyetel `AutoInvokeCallBackRate`, atau jika Anda menyetelnya ke 0, semua lalu lintas memicu callback.
"SceneConfs": {
"${scene_name}": {
"default": {
"RecallNames": [
"collaborative_filter"
],
"AutoInvokeCallBack": true,
"AutoInvokeCallBackRate": 100
}
}
}Jika Anda merasa ini membantu, klik Sukai.