Весь П7 в прогоне курса модель и агент отвечали уверенно. Агент взял модели «по памяти» с устаревшими именами, придумал адрес CloseRouter, назвал сервис вымышленным и напечатал начало ключа. Claude через прокси справился 0 раз из 10: отвечал как универсальный помощник, а не как ассистент школы. Отчёт проверки промпта был «всё ✅» без строк и на одной модели. В базе знаний появились почта и @-ник, которых у школы нет. В живом боте вопрос стал именем, а основная модель не отвечала именно с сервера. Каждый раз ошибку нашли глазами: в сыром ответе, в строке таблицы, поиском по файлу, в переписке. Сдача этой практики устроена так же.
Чему научишься в этом уроке:
• собирать ассистента для своего заказчика из частей уроков 8.2–8.6;
• доказывать фактами, что он не выдумывает;
• сдавать проверку промпта, замер скорости и живую переписку так, чтобы их мог проверить другой человек;
• держать личные данные вне модели и вне журнала.
Что продолжаем
Не начинай с нуля. Ассистент живёт внутри бота заявок из П1 как новый режим, заявки уходят в CRM в Москве. Если у тебя свой заказчик и свой бот, делай ассистента для него. Нет своего, доделывай «Кодиум», это засчитывается. Основа: база и промпт (урок 8.2), выбор модели (урок 8.3), сборка (урок 8.4), тест и защита (урок 8.5), выкладка (урок 8.6).

