All Products
Search
Document Center

Platform For AI:Cara mengintegrasikan sistem pengujian A/B dengan sistem Anda

Last Updated:Jun 25, 2026

Sistem Pengujian A/B PAI-Rec dapat berjalan bersamaan dengan mesin rekomendasi, pencarian, atau periklanan yang sudah ada—tanpa perlu migrasi. Panduan ini menjelaskan langkah-langkah integrasi lengkap: mengonfigurasi sumber daya cloud, menyiapkan eksperimen, memanggil SDK, dan mengukur hasil.

Cara kerja

PAI-Rec mengorganisasi Pengujian A/B dalam hierarki empat tingkat:

Lab → Lapisan eksperimen → Kelompok eksperimen → Eksperimen

Sebuah lab berisi lapisan eksperimen, setiap lapisan berisi kelompok eksperimen, dan setiap kelompok berisi eksperimen. Trafik dialirkan terlebih dahulu ke lab non-basis; lab basis menangani sisa trafik sebagai fallback.

Ketika permintaan pengguna tiba, SDK memanggil match_experiment dengan nama skenario dan konteks permintaan. PAI-Rec menetapkan pengguna ke suatu eksperimen dan mengembalikan:

  • exp_id — ID eksperimen yang harus dicatat pada setiap event pengguna untuk perhitungan metrik

  • Parameter eksperimen — pasangan kunci-nilai yang dibaca sistem Anda untuk menentukan varian algoritma mana yang akan dijalankan

Event dan metrik: Kode Anda mencatat event perilaku pengguna (klik, pembelian, dan sebagainya) serta merekam exp_id pada setiap event tersebut. PAI-Rec mengagregasi event-event ini di MaxCompute untuk menghitung metrik eksperimen dan menghasilkan laporan perbandingan. Bidang exp_id inilah yang menghubungkan setiap event perilaku dengan eksperimen yang tepat selama analisis.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Instans PAI-Rec dengan ID instans dan wilayah

  • ID AccessKey dan Rahasia AccessKey (dari Akun Alibaba Cloud Anda)

  • Proyek MaxCompute dengan izin baca dan tulis yang diberikan kepada PAI-Rec

  • Bucket Object Storage Service (OSS)

Langkah 1: Konfigurasi sumber daya

Masuk ke Konsol PAI-Rec

Di Konsol PAI-Rec, klik Full-link Service di panel navigasi kiri. Pada wizard Service Initialization yang muncul, konfigurasikan ruang kerja Anda.

image.png

Catatan konfigurasi:

  1. Periksa ruang kerja yang sudah ada dari Platform for AI (PAI), DataWorks, dan MaxCompute di Konsol masing-masing produk. Di halaman utama setiap produk, klik Console.

  2. Buat bucket OSS di Konsol OSS sebelum mengonfigurasinya di sini.

Berikan akses MaxCompute

Di halaman Projects, cari proyek MaxCompute yang ingin Anda gunakan.

image.png
Jika tidak ada proyek yang muncul, pilih wilayah yang benar terlebih dahulu.

Pada kolom Actions proyek tersebut, klik Manage. Berikan akses langsung dan izin tulis kepada PAI-Rec pada proyek MaxCompute tersebut.

image.png

Untuk detailnya, lihat Service initialization.

Langkah 2: Buat skenario

image.png
ParameterDeskripsi
Scenario nameNama skenario rekomendasi. Gunakan nama yang mencerminkan lokasi halaman (misalnya, homepage_feed).
DescriptionDeskripsi opsional untuk skenario tersebut.
Intended usersPilih pengguna yang tidak sepenuhnya menggunakan PAI-Rec.

Konfigurasi trafik untuk sistem yang dikelola sendiri:

Jika Anda memiliki sistem rekomendasi yang dikelola sendiri, mulailah dengan mengarahkan 10%–20% trafik skenario ke PAI-Rec. Setelah PAI-Rec mencapai hasil yang diinginkan, tingkatkan pangsa trafik secara bertahap.

