A/B-тест промптов
Цель: сравнивать варианты, разделяя лидов агента на взвешенные бакеты, которые переопределяют промпты, конфигурацию модели или настройки рассылки.
Это A/B-кампании (
/v1/campaigns/), отличные от исходящих кампаний рассылок (/v1/outreach-campaigns/).
# 1) Создать кампанию (оставьте неактивной, пока добавляете бакеты)
curl -s https://api.ru.sance.ai/v1/campaigns/ \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{ "name": "Greeting A/B", "product_id": 42, "agent_id": 3, "is_active": false,
"batch_names": "q3-import" }'
# 2) Добавить взвешенные бакеты — для активной кампании веса должны давать в сумме 100
curl -s https://api.ru.sance.ai/v1/campaigns/9/buckets \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{ "campaign_id": 9, "name": "Variant A", "weight_pct": 50,
"config": { "prompt_overrides": {} } }'
curl -s https://api.ru.sance.ai/v1/campaigns/9/buckets \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{ "campaign_id": 9, "name": "Variant B", "weight_pct": 50,
"config": { "prompt_overrides": {} } }'
# 3) Активировать
curl -s -X PUT https://api.ru.sance.ai/v1/campaigns/9 \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{ "is_active": true }'
Что дальше: пока кампания активна и находится в своём временном окне, она распределяет
подходящих лидов по бакетам согласно весу; каждый бакет применяет свои переопределения
(prompt_overrides, models_config_override, outreach_config_override). Переопределения
промптов в бакете должны ссылаться на промпты, принадлежащие агенту кампании. Полный набор
бакетов можно заменить атомарно через PUT /v1/campaigns/{id}/buckets/bulk, а просматривать
или задавать назначения — под /v1/campaigns/{id}/assignments.
См.: POST /v1/campaigns/, POST /v1/campaigns/{id}/buckets,
PUT /v1/campaigns/{id}/buckets/bulk, GET /v1/campaigns/{id}/assignments.