Разработка AI-системы для автоматического A/B-тестирования креативов

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Разработка AI-системы для автоматического A/B-тестирования креативов
Средний
~1-2 недели
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    901
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1119
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    853

Разработка AI-системы для автоматического A/B-тестирования креативов

Ручное A/B-тестирование рекламных креативов не масштабируется: когда нужно одновременно тестировать сотни вариантов изображений, заголовков, CTA и аудиторных сегментов, традиционный подход занимает слишком много времени. AI-система автоматически генерирует гипотезы, запускает тесты, анализирует результаты и масштабирует победителей.

Архитектура системы

Creative Intelligence Layer — анализ существующих креативов: извлечение признаков (цвета, объекты, текст, эмоциональный тон), кластеризация по визуальным паттернам, предсказание performance до запуска теста.

Experiment Management — автоматическое создание тестовых групп, распределение бюджета, мониторинг статистической значимости, остановка проигрывающих вариантов (early stopping).

Multi-Armed Bandit — динамическое перераспределение трафика в пользу лучших вариантов без ожидания окончания классического A/B теста.

Multi-Armed Bandit для оптимизации

import numpy as np
from dataclasses import dataclass, field

@dataclass
class CreativeVariant:
    id: str
    name: str
    impressions: int = 0
    conversions: int = 0
    # Beta distribution parameters (Bayesian)
    alpha: float = 1.0  # Prior: 1 успех
    beta: float = 1.0   # Prior: 1 неуспех

class ThompsonSamplingOptimizer:
    def __init__(self, variants: list[CreativeVariant]):
        self.variants = {v.id: v for v in variants}

    def select_variant(self) -> str:
        """Выбор варианта через Thompson Sampling"""
        samples = {}
        for vid, v in self.variants.items():
            # Сэмплирование из Beta-распределения
            samples[vid] = np.random.beta(v.alpha, v.beta)

        return max(samples, key=samples.get)

    def update(self, variant_id: str, converted: bool):
        v = self.variants[variant_id]
        v.impressions += 1
        if converted:
            v.conversions += 1
            v.alpha += 1
        else:
            v.beta += 1

    def get_probabilities(self) -> dict:
        """Вероятность того, что вариант является лучшим"""
        n_simulations = 10_000
        wins = {vid: 0 for vid in self.variants}

        for _ in range(n_simulations):
            samples = {vid: np.random.beta(v.alpha, v.beta)
                      for vid, v in self.variants.items()}
            winner = max(samples, key=samples.get)
            wins[winner] += 1

        return {vid: wins[vid] / n_simulations for vid in self.variants}

Автоматический анализ креативов

import torch
from transformers import CLIPModel, CLIPProcessor

class CreativeAnalyzer:
    def __init__(self):
        self.clip = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
        self.processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")

    def extract_features(self, image_path: str) -> np.ndarray:
        """Извлечение визуальных признаков через CLIP"""
        image = Image.open(image_path)
        inputs = self.processor(images=image, return_tensors="pt")
        with torch.no_grad():
            features = self.clip.get_image_features(**inputs)
        return features.numpy().flatten()

    def predict_ctr(self, creative_features: np.ndarray,
                    audience_segment: str) -> float:
        """Предсказание CTR до запуска теста"""
        # Обученная модель на исторических данных
        combined = np.concatenate([
            creative_features,
            self.segment_encoder.encode(audience_segment)
        ])
        return float(self.ctr_model.predict([combined])[0])

Интеграция с рекламными платформами

Facebook Marketing API:

from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.adcreative import AdCreative

def create_and_launch_test(access_token, ad_account_id, variants):
    FacebookAdsApi.init(access_token=access_token)

    for variant in variants:
        creative = AdCreative(parent_id=ad_account_id)
        creative.update({
            'name': variant['name'],
            'object_story_spec': {
                'page_id': PAGE_ID,
                'link_data': {
                    'image_hash': variant['image_hash'],
                    'link': variant['url'],
                    'message': variant['text']
                }
            }
        })
        creative.remote_create()

Метрики и критерии победителя

Система автоматически останавливает тест и объявляет победителя когда: достигнута 95% вероятность превосходства по CTR или ROAS, минимальный объём (1000+ конверсий на вариант). Победитель масштабируется немедленно, проигравшие отключаются — без ожидания ручного анализа.

Типичный результат: ускорение цикла тестирования с 2-3 недель до 3-5 дней, повышение ROAS на 15-30% за счёт непрерывной оптимизации.