Я, как действующий юрист, решил заняться разработкой ИИ-ассистента по законодательству РК — к сегодняшнему дню на это ушло около двух месяцев. Основная задача ассистента — поиск норм в нормативных правовых актах (далее — НПА) и указание статей, пунктов и подпунктов, содержащих ответ на поставленный вопрос.
В первую очередь я полностью расписал порядок своей работы: как я ищу ответ на вопрос. Получилось восемь пунктов — разбор самого вопроса, поиск прямо и косвенно подходящих НПА, отбор подходящей нормы, размышление и подготовка ответа. На основе этого порядка я разработал стандарт «поиска и отбора», который лёг в основу узлов «поиска и отбора» и подготовки НПА для векторной базы данных (подробнее ниже).
Во вторую очередь я всегда читаю статьи уважаемых юристов — преподавателей КазГЮА, в котором учился в 2000–2004 годах, — чтобы понять ход их мысли и применять его в своей работе. Я расписал свою логику размышления, собрал статьи Диденко А.Г., Сулейменова М.К., Басина Ю.Г., Карагусова Ф.С. в открытом доступе и вывел из них правила. Вместе с моими получилось три десятка; в стандарт «Юрист» вошли 15 — о том, как искать норму и как отвечать. Но не всё удалось перенести в ИИ: часть размышлений свойственна только человеку, а часть создавала галлюцинации — ИИ начинал брать сведения вне векторной базы (например, аналогию права и аналогию закона). Всё, что требует юридической оценки, — достраивание из общих начал, оценочные понятия вроде «разумно» и «добросовестно», — отклонено сознательно. Вместо этого ассистент честно признаётся, что не нашёл подходящей нормы или нашёл нормы только на часть вопроса.
Стандарт «Юрист» лёг в основу узлов «поиска и отбора» и основной модели — «мозга» ассистента.
1. Концепцию продукта готовил с помощью трёх ИИ (GPT, Gemini, Claude). Каждый внёс свою лепту: выбор инструментов, поиск документации, проверка гипотез.
2. Разработка шла в трёх направлениях, иногда одновременно, иногда по очереди — в зависимости от того, что оказывалось узким горлышком.
2.1. Подготовка НПА. Нельзя «залить» НПА в векторную базу как есть (docx, pdf, html): акты содержат много «шума», который мешает поиску, — особенно подзаконные, у которых сложнее определить структуру. Для каждого вида актов написана своя программа очистки: она снимает шум — шапки, подписи, служебные пометки, перечни изменений, — режет акт по статьям и пунктам и ставит на каждый кусок точную метку: акт, редакция, статья, пункт. Именно эта метка потом позволяет ассистенту сослаться на норму и дать ссылку на первоисточник. На момент публикации, в сентябре 2026 года, в базе был 3 791 документ: 23 кодекса, 16 конституционных законов, 248 законов, 205 нормативных постановлений Верховного Суда, Конституционного Суда и Конституционного Совета, 104 указа Президента и 3 195 подзаконных актов — всего около 425 миллионов знаков. Отдельным набором — право МФЦА: 54 регламента и правила МФЦА (AIFC Regulations and Rules), 10 актов Казахстана о центре и 7 документов AIX; тексты английские, ответ приходит по-русски с указанием статьи и ссылкой на неё на портале АФСА.
2.2. Узлы «поиска и отбора». Это блоки кода (Python) и «лёгкие» модели ИИ с короткими промптами под конкретные задачи. Задача узлов — подготовительная: найти в векторной базе подходящие нормы и отдать их основной модели.
2.3. Основная модель — «мозг» ассистента. Тяжёлая модель, способная удержать сложный промпт и входящие нормы. Промпт — четыре десятка нумерованных правил: стандарт «Юрист», логика размышления, структура ответа и ограничения для минимизации галлюцинаций.
2.4. Доставка ответа. Оформление ответа и ссылки на первоисточник строит отдельный слой, а не модель. Модель за оформление не отвечает, и это тоже снижает число ошибок: чем меньше задач у одного промпта, тем реже он их путает.
В результате ассистент состоит из 39 узлов и 43 связей, из них 9 — вызовы моделей ИИ.
1. Достоверным я считаю ответ, если: каждая названная норма существует в базе, и её пересказ совпадает с текстом акта — число, срок, круг лиц, условие; адрес нормы точен — акт, редакция, статья, пункт; ответ отвечает на поставленный вопрос, а не на соседний; в нём нет ничего сверх найденных норм — ни «общих принципов», ни аналогий; а если нормы в базе нет, ассистент так и говорит.
2. Замеры ответов делает цифровой судья, и их у меня два, от разных разработчиков, замеряют параллельно. Цифровой судья — это набор кодов и «лёгкая» модель, которая проверяет ответ по существу и на выдумки и сверяет каждую названную норму с текстом акта в базе. На настройку судьи ушло много времени: первые версии врали в сторону «ассистент плохой» — обрезали ответ, считали дефектом правильное поведение. На одних и тех же ответах менялся только судья — и оценка расходилась вдвое. Пока не убедился, что судье можно верить, его показания в работу не шли.
3. Один судья систематически слеп в свою сторону. На 111 сохранённых ответах один судья признаёт годными 94–96, другой — 75–79. Разбор расхождений вручную, с текстом нормы перед глазами, показал: настоящих ошибок ассистента три, ложных обвинений — тридцать две. Один пропускает, другой наговаривает, и поодиночке каждый даёт неверную картину. Поэтому в работу идёт не оценка, а список расхождений между двумя судьями: час такого разбора приносит больше настоящих дефектов, чем день работы с одним судьёй.
4. Научился мерить, какой этап ошибся. Сверка каждой названной нормы с текстом акта показала: в большинстве промахов верная норма уже лежала перед моделью, и она её переврала — не то число, не тот срок, содержание соседней статьи, расширенное толкование. Лишь в меньшинстве случаев нормы у модели не было, и она назвала её по памяти. До этого замера я чинил поиск; после него стало видно, что главная потеря — в отвечающей модели.
5. По результатам замеров судьи и моей контрольной проверки достоверность росла: начал с 50 % и довёл до коридора 82–86 % годных ответов (на сегодня — 84 %, 93 из 111). Работа продолжается, цель — 90–95 %.
За два месяца я прошёл пять этапов принятия ИИ:
1. Восхищение — ИИ делал то, чего я не знал и не мог знать: поднимал сервер, писал код, очень быстро проверял гипотезы, обрабатывал большие объёмы данных.
2. Недоверие — ИИ правдоподобно врал и выдумывал во всём и честно в этом признавался; приходилось переспрашивать один вопрос несколько раз, пока я не начал понимать, как он пришёл к выводу.
3. Разочарование — когда начались правовые вопросы, даже с прямым указанием готовить ответ только из векторной базы ИИ умудрялся добавлять от себя.
4. Понимание — пришло не сразу, только через многократные проверки гипотез и измерение результатов. Научился мерить, какой именно этап допустил ошибку: узлы «поиска и отбора» или основная модель.
5. Принятие — начал корректно формулировать запрос к ИИ, развёрнуто и структурно, с моими ожиданиями, и замерять результат проверенными инструментами с заранее определёнными порогами.