Представим себе, что у нас небольшое кондитерское производство и мы хотели бы вести учет на складе сырья. Учетных позиций у нас будет не очень много, скажем, в пределах 100.

Мы не будем здесь рассматривать десятки позиций. Рассмотрим следующие пять

  1. Мука пшеничная

  2. Сахар песок

  3. Масло растительное

  4. Яйцо куриное

  5. Апельсины

От пяти позиций до пятидесяти или даже до 500 это масштабируется без проблем, к тому же в реальном кондитерском производстве действительно не так уж много позиций для учета.

Сделаем Телеграм-бота, к нему вебхук, к вебхуку скрипт на Python. Это все стандартная история, много раз описанная другими. Не будем на этом останавливаться.

Итак, у нас есть обработчик сообщений, поступающих из Телеграм. Будем отправлять их на обработку большими языковыми моделями (LLM), в просторечье именуемыми искусственным интеллектом (куда уж сегодня без него). State-of-art модели сейчас позволяют организовать вызов функций на основе запроса, сформулированного на обычном человеческом языке. Т.е. пользователь говорит что-то типа: апельсины пришло 100, или апельсины поступило 100 или апельсины приход 100 или пришло 100 апельсинов и т.д. Большая языковая модель в любом случае понимает, что речь идет о поступлении на склад и предлагает вызвать функцию поступления.

В нашем случае будет достаточно всего трех функций: поступление, списание и остаток. При каждом вызове большой языковой модели, будем передавать описание этих трех функций. В скрипте создадим реализацию этих трех функций очевидным образом. Приход будет писать в таблицу приходов, расход в таблицу расходов, а остаток получать остаток из этих двух таблиц. Результат работы такого сервиса выглядит так:

Если вы еще не знакомы с большими языковыми моделями, то у вас может к этому моменту сложиться впечатление, что все это легко ломается, стоит только вместо "мука пшеничная" сказать "пшеничная мука" или просто "мука", как это и происходит в реальной жизни. Но в том-то и фишка больших языковых моделей. Они понимают язык и от разных формулировок одного и того же они не ломаются. Поэтому общение с большой языковой моделью может выглядеть так:

... или так:

... или так:

Что особенно приятно, это то, что сообщения можно не только писать, но и проговаривать. В этом случае потребуется задействовать еще одну модель типа speech-to-text (OpenAI обещают упростить нам жизнь в этом вопросе, но пока только обещают). Потребуется некоторая доработка скрипта, но оно того стоит. Все-таки на диктовку уходит гораздо меньше усилий, чем на письмо. Я сам начал это отчетливо понимать после многих часов тестирования как письма, так и голосового ввода.

Итак. Мы имеем складской учет, который не требует от нас ни установки ПО, ни обучения. Смартфон с Телеграм всегда под рукой у каждого. Взаимодействие происходит максимально комфортным для пользователя способом, на человеческом языке.

Гуд бай, 1С?

