Узкая модель для юридических текстов: читает ИИ, считает код, человек на сомнительной линии

Три режима на одном документе: модель вытягивает структуру из прозы, детерминированный код проверяет геометрию, при расхождении контур не рисуется «уверенным», а строка уходит на человека. Соло-разработчику с узким бюджетом на эксперименты это полезный эталон: в агентном разборе документов дообучение под одну задачу часто выигрывает у тяжёлого промпта, если парсинг оставить модели, а арифметику и проверки вынести в код или rules IDE. Разбор метрик и проверок: кейс DeedReader.
LoRA на Qwen3-8B и цена итерации на Tinker
DeedReader advikdivekar извлекает из текста metes-and-bounds (юридическое описание границ участка) структурированные calls и строит участок на карте. Базовый Qwen/Qwen3-8B на том же промпте и тех же проверках давал 10% точных чтений, то есть 6 из 60 синтетических deed’ов. После LoRA (rank 32) через API Tinker на 2 300 training deeds, 3 эпохи, 429 шагов и около 2,6 млн токенов (loss только на answer tokens, не на текст документа) на свежей выборке 2 988 из 3 000, то есть 99,6%, с доверительным интервалом 95% CI 99,3–99,8%.
Модель отвечает только за чтение прозы в структуру; closure, площадь, конверсия единиц и отрисовка остаются plain, tested code. В IDE тот же приём: агент на парсинге, геометрия и инварианты в коде или rules, без просьбы к LLM «додумать» углы.
Финальный цикл обучения (2 300 deeds, 3 эпохи, около 16 минут) в таблице расходов оценивается в $1,15. Уже $0,17 на run с 1 000 training deeds даёт 99,4% exact на learning curve; весь проект на Tinker (бейзлайны, кривая, оценка) обошёлся около $3,80, включая evaluation $1,35 на 4 000+ deeds. Сравниваются цены training per million tokens: Qwen3-8B $0,44 против Qwen3.5-4B $0,737, аргумент в пользу 8B для этой задачи. Короткие прогоны по долларам удобнее одного заголовка про «почти 100%»: видно, где остановиться по бюджету.
Сабмит Hacktoberfest Open-Source AI Challenge, неделя 3: Slow and Steady. Малая open-weights модель и дешёвая итерация обучения вместо гонки за размером.
Пять проверок и статус NEEDS HUMAN REVIEW
Вместо bluffing интерфейс выставляет NEEDS HUMAN REVIEW: ответ не выглядит уверенным, пока не сойдутся пять независимых проверок (parse, closure с порядком 1:5 000, каждое число в своём предложении deed, landmarks привязаны к словам, плюс второй читатель: regex parser, не видевший модель, согласен по bearing, distance и curve).
При сбое показывают баннер и именуют проблемную линию; в демо «Simulate a misread» падают три проверки сразу. Для ошибок чтения цифр перебирают one-digit fix: в примере 103,2 становится 130,2. «Тихие» ошибки (неверно и без флага) с базовой модели: 5 из 60; после тюна на тех же 60: 0; на 3 000 fresh: 2 из 3 000 (0,07%), с оговоркой про эквивалентность единиц в генераторе.
Для пайплайна, где агент тянет PDF или сканы в структуру, явный статус «нужен человек на этой строке» лучше, чем уверенный полигон на карте.
Claude Code, формат ответа и локальный адаптер
При разработке advikdivekar использовал Claude Code как pair: план, оценка стоимости, тесты closure до подключения модели, отладка validator. Типичный AI-assisted dev: ассистент на рутине и проверках, пока зафиксирован контракт «модель читает / код считает».
Смена формата ответа сжала расход токенов: JSON на 547 токенов против построчного line-per-call на 145 (в 3,8 раза меньше), что бьёт по train, eval и inference cost. Для агентных схем вывода тот же ход на границе модели и валидатора.
Скачанный адаптер 369 MB; офлайн на MLX, 4-bit база Qwen3-8B: 150 из 150 deed’ов точно, median 7,5 с на deed на M3 Pro 18 GB без сети. Для чувствительных документов это аргумент за локальный адаптер после обучения, а не только против «большого облака».
Ограничения перед переносом в свой стек
Данные идут из синтетического генератора (сначала замкнутый полигон, потом текст в разных стилях: OCR-шум, archaic units, distractors). Real-deed accuracy unmeasured; следующий шаг: реальные записи. Baseline на 60 deeds сделан ради экономии; сравнение идёт paired на тех же 60 и отдельно на 3 000 fresh. Продукт позиционируется как drafting aid, не замена licensed surveyor; кривые в chord-form, deflection и station-offset пока not supported yet.
Копируя паттерн в контур разбора документов агентом, заложите синтетику, независимого reader, флаг human review и отказ рисовать ложную уверенность.
Источники
- advikdivekar — «A small, not-so-smart model went from 10% to 99.6% at reading property deeds for $1.15, and it says 'check this line' instead of bluffing» (Dev.to, публикация 25 октября 2026): Dev.to