全部產品
Search
文件中心

Platform For AI:如何把AB test系統接入到自有系統中

更新時間:Sep 16, 2026

摘要

當使用者已有一個推薦/搜尋/廣告引擎服務,暫時不想遷移到PAI-Rec,但是又想用PAI-Rec的AB實驗平台的時候,可參考本文完成AB test的系統接入,包括實驗的配置、SDK調用、指標設定和計算等工作。我們提供了Python和Java兩種語言方便使用者把AB服務整合到自己的系統中。

1. 配置資源

1.1. 進入 PAI-Rec平台首頁

在全鏈路服務中,配置工作空間。

配置說明:

  1. PAI平台&DataWorks平台&MaxCompute工作空間的查詢,可通過阿里雲官網的雲端服務進入對應的平台。

  2. Object Storage Service Bucket:進入OSS平台之後,可先建立Bucket,再進行PAI-Rec平台的配置。


1.2. 進入 MaxCompute 服務

進入MaxCompute控制台,在專案管理中,搜尋需要使用的專案。

報錯提示:如果沒有搜尋到專案,可嘗試切換到正確的地區,再進行操作。

點擊管理專案,在相關的資源產品 MaxCompute 中,您需要給PAI-Rec服務授予直接存取、寫入這些資源的許可權。

具體詳情可參考:開通及服務初始化


2. 建立情境

建立情境 ----> 自訂情境名稱與情境介紹

情境名稱:推薦設定 能夠說明推薦情境的位置的名稱。

情境介紹:對情境名稱進行補充解釋。

流量配置說明:

  • 適用使用者:不完全使用PAI-Rec系統推薦請求的使用者。

  • 使用情境:當使用者已有推薦系統的時候,在剛開始會把這個情境從切10%到20%的推薦流量給PAI-Rec系統。當PAI-Rec的推薦效果達到預期之後再逐漸增加流量。

  • 配置方式:

  • 假設使用者有自建的推薦流量或使用了第三方的推薦平台,可以自訂流量編碼作為標識流量,後期與PAI-Rec平台的實驗效果進行對比。

  • 使用者需要在日誌中埋點標記,建議記錄到exp_id欄位,與PAI-Rec的埋點要求一致。


3. 配置實驗

概述:根據業界常用a/b test方案設計了實驗室、實驗層、實驗組、實驗,實驗室包含了實驗層,實驗層包含實驗組,實驗組中包含了實驗。具體概念解釋可參考基本概念。

注意:在開始進行實驗之前,需要與相關的產品或者專案經理確認實驗要驗證的改動點。

以下是實驗配置參考。

3.1. 建立實驗室

  1. 左側導覽列選擇实验平台 > 实验导览。

  2. 選擇對應的環境,與推薦情境。

  3. 點擊建立實驗室,完成實驗室配置 。

配置說明:

  • 實驗室類型

    • Base實驗室:必須有一個base實驗室,可以沒有非base實驗室。

    • 非Base實驗室:優先匹配非 base 實驗室。當base實驗室的模型比較簡單,而非base實驗室的模型比較複雜的時候,可以設定兩個實驗室。base實驗室也可以完全用一個熱門隨機兜底邏輯來實現。

  • 分桶方式

    • UID HASH :根據 uid 的 hash 值分桶

    • UID分桶 :根據 uid 的末尾數字分桶

    • 過濾條件分桶 :kv 運算式分桶,如 gender=man

  • 分桶數量:此實驗室分得的桶數,總數為100

  • 流量分配

    • 分得的桶的編號,可以設定為0-99

  • 分層:實驗層一般設定recall(召回)、filter(過濾)、coarse_rank(粗排)、rank(排序)等

  • 調試使用者:調試使用者可以不經過匹配,直接進入此實驗室

    • 手動輸入:可以輸入多個,以逗號分隔

    • 人群 ID:一組 uid 的集合,需要提前在【人群管理】中建立


3.2. 建立實驗組

在每一個分層下,可以設定多個實驗組。在每一個實驗組裡,也可以設定多個實驗。

  • 原因:當有多個演算法工程師做召回或者排序實驗的時候,我們可以通過劃分實驗組,讓他們互相不會幹涉。