Untuk melacak trafik yang Anda kelola secara terpisah, tetapkan kode trafik khusus. Catat exp_id dalam log pelacakan event Anda untuk setiap interaksi pengguna—inilah cara PAI-Rec menghubungkan event perilaku dengan eksperimen selama perhitungan metrik.

Langkah 3: Konfigurasi Pengujian A/B

Penting

Sebelum memulai eksperimen, konfirmasikan perubahan yang akan diuji dengan product manager atau project manager terkait.

Untuk definisi istilah, lihat Terms.

Buat lab

  1. Pilih lingkungan runtime dan skenario rekomendasi.

  2. Klik Create Lab.

  3. Pada panel Create Lab, konfigurasikan parameter berikut:

ParameterDeskripsi
Lab typeBase Lab (wajib): menangani trafik yang tidak sesuai dengan lab non-basis. Dapat menggunakan item populer atau logika fallback acak. Non-base Lab (opsional): trafik dicocokkan ke sini terlebih dahulu; berguna untuk model kompleks yang dijalankan bersama model dasar yang lebih sederhana.
Bucketing methodHashed UID-based Bucketing: membagi pengguna berdasarkan nilai hash UID. UID-based Bucketing: membagi pengguna berdasarkan digit terakhir UID. Condition-based Bucketing: membagi pengguna berdasarkan ekspresi kunci-nilai seperti gender=man.
BucketsJumlah total bucket dalam lab ini (misalnya, 100).
Traffic allocationNomor bucket yang dialokasikan untuk lab ini, dalam rentang 0–99.
LayeringLapisan eksperimen. Lapisan umum: recall, filter, coarse_rank, rank.
Test usersPengguna yang diarahkan langsung ke lab ini tanpa pencocokan bucketing. Masukkan UID secara manual (dipisahkan koma) atau pilih User Group ID dari halaman User Group Management.

Buat kelompok eksperimen

Setiap lapisan eksperimen dapat memiliki beberapa kelompok eksperimen, dan setiap kelompok dapat memiliki beberapa eksperimen. Gunakan kelompok terpisah ketika beberapa engineer perlu menjalankan eksperimen pada lapisan yang sama (misalnya, algoritma recall berbeda) tanpa saling mengganggu.

Kelompok pengujian A/A (direkomendasikan untuk eksperimen baru):

Untuk memvalidasi bahwa pengaturan eksperimen Anda tidak bias, buatlah kelompok pengujian A/A sebelum menjalankan eksperimen nyata:

  1. Pilih 4–5 bucket untuk eksperimen.

  2. Tetapkan 2 bucket ke kelompok tanpa kebijakan yang dikonfigurasi. Jalankan bucket tersebut sebagai dry run dan pantau metrik utama.

  3. Gunakan dua kelompok yang metriknya paling mirip untuk pengujian A/B sebenarnya.

Parameter tambahan untuk kelompok eksperimen:

ParameterDeskripsi
Filter bySaring pengguna lebih lanjut setelah pengguna uji dipilih. Penyaringan berdasarkan pengguna baru vs. pengguna lama memberikan hasil uji yang lebih komprehensif.
Test usersManually Enter: tentukan ID pengguna untuk menjalankan eksperimen terlebih dahulu, kumpulkan masukan, lalu sempurnakan. User Group ID: arahkan kelompok pengguna tertentu ke eksperimen tertentu. Buat kelompok pengguna di User Group Management di bawah Experiment Platform; Anda dapat mengunggah ID pengguna secara manual atau melalui Excel.
image.png

Buat eksperimen

Klik Create Experiment. Secara default, eksperimen garis dasar dibuat terlebih dahulu.

Jenis eksperimenDeskripsi
Baseline experimentKelompok kontrol. Pengguna ditetapkan secara acak ke kelompok eksperimen atau kelompok kontrol.
Normal experimentEksperimen tambahan dengan struktur yang sama seperti garis dasar. Masing-masing berfungsi sebagai kelompok perlakuan.

Strategi alokasi trafik:

