Возможно, важнейшим навыком для аналитика 1С является хорошее знание возможностей как самой платформы, так и всего того, что с ней взаимодействует. В наше время все меняется очень быстро. Приходится вслед за героями Л. Кэррола "бежать изо всех сил". Большие языковые модели и технология GPT "прогремели" всего лишь считанные месяцы назад, но уже сейчас они начинают оказывать влияние на экосистему 1С. Здесь я постараюсь быстро ввести вас в курс дела.
История вопроса
Данная справка не претендует на исчерпывающую полноту. Если есть желание глубоко погрузиться в вопрос и нет проблем с английским языком, тогда лучше всего обратиться к собранию препринтов Arxiv. Я же расскажу максимально сжато только самое существенное.
Искусственные нейронные сети известны уже давно (в этом году исполнилось 80 лет). Их с большим успехом использовали и продолжают использовать для решения самых разных задач: распознавание образов, прогнозирование, управление и т.д.
Одну из таких задач следует выделить особо. Речь идет о распознавании естественного языка. Начиналось все с желания создать модель, которая сможет переводить с одного языка на другой. Казалось бы частная задача. Но достаточно быстро выяснилось, что нельзя добиться качественного перевода без того, чтобы научить модель понимать язык (что бы это ни значило). Это сразу "подняло планку", а также амбиции исследователей.
Было приложено немало усилий. Важной вехой явилось создание т.н. рекуррентных нейросетей или сетей с памятью. Дело в том, что нельзя переводить текст просто по словам, одно за другим. Порядок слов имеет большое значение. Поэтому были придуманы нейросети, которые "помнят" что там было два слова назад, три слова, и т.д. чуть ли не до начала абзаца. Надо сказать, что в свое время это был прорыв. Результаты работы языковых моделей довольно резко улучшились.
Но такого рода изощренные конструкции создали другое препятствие. На их основе нельзя было создавать по настоящему большие модели. То есть, создать-то было можно, но вот дождаться окончания их обучения становилось нереальным.
В 2017 году инженерами Google была предложена идея потрясающе простая, и, как потом выяснилось, столь же потрясающе эффективная. Вместо того, чтобы запоминать, что было сначала, а что потом, надо сразу пометить все слова в тексте порядковыми номерами. Так появилась технология языковой модели, которая называется трансформер. Эта технология дала возможность распараллелить процесс обучения и создать очень большие языковые модели.
И тут выяснилось, что "размер имеет значение". Большие языковые модели начали понимать. К вопросу о том, что такое "понимание" можно подходить с философской точки зрения. И тут мы гарантировано ни к чему не придем. А можно подойти с сугубо практических позиций. Если что-то может продолжить то, что мы начали, значит оно нас понимает. И, в частности, оно может отвечать на наши вопросы. Потому что всякий ответ есть ни что иное, как продолжение вопроса.
Что могут большие языковые модели
Думаю, вы уже наслышались о возможностях больших языковых моделей. Разбираясь со всем этим, полезно помнить, что в каком-то смысле эти модели являются чем-то вроде Т9 на стероидах. Качество ответа на ваш вопрос зависит от:
как много натрындели по этому поводу в интернете
насколько качественным был этот трындеж
что из него попало в обучающую выборку
Поэтому, не стоит удивляться тому, что большие языковые модели успешно сдают всевозможные экзамены. Им "скормили" соответствующие учебники. И это, заметим, самое простое действие. Учебник или научная статья - это уже сами по себе хорошо подготовленные данные. Сложнее с контентом из социальных сетей. Говорят, что на одной из предыдущих итераций по созданию языковых моделей OpenAI взяли все посты Reddit, отмеченные не менее чем тремя "звездочками", но в последующем отказались от такого механистического подхода.
От правильно подобранных данных для обучения зависит очень многое. В идеале, это должно быть много-много пар "вопрос-правильный ответ". В сети есть ресурс из которого можно извлекать такого рода пары в огромном количестве. Думаю, вы слышали-знаете про Stackoverflow. Именно оттуда была взята значительная часть данных для обучения больших языковых моделей. Как результат, современные большие языковые модели лучше всего умеют писать код. То есть, вообще-то они умеют много чего. Но написание кода получается наиболее качественно. Зачастую, этот код может быть сразу выполнен, без каких либо правок. А код на языке SQL выполняется почти всегда. И это неудивительно. Область применения SQL уже, чем у прочих языков программирования, а готовых данных для обучения едва ли не больше.
Обычно говорят, что большие языковые модели являются отличными помощниками для программистов. Но в случае с SQL они являются помощниками для кого угодно. В том числе и для тех, кто далек от программирования. Теперь любой может общаться с базами данных в режиме: "сказал, что тебе надо, получил, что тебе надо".
Что это значит для 1С
Теперь перейдем к 1С. Можно ли попросить большую языковую модель написать код на языке 1С:Предприятие? Можно. И оно даже что-то напишет. Оно вообще не умеет отказывать. Но результат будет близкий к плачевному. Дело в обучающей выборке. У OpenAI на русский язык приходится менее 1% от всего массива обучающих данных. По тем же причинам нет смысла просить составить запрос к базе данных на языке запросов 1С:Предприятие.
Изменится ли что-нибудь в ближайшем будущем? Вряд-ли. Даже если кто-то обучает большую языковую модель преимущественно на русском языке, откуда он возьмет хорошо подготовленные данные по языку запросов 1С в том же количестве, что есть по SQL?
Сказанное выше не является непреодолимым препятствием. Есть два пути решения проблемы. Во-первых, можно транслировать SQL в язык запросов 1С. Язык запросов 1С представляет собой диалект SQL. Довольно устаревший и со странностями, но все же диалект. Транслировать SQL в 1С не супер сложная задача. Кстати, обратный транслятор, из 1С в SQL прекрасно работает уже давным давно.
Во-вторых, можно перенести данные из базы 1С в обычную базу, например PostgreSQL или MySQL. И отрабатывать запросы на этой базе.
По какому-бы пути мы ни пошли, результат выполнения запроса может быть представлен пользователю в ответ на его вопрос, заданный на естественном языке. Насколько надежно будет это работать? Если задаться целью нащупать границы применения данной технологии, то мы их конечно найдем. Есть некоторое количество задач, которые не так-то просто решить через язык запросов. Есть задачи, которые просто формулируются, но решаются с трудом. Например "для каждого товара найди три последние продажи". Всегда можно найти то, что "ущучит" большую языковую модель. Но что с того?
Взглянем на все это с другой стороны. Как много практических, насущных задач может решить для пользователя данная технология? Какой процент от реальных запросов будет исполнен, а какой останется без ответа? Реальные вопросы пользователей преимущественно простые. Они не представляют проблемы для большой языковой модели. Но получить ответ на них обычным путем в типовых конфигурациях не так-то просто. Например, есть такой довольно простой тип запросов: "какой товар не продавался на прошлой неделе?" или "какой контрагент не брал товар в прошлом месяце?" Удивительно, но нигде в типовых конфигурациях 1С вы не найдете возможности для пользователя получить ответ на эти простые вопросы. В то же время, большая языковая модель с легкостью выдаст правильный текст запроса в ответ на вопросы подобного типа.
Заключение
Уже сейчас в 1С можно выходить на практические результаты от новой технологии больших языковых моделей. Главное, не заниматься поиском "низко висящих плодов", пытаясь получить от модели результат сразу на языке 1С. Организуйте работу по одному из двух предложенных сценариев и удивите пользователей совершенно необычным для них. Сказал, что надо, получил, что надо.
Какую методологию управления проектом выбрать на крупном внедрении системы 1С. Об этом вы можете узнать на бесплатном уроке от OTUS, где будут рассмотрены современные подходы к управлению проектами по внедрению систем 1С. Преподаватели расскажут какую технологию выбрать в каждом конкретном проекте. После занятия вы будете знать насколько применимы Agile-методики в управлении проектами внедрения 1С-систем и какую роль играет аналитик 1С в проектах, выполняемых с применением разных проектных технологий.
Все приводимые на занятии кейсы - опыт реальных крупных проектов автоматизации.
Комментарии (23)
Kahelman
06.06.2023 13:53+2Может хватит изобретать велосипед с костылями? SQL придумали чтобы экономисты не отвлекали разработчиков по поводу генерации разных отчетов.
Теперь нужны отдельные программисты что в составить запрос на SQL и давайте теперь напряжём АИ чтобы он нам на SQL переводил. Задача не решаемая в принципе так как наш язык достаточно не четкий. А запрос на SQL это реляционная алгебра которая не оперирует с нечеткими понятиями.
Так что возможно выбери всех сотрудников с зарплатой больше X.
Чат GPT и сгенерировать, только это проще руками написать.
И главный вопрос: откуда он структуру базы данных узнаёт? Может у вас сотрудники не в таблице employees хранятся а в sotrudniki.
Кстати была статья что успехи ChatGPT в сдаче тестов для юристов сильно преувеличены ….
exwill Автор
06.06.2023 13:53На главный вопрос есть главный ответ: вы структуру базы передаете вместе с вопросом пользователя.
Насчет того, что проще руками написать, встречный вопрос: кому проще? В статье я вам конкретный пример привожу. Как узнать, что не продавалось на прошлой неделе? Ну нету этого в типовых конфигурациях 1С. Просто нет и все. Что делать пользователю? Искать программиста? Готовить чемодан денег? А тут сказал, что тебе надо и получил, что тебе надо
vis_inet
06.06.2023 13:53Не совсем понял, можете пояснить, как именно модель сможет выбрать данные о непродаваемых товара?
exwill Автор
06.06.2023 13:53Модель дает вам текст запроса к базе данных. Запрос выполняется, вы получаете то, что просили. Например, список товаров, которые не продавались в какой-нибудь период времени
vis_inet
06.06.2023 13:53Для меня это звучит настолько невероятно...
exwill Автор
06.06.2023 13:53Можете "покрутить это в руках" https://t.me/testGPT1C
Это тестовая площадка, в первую очередь для специалистов. Чтобы они могли посмотреть что модель может и чего не может. А главное, почему не может.
На следующей неделе планирую открыть такое же для пользователей. Там не будет текстов запросов, зато будут новые функции
Kahelman
06.06.2023 13:53Я не специалист по 1С но запрос:
Список артикулов которые не продавались вообще
================
ВЫБРАТЬ СправочникТовары.артикул
ИЗ Справочник.Товары как СправочникТовары LEFT СОЕДИНЕНИЕ Документ.Продажа как ДокументПродажа
ПО СправочникТовары.ссылка = ДокументПродажа.Товар
ГДЕ ДокументПродажа.Товар IS NULL
================
С английским LEFT и NULL в русском тексте выглядит странно
exwill Автор
06.06.2023 13:53Лень было переводить. В 1С двуязычный синтаксис. Работает хоть на русском, хоть на английском, хоть на смеси
Kahelman
06.06.2023 13:53Пример запроса для чат gpt накидайте на расчёт средней зарплаты за последние 2 года. И чтобы вывел фио сотрудника плюс отдел. А потом прикиньте как простой бухгалтер/ экономист который не знает структуру базы данных может такой запрос создать
exwill Автор
06.06.2023 13:53Кстати, как быстро лично вы напишете запрос: "Какой менеджер какой товар продавал чаще всего"? Тут ведь подумать придется, не так ли? А модель выдаст вам ответ за секунду.
А как быстро вы напишете запрос: "Список уникальных покупателей артикула а-171 в 2023 году из тех у кого было менее 3 покупок любых товаров в 2022 году"? А как быстро вы напишите его правильно? На этом запросе многие специалисты спотыкаются
Kahelman
06.06.2023 13:53Если структура базы данных не известна то ни как. Поскольку покупки товаров в 2022 и покупки товаров в 2023 могут лежать в разных таблицах. Артикул товара вообще не известно в какой таблице и в каком поле храниться. Опять таки что значит «список уникальных покупателей» вам ID, ФИО или email нужен? Опять таки не факт что эта информация в одной таблице хранится.
needsomedata
06.06.2023 13:53-1Не согласен, логика алгоритмов везде одна и та же, а дообучить можно - показав примеры и скормив инструкции, вообще не рокет сайнс, а задача на 1-3 человеко-месяца
Kahelman
06.06.2023 13:53Достаточно создать репозитарий запросов к типовой конфигурации. Дальше натравить обычный поисковик. Чат gpt который вообще ничего о структуре базы не знает тут вообще ни при чем.
У вас Человек со стороны при отсутствии документации по структуре базы, 1-3 месяца только вникать будет что учтут к чему.
exwill Автор
06.06.2023 13:53Он уже создан. Называется русский язык. А поисковик называется большая языковая модель.
Если вы думаете, что здесь можно "срезать угол" и пройти напрямую, без использования нейросетей, просто задайте себе вопрос: почему этого никто не сделал до сих пор?
Kahelman
06.06.2023 13:53Как уже писал- русский язык как и любой другой язык допускает слишком много толкований:
Дорогой, сходи в магазин, купи батон, а если будут яйца, то купи 2 десятка …
Мужик и приносит 2 десятка батонов.
По опыту- пользователю не нужна возможность создать любой запрос к базе данных. Количество запросов которые ему нужны -ограничены.
Решение -создать репозитарий с запросами -создано, называется google, но его спамеры забили рекламой, так чтои что-то найти кроме рекламы становится невозможно. Поэтому ответы на вопросы по программированию приходится искать на stackoverflow.
Вы верите в серебряную пулю, которая решит проблему «спаммеров» на google. Как только технологии типа chat gpt станут распространёнными, весь интернет забью новым количеством спама.
Что будете делать, когда на запрос: выбери всех пользователей у которых Ххх
Система выдаст drop table users?
exwill Автор
06.06.2023 13:53В 1С нет drop table. Язык запросов 1С ограничен SELECT. В других системах тоже нет никаких проблем запускать только SELECT
Naf2000
06.06.2023 13:53Ну вот ответит система запросом, какой товар не продавался на прошлой неделе. Вывалит 100500 товаров. Только львиная доля будет из этого вообще неактуальный товар (его нет и не было уже несколько лет, либо только завели карточки под предстоящую поставку). Вы же наверное хотели что-то типа "из того что есть на складе". А есть на складе когда? Сейчас или в период анализа продаж?
Отсюда мораль, что надо более конкретно ставить задачи.
exwill Автор
06.06.2023 13:53А модель не против того, чтобы ей ставили все более и более конкретные задачи. Что спросите, на то будет отвечать по мере сил. В чем суть вашего возражения?
SGordon123
По простому подскажите, если взять все решения на спеца по 1с ( если УЦ их не стирает) , натренировать по ним модель, она сдаст экзамен по новому билету?
exwill Автор
Наверняка сдаст. А смысл? Какая в этом практическая польза?
Вот сравните с тем, что дается в статье. Пользователю надо узнать, что не продавалось на прошлой неделе. В типовых конфигурациях ничего похожего нет. Пользователь задает вопрос языковой модели и получает нужный ему ответ.
Во в этом есть смысл. А какой смысл в сдаче экзамена?
SGordon123
А ежели прогнать все типовые конфиги , получится каких нить "конструкторов типовых процессов " реализовать? Ну т.е. вот у тебя типовая себестоимость, а оно дорисовывает код под человечью задачу?