Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Эксперименты и оценка пригодности

Система самоэволюции в PRX использует контролируемые эксперименты и оценку пригодности для измерения того, действительно ли предложенные изменения улучшают производительность агента. Каждое предложение эволюции выше L1 тестируется через A/B-эксперимент перед постоянным принятием.

Обзор

Система экспериментов обеспечивает:

  • A/B-тестирование -- параллельный запуск контрольного и экспериментального вариантов
  • Скоринг пригодности -- количественная оценка производительности агента составным баллом
  • Статистическая валидация -- подтверждение значимости улучшений, а не случайного шума
  • Автоматическая конвергенция -- продвижение победителя и отклонение проигравшего при убедительных результатах

Жизненный цикл эксперимента

┌──────────┐    ┌──────────┐    ┌──────────┐    ┌───────────┐
│ Создание │───►│  Запуск  │───►│  Оценка  │───►│Конвергенц.│
│          │    │          │    │          │    │           │
│ Определ. │    │ Разделен.│    │ Сравнен. │    │ Продвиж.  │
│ вариантов│    │ трафика  │    │пригодн.  │    │или отклон.│
└──────────┘    └──────────┘    └──────────┘    └───────────┘

1. Создание

Эксперимент создаётся, когда конвейер эволюции генерирует предложение:

  • Контрольный вариант, представляющий текущую конфигурацию
  • Экспериментальный вариант, представляющий предложенное изменение
  • Параметры эксперимента: длительность, размер выборки, разделение трафика

2. Запуск

Во время эксперимента сессии назначаются вариантам:

  • Сессии назначаются случайно на основе соотношения разделения трафика
  • Каждая сессия полностью проходит под одним вариантом (без переключения в середине сессии)
  • Оба варианта мониторятся по одному набору метрик пригодности

3. Оценка

После достижения минимальной длительности или размера выборки:

  • Вычисляются баллы пригодности для обоих вариантов
  • Проверяется статистическая значимость (по умолчанию: 95% доверительная вероятность)
  • Вычисляется размер эффекта для измерения практической значимости

4. Конвергенция

На основе результатов оценки:

  • Экспериментальный побеждает -- предложенное изменение продвигается в конфигурацию по умолчанию
  • Контрольный побеждает -- предложенное изменение отклоняется; контрольный остаётся
  • Неопределённо -- эксперимент продлевается или изменение откладывается

Конфигурация

toml
[self_evolution.experiments]
enabled = true
default_duration_hours = 168       # 1 неделя по умолчанию
min_sample_size = 100              # минимум сессий на вариант
traffic_split = 0.5                # разделение 50/50 между контролем и экспериментом
confidence_level = 0.95            # требуемая 95% статистическая доверительная вероятность
min_effect_size = 0.02             # минимальное 2% улучшение для принятия

[self_evolution.experiments.auto_converge]
enabled = true
check_interval_hours = 24          # оценка результатов каждые 24 часа
max_duration_hours = 720           # принудительная конвергенция через 30 дней

Справочник конфигурации

ПолеТипПо умолчаниюОписание
enabledbooltrueВключить или отключить систему экспериментов
default_duration_hoursu64168Длительность эксперимента по умолчанию в часах (1 неделя)
min_sample_sizeusize100Минимум сессий на вариант перед оценкой
traffic_splitf640.5Доля сессий, назначаемых экспериментальному варианту (0.0--1.0)
confidence_levelf640.95Требуемый уровень статистической доверительной вероятности
min_effect_sizef640.02Минимальное улучшение пригодности (доля) для принятия эксперимента
auto_converge.enabledbooltrueАвтоматически продвигать/отклонять при убедительных результатах
auto_converge.check_interval_hoursu6424Как часто проверять результаты эксперимента
auto_converge.max_duration_hoursu64720Принудительная конвергенция после данной длительности (по умолчанию 30 дней)

Структура записи эксперимента

Каждый эксперимент отслеживается как структурированная запись:

ПолеТипОписание
experiment_idStringУникальный идентификатор (UUIDv7)
decision_idStringСсылка на породившее решение
layerLayerУровень эволюции: L1, L2 или L3
statusStatusrunning, evaluating, converged, cancelled
created_atDateTime<Utc>Время создания эксперимента
converged_atOption<DateTime<Utc>>Время завершения эксперимента
controlVariantОписание контрольного варианта
treatmentVariantОписание экспериментального варианта
control_sessionsusizeКоличество сессий, назначенных контрольному
treatment_sessionsusizeКоличество сессий, назначенных экспериментальному
control_fitnessFitnessScoreАгрегированная пригодность контрольного варианта
treatment_fitnessFitnessScoreАгрегированная пригодность экспериментального варианта
p_valueOption<f64>Статистическая значимость (ниже = значимее)
winnerOption<String>"control", "treatment" или null если неопределённо

Оценка пригодности

Скоринг пригодности количественно оценивает производительность агента по нескольким измерениям. Составной балл пригодности используется для сравнения вариантов эксперимента и отслеживания прогресса эволюции с течением времени.

Измерения пригодности