TujuanStrategi
Minimalkan risiko saat meluncurkan fitur baruKirim potongan trafik kecil ke versi baru untuk membatasi dampak pada pengguna sekaligus mengumpulkan data dalam jangka waktu Anda.
Maksimalkan kecepatan pengujianDistribusikan trafik secara merata di seluruh kelompok untuk mengumpulkan hasil lebih cepat.
Optimalkan return on investment (ROI)Alokasikan lebih banyak trafik ke kelompok eksperimen dan pertahankan potongan kecil untuk kelompok kontrol.

Setelah mengonfigurasi semua parameter, klik Save.

Langkah 4: Panggil SDK

SDK Python dan Java mengikuti pola yang sama: inisialisasi klien dengan kredensial dan detail instans Anda, panggil match_experiment dengan nama skenario dan konteks pengguna, lalu baca exp_id dan parameter eksperimen dari hasilnya.

Simpan exp_id pada setiap event perilaku pengguna yang Anda catat. PAI-Rec menggunakan bidang ini untuk mengatribusikan event ke eksperimen saat menghitung metrik.

Python SDK

Instal

Anda harus menyiapkan lingkungan Python dan menginstal PyCharm untuk menjalankan SDK.

pip install https://aliyun-pairec-config-sdk.oss-cn-hangzhou.aliyuncs.com/python/aliyun_pairec_config_python_sdk-1.0.0-py2.py3-none-any.whl
Instal menggunakan perintah di atas, bukan melalui package manager PyCharm. Paket ini tidak open source, dan installer PyCharm dapat menyebabkan konflik. Jika pip perlu diperbarui, perbarui terlebih dahulu sebelum menginstal. Jika terjadi timeout, jalankan perintah lagi.

Inisialisasi dan panggil

Simpan kredensial Anda dalam variabel lingkungan sebelum menjalankan kode:

export ALIBABA_CLOUD_ACCESS_KEY_ID=<your-access-key-id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<your-access-key-secret>
Peringatan

Jangan pernah menyematkan kredensial AccessKey secara langsung di kode sumber Anda. Baca dari variabel lingkungan saat runtime.

import os
from alibabacloud_tea_openapi.models import Config
from api.api_scene import SceneApiService
from api.api_experiment_room import ExperimentRoomApiService
from api.api_layer import api_layer
from api.api_experiment_group import ExperimentGroupApiService
from api.api_experiment import ExperimentApiService
from client.client import ExperimentClient
from model.experiment import ExperimentContext
from api.api_crowd import CrowdApiService
from alibabacloud_pairecservice20221213.client import Client
from common.constants import ENVIRONMENT_PRODUCT_CONFIG_CENTER
from common.constants import ENVIRONMENT_PREPUB_CONFIG_CENTER
from common.constants import ENVIRONMENT_DAILY_CONFIG_CENTER

# Detail instans — temukan di halaman Basic Information di Konsol PAI-Rec
instance_id = "<instance-id>"
region = "<region-id>"

# Baca kredensial dari variabel lingkungan
access_id = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
access_key = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']

if __name__ == '__main__':
    # Lingkungan yang valid: ENVIRONMENT_PRODUCT_CONFIG_CENTER, ENVIRONMENT_PREPUB_CONFIG_CENTER, ENVIRONMENT_DAILY_CONFIG_CENTER
    experiment = ExperimentClient(
        instance_id=instance_id,
        region=region,
        access_key_id=access_id,
        access_key_secret=access_key,
        environment=ENVIRONMENT_PRODUCT_CONFIG_CENTER
    )

    # Bangun konteks permintaan
    # request_id: pengenal unik apa pun (ID auto-increment atau UUID)
    # uid: ID pengguna yang akan ditetapkan ke eksperimen
    experiment_context = ExperimentContext(
        request_id="<request-id>",
        uid="<user-id>",
        filter_params={}
    )

    # Cocokkan pengguna ke eksperimen dalam skenario yang ditentukan
    # Temukan nama skenario di halaman Recommendation Scenarios
    experiment_result = experiment.match_experiment("<scenario-name>", experiment_context)

    # Catat detail penetapan eksperimen
    print('info', experiment_result.info())

    # Simpan exp_id dalam log pelacakan event Anda untuk perhitungan metrik
    print('exp_id', experiment_result.get_exp_id())

    # Baca parameter eksperimen untuk menentukan varian algoritma mana yang akan dijalankan
    print(experiment_result.get_experiment_params())
    print(experiment_result.get_experiment_params().get('url', 'not exist'))
    print(experiment_result.get_experiment_params().get('token', 'not exist'))

