全部产品
Search
文档中心

Artificial Intelligence Recommendation:Callback API

更新时间:Nov 04, 2025

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).

image.png

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.