ИзмерениеВесОписаниеКак измеряется
response_relevance0.30Насколько релевантны ответы агента запросам пользователяСкоринг LLM-как-судья
task_completion0.25Доля успешно завершённых задачДоля успешных вызовов инструментов
response_latency0.15Время от сообщения пользователя до первого токена ответаНа основе перцентилей (p50, p95)
token_efficiency0.10Токенов на успешную задачуЧем ниже, тем лучше
memory_precision0.10Релевантность вспомненных воспоминанийСкоринг релевантности вспоминания
user_satisfaction0.10Явные сигналы обратной связи пользователяЛайки/дизлайки, исправления

Составной балл

Составной балл пригодности -- это взвешенная сумма:

fitness = sum(dimension_score * dimension_weight)

Каждое измерение нормализуется в диапазон 0.0--1.0 перед взвешиванием. Составной балл также находится в диапазоне 0.0--1.0, где выше -- лучше.

Конфигурация пригодности

toml
[self_evolution.fitness]
evaluation_window_hours = 24       # агрегирование метрик за это окно
min_sessions_for_score = 10        # минимум 10 сессий для валидного балла

[self_evolution.fitness.weights]
response_relevance = 0.30
task_completion = 0.25
response_latency = 0.15
token_efficiency = 0.10
memory_precision = 0.10
user_satisfaction = 0.10

[self_evolution.fitness.thresholds]
minimum_acceptable = 0.50          # пригодность ниже запускает оповещение
regression_delta = 0.05            # падение пригодности > 5% запускает откат

Справочник конфигурации пригодности

ПолеТипПо умолчаниюОписание
evaluation_window_hoursu6424Временное окно для агрегирования метрик пригодности
min_sessions_for_scoreusize10Минимум сессий для вычисления валидного балла
weights.*f64(см. таблицу выше)Вес для каждого измерения пригодности (сумма должна быть 1.0)
thresholds.minimum_acceptablef640.50Порог оповещения при низкой пригодности
thresholds.regression_deltaf640.05Максимальное падение пригодности до автоматического отката

Команды CLI

bash
# Список активных экспериментов
prx evolution experiments --status running

# Просмотр конкретного эксперимента
prx evolution experiments --id <experiment_id>

# Просмотр результатов эксперимента с разбивкой пригодности
prx evolution experiments --id <experiment_id> --details

# Отмена запущенного эксперимента (возврат к контрольному)
prx evolution experiments cancel <experiment_id>

# Просмотр текущего балла пригодности
prx evolution fitness

# Просмотр истории пригодности
prx evolution fitness --history --last 30d

# Просмотр разбивки пригодности по измерениям
prx evolution fitness --breakdown

Пример вывода пригодности

Current Fitness Score: 0.74

Dimension            Score   Weight  Contribution
response_relevance   0.82    0.30    0.246
task_completion      0.78    0.25    0.195
response_latency     0.69    0.15    0.104
token_efficiency     0.65    0.10    0.065
memory_precision     0.71    0.10    0.071
user_satisfaction    0.60    0.10    0.060

Trend (last 7 days): +0.03 (improving)

Примеры экспериментов

Оптимизация промпта L2

Типичный эксперимент L2 тестирует изменение системного промпта:

  • Контроль: текущий системный промпт (320 токенов)
  • Эксперимент: уточнённый системный промпт (272 токена, на 15% короче)
  • Гипотеза: более короткий промпт освобождает контекстное окно, улучшая релевантность ответов
  • Длительность: 7 дней, 100 сессий на вариант
  • Результат: пригодность эксперимента 0.75 vs контроля 0.72 (p = 0.03), эксперимент продвинут

Стратегическое изменение L3

Эксперимент L3 тестирует изменение политики маршрутизации:

  • Контроль: направлять все задачи кодирования на Claude Opus
  • Эксперимент: направлять простые задачи кодирования на Claude Sonnet, сложные на Opus
  • Гипотеза: экономичная маршрутизация без потери качества
  • Длительность: 14 дней, 200 сессий на вариант
  • Результат: пригодность эксперимента 0.73 vs контроля 0.74 (p = 0.42), неопределённо -- эксперимент продлён

Статистические методы

Система экспериментов использует следующие статистические методы:

  • Двухвыборочный t-тест для сравнения средних баллов пригодности между вариантами
  • U-тест Манна--Уитни как непараметрическая альтернатива при скошенных распределениях пригодности
  • Поправка Бонферрони при одновременном сравнении нескольких измерений пригодности
  • Секвенциальный анализ с расходованием альфа для возможности ранней остановки при явно значимых результатах

Ограничения

  • Эксперименты требуют достаточного объёма сессий; развёртывания с малым трафиком могут потребовать недель для достижения значимости
  • Сигналы удовлетворённости пользователей зависят от явной обратной связи, которая может быть разреженной
  • Скоринг LLM-как-судья для релевантности ответов добавляет задержку и стоимость к конвейеру оценки
  • Только один эксперимент может проводиться на уровень эволюции одновременно для избежания смешения
  • Баллы пригодности относительны к конкретному развёртыванию; они не сравнимы между разными экземплярами PRX

Связанные страницы

Released under the Apache-2.0 License.