Ganti placeholder sebelum menjalankan:

PlaceholderLokasi menemukannya
<instance-id>Basic Information di Konsol PAI-Rec
<region-id>Basic Information di Konsol PAI-Rec
<scenario-name>Recommendation Scenarios di Konsol PAI-Rec
image.pngimage.png

Output yang diharapkan:

Eksekusi yang berhasil mencetak penetapan eksperimen dan nilai parameter yang dikonfigurasi untuk eksperimen tersebut:

info exp_id=<exp_id> ...
exp_id <exp_id>
{'url': 'https://...', 'token': '...'}
https://...
...
Jika terjadi KeyError saat membaca variabel lingkungan, klik kanan konfigurasi run di PyCharm dan verifikasi apakah variabel sistem dimuat. Jika tidak, restart proyek.

Java SDK

Peringatan

Jangan pernah menyematkan kredensial AccessKey secara langsung di kode sumber Anda. Baca dari variabel lingkungan saat runtime.

package com.aliyun.openservices.pairec;

import com.aliyun.openservices.pairec.api.ApiClient;
import com.aliyun.openservices.pairec.api.Configuration;
import com.aliyun.openservices.pairec.common.Constants;
import com.aliyun.openservices.pairec.model.ExperimentContext;
import com.aliyun.openservices.pairec.model.ExperimentResult;

public class ExperimentTest {
    static ExperimentClient experimentClient;

    public static void main(String[] args) throws Exception {
        // Detail instans — temukan regionId dan instanceId di halaman Basic Information
        String regionId = "<region-id>";
        String instanceId = System.getenv("Instance ID"); // ID instans pai-rec

        // Baca kredensial dari variabel lingkungan
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");

        Configuration configuration = new Configuration(regionId, accessId, accessKey, instanceId);
        // Tetapkan lingkungan eksperimen
        configuration.setEnvironment(Constants.Environment_Product_Desc);

        ApiClient apiClient = new ApiClient(configuration);
        experimentClient = new ExperimentClient(apiClient);
        // Inisialisasi klien
        experimentClient.init();

        // Bangun konteks permintaan
        ExperimentContext experimentContext = new ExperimentContext();
        experimentContext.setUid("<user-id>");
        experimentContext.setRequestId("<request-id>");

        // Cocokkan pengguna ke eksperimen dalam skenario yang ditentukan
        ExperimentResult experimentResult = experimentClient.matchExperiment("<scenario-name>", experimentContext);

        // Simpan exp_id dalam log pelacakan event Anda untuk perhitungan metrik
        System.out.println(experimentResult.getExpId());
        // Catat detail penetapan eksperimen
        System.out.println(experimentResult.info());

        // Baca parameter eksperimen untuk menentukan varian algoritma mana yang akan dijalankan
        System.out.println(experimentResult.getExperimentParams().getString("rank_version", "not exist"));
        System.out.println(experimentResult.getExperimentParams().getString("version", "not exist"));
        System.out.println(experimentResult.getExperimentParams().getString("recall", "not exist"));
        System.out.println(experimentResult.getExperimentParams().getDouble("recall_d", 0.0));

        // Baca parameter untuk lapisan eksperimen tertentu berdasarkan nama
        System.out.println(experimentResult.getLayerParams("recall").getString("rank_version", "not exist"));
        System.out.println(experimentResult.getLayerParams("rank").getString("version", "not exist"));
    }
}

Langkah 5: Rancang metrik eksperimen