配置說明:

  • AA實驗:實際A/B實驗中可能出現抽樣不均的情況,結果可能會產生偏差,為了保證實驗資料的變化僅僅是實驗本身引起的,可以一次性抽取4,5組流量,選擇任意兩組不加策略空跑,監控核心指標資料,選取兩組資料最接近的進行實驗。使用者可根據需求確定。

  • 人群定向:在調試使用者選定的基礎下,再次對使用者進行篩選。使用者的選擇需要具有代表性,可以使用新老使用者交替來使用實驗,才能反饋出較全面的結果。

  • 調試使用者

    • 灰階測試使用者:將本次實驗首先給這部分灰階測試使用者使用,通過這些測試使用者的使用結果和反饋來修改完善實驗。

    • 人群ID:您可以建立多個人群規則,分別用於不同的實驗,讓指定的人群可以進入到指定的實驗流量當中,達成測試或觀察效果的目的。

      • 若顯示無選項,在實驗平台下的人群管理中,建立人群即可。

      • 其中人群ID可選擇手動輸入或 Excel匯入兩種方式,建立完成後,再操作新增實驗組選擇人群ID。

3.3. 建立實驗

配置說明:

  • 流量分配:對於不同的情況,可以選擇不同的分配流量策略。

    • 不影響使用者體驗:例如UI實驗,文案類實驗等,一般可以均勻分配流量,可以快速得到實驗結論。

    • 不確定性較強的實驗:例如新產品上線,新版本一般需要小流量實驗,盡量減少使用者體驗影響,在允許的時間內得到結論

    • 希望收益最大化的實驗:例如營運活動等等,盡可以將效果最大化,一般需要大流量實驗,留出小部分對照組用於評估ROI

  • 首先,首次新增實驗預設基準實驗。

  • 基準實驗:一組使用者會被隨機分到實驗組或對照組,基準實驗作為對照組。設定好之後,點擊儲存。

  • 基本實驗:一組使用者會被隨機分到實驗組或對照組,基本實驗作為對照組與基準實驗配置一致,設定好之後,點擊儲存。

4. 調用SDK 以及資料埋點

4.1. Python 調用

4.1.1. 環境準備

  1. 使用者需要配置 Python 環境,安裝 pycharm 軟體工具。可參考以下文檔:Pycharm及python安裝詳細教程

  2. 開啟 cmd 命令提示視窗,安裝所需的模組包,使用以下命令。

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
說明

注意:

  1. 由於所需的模組包不是開源,所以在 pycharm 的安裝模組的方式無法達到效果,可能會導致與正確的模組包衝突報錯。

  2. 如果出現 pip 需要更新的情況,先更新,再安裝模組。

  3. 出現 TimeOUT 逾時報錯,是由於網路不好的原因,重新運行命令。

4.1.2. 進入 pycharm

  • 建立一個運行 python SDK 的 py 程式。

  • 參考以下文檔開通及服務初始化,參考步驟擷取到AccessKeyID和AccessKeySecret

  • 基於使用者資料的保密性,推薦將帳號和密碼添加到系統變數中,使用Python的函數方法讀取即可。

    # 建立兩個變數,用於儲存ID和密碼
    ALIBABA_CLOUD_ACCESS_KEY_ID
    ALIBABA_CLOUD_ACCESS_KEY_SECRET
  • 將以下代碼,拷貝到 py 程式中 ,按照下一步提示進行內容替換。

    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
    import os
    
    # 設定相關資訊
    instance_id = "執行個體ID" #填寫:執行個體ID
    region = "地區" #填寫:地區
    access_id = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
    access_key = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
    
    if __name__ == '__main__':
     # environment 為枚舉值: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)
    
     # 構造請求上下文,其中 filter_params 可為空白
     experiment_context = ExperimentContext(request_id="請求ID",uid="使用者ID",filter_params={})
     # 擷取實驗的匹配結果,需傳入情境名和上下文
     
     experiment_result = experiment.match_experiment("情境名稱", experiment_context)
     
     # 列印匹配結果的資訊
     print('info', experiment_result.info())
    
     # 列印匹配到的 exp_id
     print('exp_id', experiment_result.get_exp_id())
    
     # 這裡可以擷取實驗中配置的參數
     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'))
重要

配置環境變數報錯:

  • 如果訪問的環境變數不存在,將會報錯,引發一個 KeyError, 解決方案:在運行執行個體的代碼空白處可右擊,查看回合組態中系統變數是否載入進去了,如果沒有,重啟py專案即可

  • 替換以下使用者資訊。(代碼中有提示需要注釋)

    • 在 AI-REC平台中的基本資料中,可以查看到配置資訊:執行個體ID,地區

    • request_id & uid: request_id 表示請求 id, 使用者通過自訂邏輯,例如:自增加ID,UUID等邏輯,產生請求ID

    • 在推薦情境欄中,可查看到需要使用的情境名稱。

運行替換後的py程式,可擷取到URL與token。

