Использованные сокращения:
ИИ – искусственный интеллект.
БЯМ, она же LLM – большая языковая модель
LLM, она же БЯМ – large language model
ПО – программное обеспечение
ОЗУ – оперативная память компьютера.
SSD – solid state drive, твердотельный накопитель, более быстрая альтернатива жестким дискам
Мотивы
На создание данной обработки меня подтолкнуло прохождение интенсива по 1С от Университета Зерокодер. Идея использовать БЯМ (ИИ в обычной терминологии) для генерации программного кода с минимальным участием программиста невероятно притягательна. Возможно, когда-нибудь это станет признаком следующего поколения языков программирования. Но если для широко распространенных языков программирования технология уже работает довольно неплохо, то с 1С ситуация пока не так хороша. Причина в обучении моделей - материалов для обучения 1С объективно доступно меньше. Язык 1С не так широко распространен в мире, программисты 1С в основном используют русский язык. В итоге, на аналогичном курсе университета с использованием языка Python использовался реально сгенерированный ИИ программный код. На курсе по 1С создатели замахнулись только на создание ИИ описаний ресторанных блюд.
В обоих курсах в качестве ИИ использовался ChatGPT от компании OpenAI, чьи модели обладают несомненными преимуществами. На данный момент лидерство ChatGPT в генерации программного кода вряд ли может быть оспорено. Обидно, но в генерации кода 1С ведущие российские модели YandexGPT и GigaChat работают хуже, чем ChatGPT. Хотя казалось бы, отечественные модели должны лучше работать с русским языком, российским ПО и тд. Однако, ChatGPT имеет существенные недостатки для обычного пользователя из РФ – плату за использование продвинутых моделей и запрет на доступ из РФ (API работает только через прокси-посредников). Это дополнительно повышает стоимость использования, растут риски в глазах бизнеса. Приходится искать альтернативы, не имеющие подобных недостатков. Здесь радует, что ситуация в отрасли меняется в лучшую сторону прямо на глазах – если полгода назад альтернатив ChatGPT для мира 1С я не находил в принципе, то сейчас они появляются все быстрее и быстрее. Новые модели выходят буквально каждую неделю. Более того, выходят открытые бесплатные модели, которые желающий вполне может запускать и использовать прямо на своем компьютере. Другими словами, для использования таких моделей не нужны и не используются никакие внешние сервисы. Конечно, надо принимать во внимание, что характеристики компьютера должны соответствовать предъявляемым требованиям. Для генерации кода на 1С простые и маленькие версии моделей вряд ли подойдут, результат их работы скорее разочарует. А серьезная большая модель на слабом компьютере либо вообще не запустится, либо будет работать неприемлемо медленно. Самым критичным параметром компьютера является размер ОЗУ. Для ускорения работы весомым плюсом станет наличие видеокарты от Nvidia последних поколений. Мои рекомендации по результатам проведенных лично тестов – ОЗУ от 32 Гб и видеокарта от Nvidia поколения 3000 или 4000 (скоро ожидается анонс видеокарт поколения 5000). Для ускорения запуска модели рекомендуется использовать SSD. Но прогресс неумолимо идет вперед, и к счастью, требования к компьютеру для запуска моделей ИИ постепенно снижаются.
Бизнес, в свою очередь, может использовать свои собственные серверы. Плюсом здесь будет уменьшение рисков потери конфиденциальных данных и вывод производительности на уровни, недоступные персональным компьютерам. Это может быть необходимым для использования ИИ в многопользовательской среде.
Данная обработка демонстрирует использование ИИ из 1С в варианте локальной БЯМ, запускаемой на компьютере пользователя.
Использованное стороннее ПО
Для запуска локальной модели ИИ используется KoboldCPP. Из аналогичных продуктов я выбрал его за возможность использования видеокарт Nvidia для ускорения работы и использования более объемных моделей за счет расширения доступной оперативной памяти. При ОЗУ в 64 Гб и видеокарте с 12 Гб видеопамяти получается запускать модели ИИ размером в 70 Гб, которые показывают очень неплохие результаты. Разумеется, скорость работы будет сильно падать с увеличением размера модели, мгновенных ответов от больших моделей ждать точно не стоит.
KoboldCPP имеет удобный веб-интерфейс для общения и настройки. Используются модели ИИ в формате файлов c расширением GGUF.
https://koboldai.com/Koboldcpp/
Ссылка на скачивание с GitHub - https://github.com/LostRuins/koboldcpp/releases
Пример командной строки запуска KoboldCPP на компьютере с видеокартой, имеющей 12 Гб видеопамяти, из которой используются рекомендованные Max – 1 = 11 Гб. contextsize 4096 – максимальный размер контекста запроса в токенах, с которым может работать модель:
C:\Kobold\koboldcpp.exe --model C:\AIModels\t-pro-it-1.0-q8_0.gguf --usecublas --gpulayers 11 --contextsize 4096
Модель ИИ
В качестве LLM я использовал новую модель от Т-Банка, опубликованную буквально несколько дней назад. Данная модель основана на Qwen от китайской компании Алибаба, дополнительно обучена специалистами Т-Банка и показала неплохие результаты в моих тестах. Модели от Т-Банка доступны на https://huggingface.co, ссылки для скачивания в статье ниже. Из других испытанных мною неплохие результаты в генерации кода 1С показали модели DeepSeeker и Qwen, также доступные на Huggingface.
Описание кода
Код для обращения к модели ИИ достаточно компактен и занимает не более страницы текста. Для передачи запроса и получения ответа используется API KoboldCPP, доступный по HTTP по адресу Localhost:5001. Код функции из приложенной обработки приведен на скриншоте ниже.
Результаты тестирования
Тестирование проводилось с помощью приложенной обработки на различных запросах по коду 1С и не только. Для запуска обработки подойдет пустая или любая конфигурация 1С 8.3, весь код находится в самой обработке. Я задавал модели различные каверзные вопросы, на которые не смог получить адекватный ответ от других моделей (исключая ChatGPT, он ответил наилучшим образом и выступал в качестве эталона). Список вопросов у меня постоянно пополняется, ниже приведены примеры ответов на некоторые из них. Вывод по результатам тестирования – ответы не идеальны, но в целом модель ИИ от Т-Банка тестирование выдержала, для задач в области программирования на 1С вполне может использоваться.
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.10.383