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

Platform For AI:A/B テストサービスの統合

最終更新日:Jun 24, 2026

A/B テストの統合

image

  1. 図中の「クライアント」は、お客様のクライアント側のサービスを指します。PAI-Rec コンソールで実験を設定できます。

  2. PAI-Rec エンジンを統合すると、サービスは起動時に実験設定を自動的に取得します。推薦リクエストを受信すると、SDK はリクエストを実験にマッチングさせ、対応する実験パラメーターを取得します。エンジンはこれらのパラメーターを使用して、異なるリコール戦略の使用や、異なるランキングモデルの呼び出しなど、動作を変更します。

  1. PAI-Rec は、設定用に事前定義された実験パラメーターを提供します。指定されたとおりの正確なパラメーター名を使用してください。そうしないと、実験がマッチした場合でも、エンジンはパラメーターを見つけることができません。

パラメーター

タイプ

説明

default.RecallNames

JSON 配列

使用するすべてのリコール戦略のリスト。

{"default.RecallNames":[ "HomepageEtrecRecall", "HomepageDssmRecall"]}

recall.[特定のリコール名]

JSON オブジェクト

新しいリコールの設定。

{"recall.MyRecall":{"version":"v2"}}

filterNames

JSON 配列

フィルタープロセスのリスト。

{"filterNames":["UniqueFilter", "UserExposureFilter"]}

default.SortNames

JSON 配列

再ランキングプロセスのリスト。

{"default.SortNames":["ItemRankScore"]}

rankconf

recconf.RankConfig

ランキングアルゴリズムの設定。

{"rankconf":{"RankAlgoList":["pai_homepage_fm"],"RankScore":"${pai_homepage_fm}"}}

features.scene.name

string

特徴量を読み込むための推薦シナリオ名。

"homepagetf"

generalRankConf

recconf.GeneralRankConfig

粗いランキングの設定。ユーザー特徴量の取得と RankConf アルゴリズムの設定が含まれます。詳細については、「粗いランキングの設定」をご参照ください。

{"generalRankConf":{"FeatureLoadConfs":[{"FeatureDaoConf":{}}],"RankConf":{},"ActionConfs":[]}}

coldStartGeneralRankConf

recconf.ColdStartGeneralRankConfig

コールドスタート時の粗いランキングの設定。詳細については、「粗いランキングの設定」をご参照ください。

{"coldStartGeneralRankConf":{"FeatureLoadConfs":[{"FeatureDaoConf":{}}],"RankConf":{},"ActionConfs":[]}}

coldStartRankConf

recconf.ColdStartRankConfig

コールドスタートシナリオのランキング段階で用いるランキングアルゴリズムを指定します。

{"coldStartRankConf":{"RecallName":"ColdStartRecall", "AlgoName":"linucb"}}

        func (c *HomeFeedController) makeRecommendContext() {
        c.context = context.NewRecommendContext()
        c.context.Size = c.param.Limit
        c.context.Param = &c.param
        c.context.RecommendId = c.RequestId
        c.context.Config = recconf.Config
        c.context.Debug = c.param.Debug
        abcontext := model.ExperimentContext{
                Uid:         c.param.DistinctId,
                RequestId:   c.RequestId,
                FilterParams: map[string]interface{}{},
        }
        if abtest.GetExperimentClient() != nil {
                c.context.ExperimentResult = abtest.GetExperimentClient().MatchExperiment(c.param.SceneId, &abcontext)
                log.Info(c.context.ExperimentResult.Info())
        }
}
  1. コード内で実験パラメーターを調整するには、RecommendContext オブジェクト内の context.ExperimentResult オブジェクトからパラメーターを取得します。

        count := r.recallCount
        if context.ExperimentResult != nil {
                count = context.ExperimentResult.GetLayerParams("").GetInt("recall.base.count", count)
        }
        fmt.Println("test count", count)

GetLayerParams メソッドは、特定のレイヤーから実験パラメーターを取得します。その後、GetGetIntGetFloat、または GetInt64 などのメソッドを使用して、特定のパラメーターにアクセスできます。これらのメソッドでは、最初の引数にパラメーター名を、2番目の引数にパラメーターが見つからない場合に返されるデフォルト値を指定します。

動的パラメーターの使用

実験パラメーターと同様に、カスタムパラメーターを使用して、実行時にエンジンの動作を変更することができます。これにより、サービスを再起動することなく、動的にサービスを変更できます。

左側のナビゲーションペインで、[system configuration] > [parameter management] をクリックします。現在の開発環境 (例: [Daily]) と推薦シナリオ (例: [HomePage]) を選択します。次に、[Create Parameter] をクリックしてカスタムパラメーターを追加します。たとえば、名前が custom_param で値が custom のパラメーターを作成します。

// 推薦シナリオ名を取得します。
scene := context.GetParameter("scene").(string)
// シナリオのパラメーターリストを取得し、Get* 関数で特定のパラメーター値を取得します。
count := abtest.GetParams(scene).GetInt("count", 100)
fmt.Println("recall count:", count)