4.2. java 調用

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 {
 String regionId = "地區";
 String instanceId = System.getenv("執行個體ID"); // pai-rec instance id
 String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); // aliyun accessKeyId
 String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); // aliyun accessKeySecret
 Configuration configuration = new Configuration(regionId, accessId, accessKey, instanceId);
 // set experiment environment
 configuration.setEnvironment(Constants.Environment_Product_Desc);
 ApiClient apiClient = new ApiClient(configuration);

 experimentClient = new ExperimentClient(apiClient);
 // init client
 experimentClient.init();
 // set expeirment context
 ExperimentContext experimentContext = new ExperimentContext();
 experimentContext.setUid("使用者ID");
 experimentContext.setRequestId("請求ID");

 // match experiment, use scence and experimentContext
 ExperimentResult experimentResult = experimentClient.matchExperiment("情境名稱", experimentContext);

 // exp id
 System.out.println(experimentResult.getExpId());
 // exp log info
 System.out.println(experimentResult.info());

 // get experiment param value
 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));

 // get experiment param value by pecific layer name
 //通過 特定層的名稱 擷取到實驗參數值
 System.out.println(experimentResult.getLayerParams("recall").getString("rank_version", "not exist"));
 System.out.println(experimentResult.getLayerParams("rank").getString("version", "not exist"));


 }
}

5. 設計實驗指標

由資料分析師設計實驗中所需要觀測的一些核心指標,例如:點擊率或者轉化率等。

5.1. 進入指標管理,資料註冊模組

將MaxCompute表與a/b test執行個體關聯,其中資料表名稱為自訂名稱,可以起個與業務相關的表名。

  • 選擇包含必要欄位的資料表,詳細格式請參考文檔:資料註冊與欄位配置

  • 若使用者沒有包含所有必要欄位的 MaxCompute 資料表,則需要建立,以下提供建立步驟參考:

    1. 在MaxCompute表頁簽,單擊新增数据表。

    2. 填寫選定的專案、MaxCompute表,並自訂資料表名稱。

    3. 單擊開始匯入。

註冊好的資料表會自動出現在列表中,您可以點擊查看欄位按鈕查看資料表中的欄位,對欄位和相關資訊進行核對或編輯。


5.1.1. MaxCompute 表中沒有必要欄位的情況

  • 需要進入 MaxCompute控制台,建立符合要求的資料表。


  • 通過 DataWorks ,建立 MaxCompute 實驗報表來源表。


5.2. 配置實驗指標

在AB測試過程中,通過實驗指標來度量實驗效果。

實驗指標可分為2類:

  • 比例型實驗指標/人均值實驗指標

  • 比例型實驗指標(點擊轉化率、次日留存率、CTR-點擊率、CVR-轉化率)

  • 人均值實驗指標(人均點擊次數、人均下單金額)

  • 核心指標/必看指標

  • 核心指標(決策勝出的直接指標)

  • 必看指標(每一個測試需要觀察的指標,雖然測試功能對這個必看指標沒有直接的因果關係,但是不能對必看指標有顯著負向的影響。)

除了以上類型和用途指標之外,偶爾會對比一些絕對值指標(只有在進入測試組的使用者數相同的情況下,對比這些絕對值指標才是有意義的)。

  • 絕對值指標

  • 總點擊使用者數

  • 總下單金額

5.2.1. 指標項

首先,進入指標配置模組,選擇指標項配置,選定應用的推薦情境與指標時效。

5.2.1.1. 單維指標

根據一些彙總邏輯(計數,去重計數,加和,取平均數等),產生的基礎指標,例如使用者開啟 app 的次數。

例如:我們最終結果需要得到某個網站的點擊率。

點擊率 = 每日點擊數 / 每日訪問量 ,則應當在單維指標中新增每日點擊數和每日訪問量,最終通過在衍生指標進行計算,得到結果。

配置說明:

  • 指標定義中, PV 表示某個網頁的頁面訪問量,UV 表示某個頁面的使用者訪問數(只在使用者首次進入時記錄次數)。

  • 選擇欄位後,會產生對應的計算欄位命令。

5.2.1.2. 衍生指標

對多個單維指標進行比例等類型的計算。

5.2.2. 指標組

您可以圈選選定情境下的多個指標,作為一個指標組,以指標組為單位進行指標計算等任務。

  1. 配置指標組,設定指標圈選範圍。

  2. 點擊計算。

6. 計算指標以及生產報表

6.1. 計算指標

在指標配置中,在指標組中點擊計算後,選擇指標。

  • 建立計算任務完成後,可在計算任務模組中,查看具體進度。

  • 當所有的計算任務跑完之後,狀態顯示為成功。

6.2. 生產報表

  • 進入到實驗平台中的效果報表模組,配置參數後,點擊開始分析。

使用者可以在詳細資料中,查看對比基準實驗與普通實驗的指標差異;在趨勢分析中,可切換不同的實驗指標查看實驗效果。