Внешняя обработка, внутри которой работает настоящий трансформер, посчитанный с нуля на встроенном языке. Ни внешних компонент, ни ONNX, ни Native API, ни единого HTTP-запроса наружу. Только Массив, БуферДвоичныхДанных, Соответствие и циклы.
Вы пишете вопрос в поле, нажимаете кнопку и смотрите, как 1С посимвольно собирает ответ. Прикладной пользы у обработки нет и не подразумевается: её работа - показать открытым кодом, как устроена языковая модель внутри. Урезанной версии чего-то платного здесь тоже нет, платной версии не существует: это всё, что есть, целиком и с исходниками.
Модель обучена на метаданных 1С и на вопрос про регистр накопления отвечает по делу. Но знает она сорок фраз, знаний о мире у неё нет, и ставить её в прод некуда. Что именно она не умеет - отдельным разделом ниже, до кнопки скачивания.
Как эта модель устроена внутри, откуда берутся веса и почему в трансформере нет ни одного условия - разобрано в статье Внутри LLM нет ни одного Если. Языковая модель целиком на встроенном языке 1С.
Что на экране
Одна форма, три кнопки, поле вопроса и поле температуры.
"Спросить" - полный ответ. Модель предсказывает один символ, подставляет его обратно на вход и предсказывает следующий, пока ответ не закончится. Под ответом отчёт: сколько символов получилось, сколько выполнено умножений, сколько это заняло секунд и какая вышла скорость. Живые прогоны с экрана:
что такое регистр сведений ? -> регистр сведений хранит значения по ключу и дате.
49 символов, 1 490 560 умножений, 13,2 секунды
что такое обработка ? -> обработка меняет данные базы по правилам.
41 символ, 1 227 520 умножений, 10,3 секунды
что такое регистр накопления -> регистр накопления хранит движения и итоги.
"Один символ" - один проход модели, ответ за пару секунд. Показывает вероятности всех 36 символов алфавита сразу, столбиком, с процентами и полосками. Здесь видно главное: модель не выбирает букву, она считает распределение по всему алфавиту, а выбор делает код снаружи.
"Что внутри" - алфавит целиком, разбор введённого текста в номера токенов и устройство модели цифрами. Показывает, где заканчиваются буквы: дальше для модели существуют только числа.
Поле "Температура" управляет тем самым выбором снаружи. При 0 ответ на один и тот же вопрос повторяется слово в слово, при значениях выше единицы текст начинает разъезжаться. Ставится прямо в форме, пересобирать ничего не нужно.
Что за модель считается
- 21 920 параметров: 2 слоя, 2 головы внимания, размерность вектора 32, контекст 96 символов, алфавит 36 символов;
- около 17 536 умножений уходит на один проход только на слои и выходной слой, плюс внимание по накопленному контексту. На ответ в полсотни символов набегает полтора миллиона - это и есть те секунды на экране;
- веса лежат макетом внутри обработки. Файл самодостаточный: качать модель отдельно, класть что-то рядом, прописывать пути не нужно;
- обучена на 40 парах вопрос-ответ про объекты 1С. Обучение шло снаружи, внутри 1С только вывод - платформа считает уже готовые веса.
Вторым файлом идёт та же обработка с моделью вчетверо крупнее, 76 608 параметров. Ответ тот же, а времени уходит 28 секунд вместо десяти. Она нужна не для работы, а чтобы рядом было видно, чем платят за размер модели.
Чего эта модель не может
Сказать это лучше до скачивания, чем после.
- Знаний о мире там нет физически. Двадцати двух тысяч параметров хватает ровно на то, чтобы запомнить сорок фраз про объекты 1С и подставлять их по началу вопроса;
- алфавит 36 символов. Цифр, латиницы, заглавных букв, "э" и "ё" модель не видит вовсе - их просто нет в её словаре;
- на вопрос вне обучения она отвечает бессмыслицей с той же уверенностью. Спросите про котлеты - получите набор слов про документы. Модель не умеет сказать "не знаю", продолжать последовательность она обязана всегда. Это не дефект сборки, это то, ради чего стенд и стоит запускать;
- это стенд для объяснения механики, а не инструмент. В прод его ставить некуда.
Если нужна работающая локальная модель под реальную задачу - классификация обращений, поиск похожей номенклатуры, извлечение сущностей - путь другой: ru-e5-small через ONNX Runtime во внешней компоненте. Тот же результат в сотни раз быстрее, но это уже не чистый BSL.
Совместимость и запуск
- Платформа 8.3.27.1606 и выше, режим управляемого приложения.
- Любая конфигурация. Обработка не обращается ни к одному прикладному объекту, ни к базе, ни к СУБД - она только считает арифметику в памяти.
- Ничего не отправляет наружу. Интернет не нужен, никаких сервисов и ключей, всё считает ваш компьютер.
- Запуск: "Файл" → "Открыть" → выбрать
.epf. Дальше вопрос в поле и кнопка. Ни настроек, ни установки, ни регистрации в базе.
Что в файле
Две внешние обработки: основная сборка на модели 21 920 параметров (отвечает за 7-13 секунд) и версия на модели 76 608 параметров для сравнения (около 28 секунд). Обе самодостаточны, веса внутри. Код открыт и читается в конфигураторе: вся логика движка лежит в модуле объекта, форма только зовёт его методы.
Проверено на следующих конфигурациях и релизах:
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.101.19
Вступайте в нашу телеграмм-группу Инфостарт