AI-консультант, который знает ваши слабые места

Большинство AI-чатботов в образовании — это приукрашенные поисковики с дружелюбной интонацией. Клиент хотел для своей платформы по теории вождения чего-то иного: ассистента, который знает, где конкретный пользователь буксует, может вытащить точное правило, в котором тот ошибся, проверяет, есть ли у него действующая подписка, и обрабатывает голосовые и фото дорожных ситуаций — всё это внутри переписки в Telegram-боте. Не обобщённый «спроси меня о чём угодно», а консультант по учёбе с реальным контекстом о собеседнике.

Стек

  • Claude
  • OpenAI
  • FastAPI
  • PostgreSQL

инструменты, опирающиеся на данные пользователя

Мы построили это на Claude Sonnet по паттерну tool-use — модель не просто генерирует текст, у неё есть набор функций для вызова: посмотреть прогресс пользователя и слабые темы, достать конкретные вопросы, на которые он ответил неверно, поискать в базе ПДД релевантные правила, проверить статус подписки. Когда пользователь спрашивает «Почему я постоянно проваливаю вопросы про перекрёстки?», ассистент не гадает — он вызывает инструмент прогресса, видит, что у пользователя 40% по приоритету проезда на перекрёстках, поднимает три вопроса, которые тот чаще всего пропускает, и объясняет лежащее в основе правило со ссылкой на конкретный пункт ПДД. Эта контекстная глубина и отличает решение от обёртки над ChatGPT.

голос, изображения и транскрипция

Голосовой и фото-ввод добавили ещё одно измерение. Пользователи могут отправить голосовое с вопросом (на этом рынке это часто — печатать на узбекском с телефона неудобно), и система транскрибирует его через OpenAI Whisper, прежде чем передать Claude. Они также могут сфотографировать дорожную ситуацию — запутанный перекрёсток, незнакомый знак, — и ассистент проанализирует изображение в контексте. Голосовой пайплайн потребовал аккуратной обработки: качество транскрипции Whisper резко проседает на фоновом шуме, региональных акцентах и смешанной русско-узбекской речи. Мы добавили скоринг уверенности по результату транскрипции, и когда он падает ниже порога, бот вежливо отвечает: «Не совсем расслышал — напишите текстом или попробуйте ещё раз в более тихом месте», а не галлюцинирует ответ на неверно услышанный вопрос.

ограждения промпта и дисциплина инструментов

Самым сложным инженерным вызовом стал prompt engineering для дисциплины tool-use. Claude с инструментами мощен, но склонен вызывать инструменты спекулятивно — тянуть данные, которые ему не нужны, или хуже — выдумывать вызовы инструментов, не соответствующие схеме. Мы прошли через десятки версий системного промпта, чтобы добиться стабильного поведения: модель должна вызывать инструмент только тогда, когда вопрос пользователя действительно требует этих данных, никогда не ссылаться на информацию, которую она не получила, и строго оставаться в рамках темы ПДД и подготовки к экзамену. Drift был реальной проблемой на старте — пользователи просили у бота советы по жизни или пытались заставить его писать стихи, и без жёстких границ он с радостью соглашался, сжигая API-кредиты на разговоры, никак не связанные с продуктом. Финальный системный промпт — это тщательно структурированный документ с явными поведенческими правилами, примерами взаимодействий и жёсткими ограничениями на тематический охват.

стоимость, доступ и бюджеты токенов

Управление расходами было напрямую связано с моделью подписки. Каждый AI-разговор стоит реальных денег — вызовы Claude API плюс транскрипция Whisper для голосовых. Нельзя позволить неподписавшимся пользователям накручивать счёт. Ассистент проверяет статус подписки до того, как вступать в полноценный разговор: бесплатные пользователи получают ограниченное число AI-взаимодействий в день, платные — безлимит. Проверка происходит на уровне инструмента, а не только во фронтенде, поэтому обойти её прямыми вызовами API нельзя. Мы также реализовали бюджеты токенов на уровне разговора — если один разговор превышает порог (обычно это кто-то, кружащий вокруг одного и того же вопроса разными формулировками), бот аккуратно сворачивает диалог и предлагает посмотреть соответствующую тему в обучающем модуле.

результаты и куда ушли усилия

Результат — AI-ассистент, которому пользователи действительно доверяют в вопросах учёбы, потому что он говорит с опорой на их реальные данные, а не на обобщённые советы. Клиент сообщил, что пользователи, обращающиеся к AI-консультанту хотя бы трижды в неделю, показывают измеримо лучшие результаты на симуляциях экзамена, чем те, кто пользуется только банком вопросов. Честный урок: сама AI-модель — это, может быть, 20% работы. Остальные 80% — это оркестрация инструментов, ограждения промптов, фолбэки транскрипции и контроль расходов. Соединить вызов Claude API может кто угодно. Заставить его надёжно вести себя в продакшне с живыми пользователями, реальными деньгами и реальными последствиями — вот где живёт инженерия.