Комментарии (30)


  1. nee77
    01.09.2024 09:12
    +3

    Гуд бай, 1С?

    Осталось совсем чуть-чуть: прикрутить расчет налогов по разным СНО, расчет ЗП, интеграцию с банк-клиентами, формирование документов по различным формам ... и обучить тысячу бухгалтеров


    1. exwill Автор
      01.09.2024 09:12
      +1

      Обучить бухгалтеров чему? Русскому языку?


      1. anonymous
        01.09.2024 09:12

        НЛО прилетело и опубликовало эту надпись здесь


      1. nee77
        01.09.2024 09:12
        +1

        А Вы когда-нибудь пробовали у бухгалтеров какие-нибудь нововведения внедрить? Это люди со специфическим мышлением (большинство из них). Они как трамваи, хорошо едут там, где проложен путь.


  1. qvan
    01.09.2024 09:12
    +1

    Апельсины ушло 120, ой 130. Отмени последний ввод. Замок или замок? Кто ответственный за операцию? Итд итп.


    1. exwill Автор
      01.09.2024 09:12
      +1

      Думаете, будут проблемы с отменой последнего ввода? Какие?


      1. anonymous
        01.09.2024 09:12

        НЛО прилетело и опубликовало эту надпись здесь


        1. exwill Автор
          01.09.2024 09:12
          +1

          Давайте начнем со складского учета


          1. scarab
            01.09.2024 09:12
            +2

            Техкарты - это базис складского учёта. Или у Вас кондитер будет на каждую булочку будет вручную списывать 30г муки, 5г изюма, 1 яйцо?

            А ещё для складского учёта нужно учитывать не только поступления, а поставки в целом. Приехала машина, привезла 50 позиций общим весом полтонны. "Кладовщик" будет это всё руками или голосом в бота заносить?

            (открою секрет - сейчас УПД чаще всего ведётся в электронном виде и загружаться в систему будет одной кнопкой).

            А с поставками тоже бывает веселье: сегодня купили 100кг муки "Селяночка" по 100 рублей у поставщика А, завтра у поставщика А муки не оказалось и пришлось покупать "Белонежную" у поставщика Б, но уже по 120 рублей: в итоге на складе 200 кг муки - но разной. Какую и в каком порядке Вы будете списывать?

            И так далее и так далее.


            1. exwill Автор
              01.09.2024 09:12
              +1

              А мне вот лично встречалось именно кондитерское производство, у которого была совершенно конкретная "боль". Количественный учет на складе сырья. А то, о чем вы говорите, у них "не болело"


              1. softaria
                01.09.2024 09:12
                +1

                Тогда это - просто маленький велосипед, для очень узкой ЦА.

                Для 1с - вообще не конкурент


  1. quakin
    01.09.2024 09:12
    +1

    Любопытно узнать о деталях реализации: как именно заставить LLM вызвать скрипты с параметрами?


    1. exwill Автор
      01.09.2024 09:12
      +2

      https://platform.openai.com/docs/guides/function-calling

      https://infostart.ru/1c/articles/2165925/


  1. mixsture
    01.09.2024 09:12

    1) Сложность. Вы показываете 2 элементарных операции на одном виде учета и на одном показателе (только количественный учет). Эта сложность пишется новичками, пришедшими на недельные курсы по 1с. Реальные рабочие конфигурации у 1с, думаю, раз в 1000 сложнее. Как вы собираетесь перейти от одного к другому?

    2) Скорость работы. Скорость операций у LLM крайне низкая (по сравнению с оптимизированными для этого структурами хранения в 1с и кодом). Учет часто из себя представляет причинно-следственные связи между операциями по времени (каждая следующая использует предыдущие как исходные данные), поэтому при исправлениях важно актуализировать и все операции, начиная с исправленной до текущего момента. В терминах 1с это перепроведение. Возьмем для примера 1 тысячу операций и необходимость их перепровести. На сколько порядков ваша модель будет медленнее относительного того же на 1с?


    1. exwill Автор
      01.09.2024 09:12
      +1

      1) Типовые конфигурации, да, в 1000 (а может и более) раз сложнее. Только эта сложность в 99% случаев излишня. То, что я вам здесь демонстрирую это реально рабочий сервис. Кому-то потребуется что-то посложнее? Ну напишите еще пару функции, в дополнение к этим трем. А если вы напишите еще 100 функций, то вы обеспечите пользователям практически все, что им нужно. Причем ваша разработка будет все еще неизмеримо проще, чем самая простая типовая конфигурация

      2) Так "шустрит" не LLM. "Шустрят" ваши функции. LLM всего лишь "соображает" чего хочет пользователь и выдает сигнатуру функции. Потом эта функция выполняется на сервере. В моем примере это Python + MySQL. Это работает быстрее любой 1С


      1. mixsture
        01.09.2024 09:12
        +1

        Так вы просто хотите замену экранных форм на текстовый ввод со свободным языком? Тогда это не отменяет 1с (и в целом может совмещаться с движком 1с).
        Но в общем случае будет неудобно. Сейчас вы этого не замечаете, опять же, из-за крайне заниженной сложности. У вас по сути в тексте операции лишь 3 реквизита (вид движения, товар, количество). Сделайте аналог формы, где есть поля шапки, есть пару табличных частей, где в каждой строке табличной части несколько полей с текстовыми данными. Я бы посмотрел, как LLM разберется, где какие данные без дополнительной разметки.
        Будете делать 1 текст на 1 документ? Тогда потеряете интерактивность ввода - и вы никак не поможете пользователю с заполнением коррелирующих полей (одно поле ограничивает список значений другого, например). Будете делать 1 текст на каждую строку/поле? Тогда ваш документ растянется по вертикали на много-много экранов, потеряется компактность данных, что добавит ошибок у операторов ввода.


        1. exwill Автор
          01.09.2024 09:12

          Зачем все это? Пользователь говорит, что ему надо и получает что ему надо. Без всяких табличных частей, коррелированных полей и прочих "чудес". Это все остается в прошлом


          1. mixsture
            01.09.2024 09:12

            Для удобства работы пользователя, которое влияет на число ошибок. Вот чуть ниже в треде вы сами же пришли к необходимости "задавать уточняющий вопрос" - это тоже относится к интерактивному вводу.
            Собственно, список проблем - он не о языковых моделях конкретно, он вообще о текстовом вводе. Ровно те же проблемы у меня были при попытке сделать интерфейс к документам 1с в телеграм боте: очень низкая компактность отображения и очень ограниченная интерактивность. Поэтому простые документы (у меня были финансовые доки) - да, возможно. А вот сложные: вроде поступления, реализации, производственных - очень неудобно.


            1. exwill Автор
              01.09.2024 09:12

              А теперь представьте, что человек вообще не напрягает глаза, только говорит


  1. tuxi
    01.09.2024 09:12
    +1

    • крахмал картофельный приход 100

    • крахмал кукурузный приход 75

    • сколько крахмала сейчас?

      какой ответ будет?

    второй пример

    • крахмал картофельный приход 100

    • крахмал кукурузный приход 75

    • крахмал расход 70

    • сколько крахмала сейчас?

      какой ответ будет?


    1. exwill Автор
      01.09.2024 09:12
      +1

      Попробуйте сами

      https://t.me/awpdemo_bot


      1. qvan
        01.09.2024 09:12

        Технический момент.


        1. exwill Автор
          01.09.2024 09:12
          +1

          О, спасибо!


      1. webhamster
        01.09.2024 09:12

        Я попробовал, и получилась чушь:


        крахмал картофельный приход 100

        Поступило крахмал картофельный 100

        крахмал кукурузный приход 75

        Поступило крахмал кукурузный 75

        крахмал расход 70

        Списано крахмал 70

        сколько крахмала сейчас?

        Остаток крахмал -70


        1. qvan
          01.09.2024 09:12
          +1

          3 позиции.


        1. exwill Автор
          01.09.2024 09:12
          +2

          LLM посчитала, что у вас три позиции: крахмал картофельный, крахмал кукурузный и просто крахмал. В этом ведь есть логика, не так ли? Не вижу в этом большой проблемы.

          Впрочем, быть может вы и правы. Было бы неплохо в таких ситуациях задавать конкретизирующий вопрос


      1. qvan
        01.09.2024 09:12

        Тех2. Наверное, глобальная отмена.


        1. exwill Автор
          01.09.2024 09:12
          +1

          В демо сервисе отмена не реализована. Только три функции: приход, расход, остаток


  1. Ulrih
    01.09.2024 09:12
    +2

    Автор видимо не знает что такое складской учёт от слова совсем. Добавь банальный учёт по партиям фифо фер и т.д. а дальше приходите как реализуете


    1. ZekaVasch
      01.09.2024 09:12
      +2

      Не мешайте человеку работать в телеграмме.