A/B实验GO SDK

本文为您介绍如何使用A/B实验的GO SDK进行实验分流,并获取实验相关的参数配置信息。

前提条件

安装A/B实验GO SDK

go get github.com/aliyun/aliyun-pai-ab-go-sdk

使用示例

   package main

import (
	"fmt"
	"log"
	"os"

	"github.com/aliyun/aliyun-pai-ab-go-sdk/api"
	"github.com/aliyun/aliyun-pai-ab-go-sdk/experiments"
	"github.com/aliyun/aliyun-pai-ab-go-sdk/model"
)

func main() {

	// init config
	region := "cn-beijing"
	accessId := os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
	accessKey := os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
	config := api.NewConfiguration(region, accessId, accessKey)

	// init client
	client, err := experiments.NewExperimentClient(config, experiments.WithLogger(experiments.LoggerFunc(log.Printf)))
	if err != nil {
		log.Fatal(err)
	}

	// set up experiment context
	experimentContext := model.ExperimentContext{
		RequestId: "pvid",
		Uid:       "157",
		FilterParams: map[string]interface{}{
			"sex": "male",
			"age": 35,
		},
	}

	// match experiment
	// DefaultProject is project name
	experimentResult := client.MatchExperiment("<DefaultProject>", &experimentContext)

	// print experiment info
	fmt.Println(experimentResult.Info())
	// print exp id
	fmt.Println(experimentResult.GetExpId())

	// get experiment param value
	param := experimentResult.GetExperimentParams().GetString("ab_param_name", "not_exist")
	if param != "not_exist" {
		// experiment logic

	} else {
		// default logic

	}
}

其中:

  • region:地域ID,例如华东1(杭州)配置为cn-hangzhou。

  • RequestId:自定义配置请求ID。

  • Uid:实验分流ID标识。可以是用户侧的UserID,也可以是设备ID等。

  • FilterParams:其中sexmale为实验过滤参数,请根据实际情况进行修改。

  • <DefaultProject>:A/B实验项目名称。请前往A/B实验的项目管理 > 实现项目页面,查看项目名称。具体操作,请参见新建实验项目