Тренировка агента
Лайки/дизлайки, training examples, retrieval по embeddings (OpenRouter), session-critique, ручная коррекция.
Тренировка агента
«Промпт + база знаний» хорошо работает на первой версии, но со временем у каждого агента накапливается знание из реальных диалогов — какие вопросы посетители задают, где бот отвечает плохо, какие фразы лучше переформулировать. 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 (Phase 3)
Когда посетитель пишет в чат, сервер:
- Считает embedding его сообщения через OpenRouter
text-embedding-3-small(если естьOPENROUTER_API_KEYв env). - Делает kNN top-3 по
agent_training_examplesэтого агента — находит похожие прошлые вопросы. - Подмешивает найденные пары в системный промпт под блоком «Похожие примеры из тренировки».
- LLM получает контекст «вот так мы отвечали раньше на похожие вопросы» — и опирается на них.
Это активное применение уроков, а не пассивное накопление. Без OPENROUTER_API_KEY retrieval-блок просто не подмешивается — агент работает на обычном промпте + базе.
Session-critique
После завершения долгой сессии (≥ N сообщений) запускается фоновый job, который:
- Берёт всю переписку.
- Прогоняет через специального агента-аудитора.
- Получает на выходе 1-2 предлагаемых training-example'а (что было упущено, что можно улучшить).
- Складывает их в очередь на ручной аппрув — в админке.
Это идея «компостирования» опыта: реальные диалоги превращаются в улучшения промпта без вашего ручного разбора.
Аудитор — это обычный Framix-агент (
AUDIT_AGENT_ID/AUDIT_AGENT_API_KEYв env). Его расход токенов идёт на баланс владельца того аккаунта, чей email указан приnpm run audit-agent:setup. Если эти env-переменные не заданы — session-critique не работает (всё остальное в системе остаётся).
Где это в админке
/account/agents/<id> → вкладка «Тренировка»:
- Examples — список training examples этого агента (поиск, фильтры, импорт/экспорт).
- Pending critique — предлагаемые аудитором пары, ожидающие аппрува.
- Feedback — лайки/дизлайки последних сообщений (фильтр «только дизлайки»).
Что хранится
| Таблица | Что |
|---|---|
agent_training_examples | Примеры user→assistant с embedding'ом |
agent_session_critique | Очередь session-critique (pending/approved/rejected) |
ai_message_feedback | Лайки/дизлайки конкретных сообщений |
Стоимость
- Embedding — порядка ~$0.00002 за сообщение посетителя на
text-embedding-3-small. Это копейки даже на больших объёмах. - Session-critique — обычный диалог с агентом-аудитором, расход зависит от длины сессии. Списывается с баланса юзера, чей
AUDIT_AGENT_IDзадан в env (по умолчанию — администратора инсталляции). - Retrieval-block в основном чате — добавляет ~200-500 input-токенов на запрос. С учётом prompt cache — почти бесплатно после первого раза.