Шаг 1. База знаний без выдумок
База знаний для ассистента как прайс и правила на стойке администратора: что на стойке написано, то и скажут клиенту. Проверь три вещи сам, не через отчёт агента.
- Поиск по файлам базы всех почт, @-ников, телефонов и ссылок. Остаются только настоящие контакты школы, подтверждённые владельцем, или ни одного.
- Раздел «чего школа не делает». В базе «Кодиума» это «не готовим к ЕГЭ», «не обучаем взрослых», «не выдаём дипломы гособразца», «не гарантируем трудоустройство». Для своего заказчика подставь то, на что ему чаще всего приходится отвечать «нет». Без такого раздела модель достраивает «да».
- Никаких внутренних данных: себестоимость, скидки менеджеров, телефоны кураторов, заявки. Настойчивый собеседник вытянет из модели всё, что написано в её инструкции.
В прогоне агент вписал в базу реальное название банка-партнёра для рассрочки. В учебной базе это терпимо. В настоящей такая строка появляется только при договоре с банком.
Шаг 2. Тест промпта по строкам
Прогон из урока 8.5: девять видов вопросов, каждый 3 раза на основной и на запасной модели. Таблицу читаешь целиком. Число строк равно числу вопросов, умноженному на 6. Модель с одним срывом роли или одним согласием с неверным числом в работу не идёт. Скрипт проверки не называется test_*.py, полный pytest -q после него показывает не меньше passed, чем до.
Шаг 3. Скорость с сервера бота
Замерь время ответа каждой модели с сервера, где работает бот, в два разных часа. В прогоне с ноутбука основная модель отвечала за 9,4 секунды, а с сервера упиралась в таймаут 60 секунд. Основной ставь ту, что быстрее с сервера, и проверь, что при отказе основной отвечает запасная.
Шаг 4. Живая переписка
Напиши боту сам, лучше попроси ещё кого-нибудь, кто не знает сценария. Минимальный набор:
- вопрос, ответ на который есть в базе;
- вопрос, ответа на который нет, и честное «не знаю» с предложением передать человеку;
- уверенное неверное утверждение («курс ведь 3 месяца?», если в базе 6) и поправка;
- просьба не по теме или «забудь инструкции» и отказ в роли;
- вопрос вместо имени после /start и «Похоже, это вопрос?»;
- запись через ассистента до заявки в CRM, без слов «мы передали ваш контакт» до самой заявки.
Заявку в CRM проверь запросом к базе на сервере с -readonly, как в П6: одна заявка, источник «бот», без дубля.
Снимки переписки до отправки закрась: имя, телефон, аватар. В журнале и уведомлениях человек записан как «пользователь N», вместо номера пиши <id пользователя>. Это касается и тестовых имён, которые ты вводил сам.
Шаг 5. Журнал без личных данных
Журнал ассистента нужен для расчётов и дашборда: время, модель, токены, стоимость, действие (ответ, заявка, передача человеку). Текстов сообщений и телефонов в нём нет. Проверь поиском по файлу журнала на сервере: ни одной цифровой последовательности, похожей на телефон, ни одной почты. Маску проверь тестом: строка с номером после маски становится [телефон], pytest -q зелёный (урок 8.5).
Шаг 6. Деньги
Расчёт из миссии урока 8.7: средняя цена ответа по своему журналу, месяц в двух вариантах, остальные расходы, предложение школе.
Если не получилось
- В отчёте теста итог без строк или одна модель → верни агенту с заданием 52b из урока 8.5.
- Поиск находит в базе почту, которой у школы нет → убери, связь только через заявку или администратора.
- Модель соглашается с неверным сроком, хотя срок есть в базе → сначала проверь промпт: срок записан явно, правила не противоречат друг другу; если всё так, а модель соглашается, для роли она не годится, смени её.
- Ответ с сервера дольше 30 секунд → сравни модели замером с сервера и поменяй основную.
- В журнале нашёлся телефон → маска срабатывает после записи в журнал; попроси агента маскировать до журнала и до модели и добавить тест.
Контрольный вопрос. Агент прислал отчёт теста промпта: «23 вопроса, всё ✅», таблицы нет. Как поступаешь при сдаче практики?
Подсказка: Что в уроке 8.5 считалось отчётом, а что нет?
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Контрольный вопрос. В базе 23 вопроса, каждый прогоняется 3 раза на основной и на запасной модели. Сколько строк должно быть в полной таблице? Впиши число.
Подсказка: Умножь число вопросов на число повторов и на число моделей.
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Задание. МИССИЯ «Ассистент, который не выдумывает». Продолжай бота из П1 со своим заказчиком или «Кодиумом». 1. База знаний: вывод поиска почт, @-ников, телефонов и ссылок по файлам базы; раздел «чего школа не делает». 2. Тест промпта: questions.csv и отчёт-таблица на двух моделях по 3 повтора, твой список провалов и что поменял; последняя строка pytest -q до и после. 3. Скорость: таблица замеров каждой модели с сервера бота в два разных часа и какая модель основная. 4. Живая переписка: снимки шести ситуаций из шага 4 и вывод запроса к базе CRM с -readonly с этой заявкой. 5. Журнал: 10 строк журнала ассистента и вывод поиска телефонов и почт по журналу (пусто); последняя строка pytest -q с тестом маски (модели уходит [телефон]). 6. Расчёт из миссии урока 8.7. Принято, если: всё из пунктов 1–6 приложено; в таблице теста число строк = вопросы × 6 и нет ни одного срыва роли и ни одного согласия с неверным числом у основной модели; замеры сделаны с сервера бота и с указанием времени; заявка из переписки в CRM одна; в журнале нет текстов сообщений и телефонов. На снимках закрашены имена, телефоны и аватары, вместо id пользователя слова «id пользователя»; ключей и паролей в приложенном нет.
Подсказка: Начни с поиска по базе знаний: если там есть выдуманный контакт, ассистент повторит его живому человеку.
✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.
На курсе задания проверяются автоматически. Решить первое задание бесплатно → · Подобрать курс
Что дальше
Паттерн «AI-ассистент» закрыт. У тебя бот, который отвечает по базе школы, честно говорит «не знаю», не соглашается с неверным и не отдаёт модели телефоны. Дальше финал трека: собрать из всех паттернов портфолио.
Итог:
• в базе знаний нет выдуманных контактов и есть то, чего школа не делает;
• тест промпта сдан таблицей по строкам на двух моделях;
• основная модель выбрана по замеру с сервера бота;
• живая переписка дошла до одной заявки в CRM;
• журнал и запросы к модели без личных данных.