Sebelum menghitung metrik, daftarkan tabel data MaxCompute dan definisikan apa yang akan diukur. Analis data biasanya merancang metrik utama—seperti tingkat klik (CTR) dan tingkat konversi (CVR)—serta metrik wajib yang tidak boleh mengalami kemunduran selama eksperimen.

Daftarkan tabel data

Di Konsol PAI-Rec, buka Metric Management > Data Registration. Asosiasikan tabel MaxCompute dengan instans Pengujian A/B Anda. Tetapkan Data Table Name ke nama yang mencerminkan konteks bisnis.

image.png

Pilih tabel yang berisi bidang yang diperlukan. Untuk persyaratan bidang, lihat Data registration and field configuration.

Jika proyek MaxCompute Anda tidak memiliki tabel dengan semua bidang yang diperlukan, buat satu:

  1. Masuk ke Konsol MaxCompute dan buat tabel data.

    image.png

  2. Di DataWorks, buat tabel sumber untuk laporan eksperimen Pengujian A/B di MaxCompute.

    image.png

    image.png

Setelah pendaftaran, tabel tersebut muncul dalam daftar tabel data. Klik View Fields di kolom Actions untuk memeriksa atau mengedit pemetaan bidang.

Jenis metrik

PAI-Rec mendukung tiga kategori metrik:

KategoriContohKapan digunakan
Metrik berbasis rasioTingkat konversi klik, CTR, CVR, tingkat retensi hari berikutnyaMembandingkan laju antar kelompok; paling umum untuk eksperimen rekomendasi
Metrik per penggunaRata-rata klik per pengguna, nilai pesanan rata-rata (AOV)Mengukur dampak per pengguna, bukan laju agregat
Metrik absolutTotal klik, total nilai pesananHanya bandingkan jika kelompok uji memiliki jumlah pengguna yang sama

Selain itu, bedakan antara:

  • Metrik utama (KPI): hasil utama yang dirancang untuk ditingkatkan oleh eksperimen

  • Metrik wajib: metrik yang harus diamati selama pengujian; kemampuan yang diuji tidak boleh memengaruhi metrik ini secara negatif

Konfigurasi metrik

Di halaman Metric Configurations, klik Metrics. Tetapkan parameter Recommendation Scenario dan Metric Timeliness.

image.png

Metrik satu dimensi dihitung dari satu agregasi: count, unique count, sum, atau average. Misalnya, klik harian dan kunjungan harian adalah metrik satu dimensi.

image.png

Pada parameter Metric Definition:

  • Page Views: menghitung setiap kunjungan halaman

  • Unique Visitors: menghitung setiap pengguna sekali, pada kunjungan pertama

Metrik turunan menggabungkan beberapa metrik satu dimensi. Contohnya:

CTR = Daily clicks / Daily visits

Tambahkan klik harian dan kunjungan harian sebagai metrik satu dimensi terlebih dahulu, lalu definisikan CTR sebagai metrik turunan menggunakan rumus di atas.

image.png

Konfigurasi kelompok metrik

Grupkan metrik yang terkait untuk menghitung dan membandingkannya sebagai satu set.

image.png
  1. Di tab Metric Groups, buat kelompok metrik dan tetapkan parameter Metric Selection untuk menyertakan metrik yang Anda inginkan.

  2. Klik Calculate di kolom Actions untuk memicu perhitungan metrik.

image.png

Langkah 6: Hitung metrik dan hasilkan laporan

Hitung metrik

Di tab Metric Groups pada halaman Metric Configurations, klik Calculate di kolom Actions. Pilih metrik yang akan dihitung pada panel yang muncul.

image.png

Lacak progres pekerjaan di halaman Jobs. Saat semua pekerjaan selesai, status berubah menjadi Succeeded.

image.png

Lihat laporan

Di halaman Performance Reports di bawah Experiment Platform, konfigurasikan parameter dan klik Start Analysis.

image.png
  • Detail Data: menunjukkan perbedaan metrik antara eksperimen garis dasar dan eksperimen normal

  • Trend Analysis: menunjukkan bagaimana metrik yang dipilih berubah selama periode eksperimen

Langkah selanjutnya