Тренировка агента

Лайки/дизлайки, training examples, retrieval по embeddings, ручная коррекция, автономное обучение.

Тренировка агента

«Промпт + база знаний» хорошо работает на первой версии, но со временем у каждого агента накапливается знание из реальных диалогов — какие вопросы посетители задают, где агент отвечает плохо, какие фразы лучше переформулировать. Framix позволяет это собирать и применять автоматически.

В системе три слоя обучения:

  1. Ручное — оператор перехватывает диалог, даёт правильный ответ; системе видно ground-truth.
  2. Через критику (session-critique) — агент-аудитор разбирает завершённую сессию и предлагает 1-2 эталонных пары для ручного аппрува.
  3. Автономное (opt-in) — Framix сам анализирует затихшие диалоги и извлекает уроки без вашего участия.

Ручное обучение

Лайки и дизлайки

В каждом сообщении агента посетителю показаны кнопки «👍 / 👎». Клики записываются в ai_message_feedback. В админке /account/agents/<id> → вкладка «Диалоги» видны дизлайки на конкретных ответах — можно открыть сессию, посмотреть, что агент ответил не так, и:

  • переписать системный промпт;
  • добавить пример в training set;
  • обновить базу знаний;
  • вручную ответить тому посетителю в режиме оператора.

Training examples

agent_training_examples — таблица «эталонных пар» вход→ответ.

ПолеОписание
userMessageЧто спросил посетитель (или паттерн вопроса).
assistantMessageКак должен ответить бот.
notesКонтекст, почему так.
embeddingВекторное представление userMessage (см. ниже).

Откуда они берутся:

  • Вручную в админке: открыли дизлайк-сессию → «Добавить пример».
  • Полуавтомат: через session-critique (отдельный шаг агента-аудитора, который читает завершённую сессию и предлагает 1-2 эталонных пары).
  • Автономно: через модуль автономного обучения (см. ниже).
  • Импорт из CSV для опытных пользователей.

Retrieval по embeddings

Когда посетитель пишет в чат, сервер:

  1. Считает embedding его сообщения через OpenRouter text-embedding-3-small (если есть OPENROUTER_API_KEY в env).
  2. Делает kNN top-3 по agent_training_examples этого агента — находит похожие прошлые вопросы.
  3. Подмешивает найденные пары в системный промпт под блоком «Похожие примеры из тренировки».
  4. LLM получает контекст «вот так мы отвечали раньше на похожие вопросы» — и опирается на них.

Это активное применение уроков, а не пассивное накопление. Без OPENROUTER_API_KEY retrieval-блок просто не подмешивается — агент работает на обычном промпте + базе.

Уроки, полученные через автономное обучение, также участвуют в retrieval. Positive-уроки («что привело к заявке») и failure-уроки («где клиент ушёл») рендерятся в подсказку агенту по-разному — чтобы он понимал, что воспроизводить, а чего избегать.

Session-critique (критика сессии)

После завершения долгой сессии (≥ N сообщений) запускается фоновый job, который:

  1. Берёт всю переписку.
  2. Прогоняет через специального агента-аудитора.
  3. Получает на выходе 1-2 предлагаемых training-example'а (что было упущено, что можно улучшить).
  4. Складывает их в очередь на ручной аппрув — в админке.

Это идея «компостирования» опыта: реальные диалоги превращаются в улучшения промпта без вашего ручного разбора.

Автономное обучение (opt-in)

Тумблер «Автономное обучение» в /account/agents/<id> → вкладка «Обучение». По умолчанию выключен — вы включаете его сознательно.

Когда включён, Framix каждые 15 минут обходит затихшие диалоги агента (нет новых сообщений 6+ часов, диалог моложе 7 дней) и классифицирует исход каждого:

ИсходЧто это
Конверсия (converted)Клиент оставил лид, сделал заказ или запись
Брошен (abandoned)Последнее сообщение — от агента, клиент замолчал, лида нет
Раздражение (frustrated)В диалоге зафиксированы сигналы злости/фрустрации или дизлайк
Непонимание (confused)Клиент повторял вопрос или путался
Упущенная эскалация (escalation_missed)Клиент просил человека, но оператор не подключился
Решено (resolved)Диалог закончился позитивно, без лида — норма
Шум (noise)Слишком короткий диалог без сигналов — пропускается

Для поучительных исходов (конверсия, провал, фрустрация, непонимание, упущенная эскалация) система вызывает LLM-разбор и пишет урок в тот же agent_training_examples. Если модель считает, что «урока здесь нет» — запись не создаётся (защита от мусора).

Что важно знать:

  • Расход — за счёт Framix (не за ваш счёт).
  • Лимит: до 50 LLM-разборов на агента в сутки и до 200 активных авто-уроков. Старые авто-уроки с низкой достоверностью деактивируются при переполнении.
  • Уроки строго на языке посетителя — если посетитель писал по-английски, урок на английском.
  • Ручные уроки оператора приоритетнее — если в сессии уже есть operator-урок, авто-урок для неё не создаётся.
  • Авто-уроки видны в списке уроков с бейджем источника (Авто-успех / Авто-провал) и полем confidence. Они редактируемы и удаляемы как обычные.

Почему результаты не сразу

Классификатор обрабатывает сессии, которые «затихли» 6+ часов назад. Если клиент только что завершил диалог — урок появится примерно через полдня.

Где это в админке

/account/agents/<id> → вкладка «Обучение»:

  • Уроки — список training examples этого агента (поиск, фильтры по источнику: Оператор / Критика / Авто-успех / Авто-провал, импорт/экспорт). Поле confidence и бейдж источника видны на каждой карточке.
  • Ожидают аппрува — предлагаемые аудитором пары (session-critique), ожидающие вашего одобрения.
  • Обратная связь — лайки/дизлайки последних сообщений (фильтр «только дизлайки»).
  • Тумблер «Автономное обучение» — включить/выключить авто-анализ затихших диалогов.

Что хранится

ТаблицаЧто
agent_training_examplesПримеры user→assistant с embedding'ом
agent_session_critiqueОчередь session-critique (pending/approved/rejected)
ai_message_feedbackЛайки/дизлайки конкретных сообщений

Стоимость

  • Embedding (FTS) — поиск похожих примеров идёт через Postgres full-text search. Бесплатно, без LLM-вызова.
  • Session-critique — LLM-разбор сессии идёт через дешёвую фоновую модель (deepseek-v4-flash по OpenRouter), расход зависит от длины сессии. Списывается с баланса владельца агента.
  • Автономное обучение — LLM-разборы идут за счёт Framix (не за ваш счёт). Виден в системной аналитике платформы.
  • Retrieval-block в основном чате — добавляет ~200-500 input-токенов на запрос. С учётом prompt cache — почти бесплатно после первого раза.

На этой странице