A/B Tests¶
These endpoints are to create, read, update, delete A/B tests parameters.
A/B tests are used for recommendation through a special type of scenarios: see A/B Test Scenarios.
To segment analytics using an A/B tests, see Analytics Segmentations. Resulting analytics will be using these segmentations; see Analytics (a.k.a. KPIs).
About the necessity of a User ID¶
An A/B test is supposed to run a test on users, thus a user_id is always
expected when using an ab_test scenario,
The core reason is that later on, analytics tasks will segment users the same way
thanks to the same user_id’s.
Any infringement of this principle may distort efferent analytics:
if anonymous users logged in after receiving recommendations,
their interactions will impact analytics reports,
as analytics tasks perform calculations on all interactions.
To protect the integrity of your analytics,
the recommendation requests should raise an error.
Still, at times, it makes sense to request item_to_* or session_to_*
recommendations under an A/B test and still expect recommendations,
for example when the engineering cost
of specifying another scenario at runtime or skip_default_scenario=True
is non-negligible.
For this reason the API offers an optional A/B test parameter missing_user_id_rule
to prescribe an action rule when the expected user_id goes missing,
set at creation of the A/B test; see POST ab-tests/params/.
The existing rules are:
raiseis best to keep the default behavior of raising anWrongDataerror;scenario_ato always use scenario A;scenario_bto always use scenario B;randompicks a scenario at random; scenario A is picked withprobability_a, scenario B with probability1-probability_a.
The three rules allowing recommendations (A/B/random) are equivalent as far as analytics are concerned: they will only reduce the significance and not add bias, merely adding noise. Abide by the one that best fits your use.
[Internal] List all A/B Tests Parameters¶
-
GETab-tests/params/¶ Note
Authorized Roles: root, manager, backend
List all A/B tests parameters.
- Response JSON Object
warnings (list-of-string) – Optional. List of warnings
ab_tests (list-of-object) –
All A/B test parameters
Inner fields
warnings (list-of-string) – List of warnings
id (string) – A/B test unique ID
name (string) – A/B test name
probability_a (float32) – [min: 1e-12 max: 0.999999999999] Probability of belonging to
Agroupmissing_user_id_rule (enum) – choices (case insensitive): [
scenario_a,scenario_b,raise,random] Rule to select a scenario whenuser_idis missing initem_to_*andsession_to_*scenarios. More information in Missing User ID Rule.
EXAMPLE RESPONSE¶{ "ab_tests": [ { "id": "gw5456hftt", "name": "my_ab_test1", "probability_a": 0.66 } ] }
[Internal] Create Parameters for an A/B Test¶
-
POSTab-tests/params/¶ Note
Authorized Roles: root, manager, backend
Create parameters for an A/B test.
- Request JSON Object
name (string) – A/B test name
probability_a (float32) – Optional. [min: 1e-12 max: 0.999999999999] Probability of belonging to
Agroupmissing_user_id_rule (enum) – Optional. choices (case insensitive): [
scenario_a,scenario_b,raise,random] Rule to select a scenario whenuser_idis missing initem_to_*andsession_to_*scenarios. More information in Missing User ID Rule.
EXAMPLE QUERY BODY¶{ "name": "my_ab_test2", "probability_a": 0.66, "missing_user_id_rule": "random" }
- Response JSON Object
warnings (list-of-string) – Optional. List of warnings
id (string) – A/B test unique ID
EXAMPLE RESPONSE¶{ "id": "m43qfwe" }
Errors:
DuplicatedError if A/B test cannot be created (e.g. duplicated name)
[Internal] Get Parameters of an A/B Test¶
-
GETab-tests/params/<str:ab_test_id>/¶ Note
Authorized Roles: root, manager, backend
Get the parameters of an A/B test.
- Response JSON Object
warnings (list-of-string) – Optional. List of warnings
id (string) – A/B test unique ID
name (string) – A/B test name
probability_a (float32) – Optional. [min: 1e-12 max: 0.999999999999] Probability of belonging to
Agroupmissing_user_id_rule (enum) – Optional. choices (case insensitive): [
scenario_a,scenario_b,raise,random] Rule to select a scenario whenuser_idis missing initem_to_*andsession_to_*scenarios. More information in Missing User ID Rule.
EXAMPLE RESPONSE¶{ "id": "gw5456hftt", "name": "my_ab_test1", "probability_a": 0.66 }
Errors:
NotFoundError if A/B test is not found
[Internal] Rename an A/B Test¶
-
PATCHab-tests/params/<str:ab_test_id>/¶ Note
Authorized Roles: root, manager, backend
Rename an A/B test.
- Request JSON Object
name (string) – A/B test new name
EXAMPLE QUERY BODY¶{ "name": "my_ab_test1" }
Errors:
NotFoundError if A/B test is not found
DuplicatedError if name already used
[Internal] Delete an A/B Test¶
-
DELETEab-tests/params/<str:ab_test_id>/¶ Note
Authorized Roles: root, manager, backend
Delete an A/B test.
Cannot be done if a resource (analytics segmentation or scenarios) is using this A/B test.
Errors:
NotFoundError if A/B test is not found
WrongData if A/B test is used by another resource