Как стать автором
Обновить
944.23
OTUS
Цифровые навыки от ведущих экспертов

Пример дивергентного мышления ИИ при использовании 1С запрос copilot

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.4K


Американский психолог Джой Пол Гилфорд, известный исследователь проблем интеллекта, в свое время предложил понятие дивергентного мышления. Сам Гилфорд определял его, как тип мышления идущий в различных направлениях. Ищем все возможные способы решения одной проблемы. Выходим за рамки стереотипов и, как результат, находим неожиданные и суперэффективные методы. Дивергентное мышление ассоциируется с креативностью. Яркий пример такого мышления можно увидеть в хорошо известной истории про Нильса Бора и барометр.

До появления генеративных языковых моделей было распространено мнение, что искусственный интеллект, когда и если будет создан, будет уступать человеку в креативности. Будет действовать скрупулезно, последовательно, без ошибок, но шаблонно. Оказалось — наоборот. Как это выглядит в реальности, при решении «скучных» учетных задач в 1С, смотрите ниже.

Привожу задачу в том виде, как она была сформулирована.

Как определить день, когда в отеле было максимальное количество постояльцев?
В общем, есть задача, её суть:

Учет приезда клиентов ведется со дня старта работы отеля (к примеру день приезда 3, означает что клиент приехал в третий день работы отеля, а уехал на 8 день работы отеля т.д.).

Нужно написать программу, которая сама бы определила этот день (при этом нельзя использовать сторонние объекты в виде регистров, справочников и т.д.). Есть документ с расписанием отъездов и выездов, нужно отталкиваться только от него.
Если таких дней несколько — вывести первый.

Ну… пользователи так примерно и говорят. А мы не будем сейчас заниматься критикой этого текста, а просто «скормим» его копилоту как есть, даже не прописывая схему базы данных.



Ответ:

SELECT day
FROM (
    SELECT arrival_day AS day
    FROM bookings
    UNION ALL
    SELECT departure_day + 1
    FROM bookings
) AS days
GROUP BY day
ORDER BY COUNT(*) DESC, day
LIMIT 1

Сложим все события в кучу и посчитаем. Нет, это, конечно не работает. «Причешем» текст, уберем из него лишнее и путанное. А заодно добавим схему.

Текст вопроса:
Это отель. Вычислить день, когда было больше всего живущих в отеле

Схема:

MySQL #
Размещение(постоялец, день_заезда, день_отъезда) #

Ответ:

SELECT DATE, COUNT(*) AS NumberOfGuests
FROM
(
    SELECT a.Date
    FROM
    (
        SELECT день_заезда AS Date
        FROM Размещение
        UNION ALL
        SELECT день_отъезда
        FROM Размещение
    ) a
    WHERE a.Date BETWEEN (SELECT MIN(день_заезда) FROM Размещение) AND (SELECT MAX(день_отъезда) FROM Размещение)
) b
LEFT JOIN Размещение c ON b.Date BETWEEN c.день_заезда AND c.день_отъезда
GROUP BY DATE
ORDER BY NumberOfGuests DESC
LIMIT 1



Не помогло. Оно упорно пытается действовать через UNION. Видно, что идет поиск решения через усложнение, но… нет. Ну что ж, еще одна попытка. Просто чуть конкретизируем вопрос.

Текст вопроса:

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

Ответ:

SELECT MAX(day_count) AS max_guests, day
FROM (
  SELECT COUNT(*) AS day_count, day
  FROM (
    SELECT a.day
    FROM (
      SELECT ADDDATE('1970-01-01', t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) day
      FROM
        (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t0,
        (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t1,
        (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t2,
        (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t3,
        (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t4
    ) a
    JOIN Размещение b
    ON a.day >= b.день_заезда AND a.day <= b.день_отъезда
  ) c
  GROUP BY day
) d
ORDER BY day_count DESC
LIMIT 1



И вот оно! Работающее решение, использующее генератор дней.

Поясню, что я вижу в этом заслуживающего вашего внимания. Я много лет обучал взрослых и детей программированию. И я знаю, что если человек встал на какие-то «рельсы», то снять его с них зачастую очень и очень сложно. А оно (я имею ввиду большую языковую модель) хоть и тупенькое, но креативное! Заставить его найти другое решение совсем не сложно. И это очень важный момент.

Кстати, в том же обсуждении, где была поставлена эта задача, человеком было предложено следующее решение:
Соединяем в запросе выборки из табличных частей.
1 Дата (ДатаПриезда)
Объединить
-1 Дата(ДатаОтъезда)
Группируем по дате.
Полученную таблицу соединяем саму с собой по условию Дата<=Дата, делаем группировку по дате.

Как видите, решение через UNION тоже существует. Надо только складывать приезды и вычитать отъезды. Но метод предложенный большой языковой моделью лучше, потому что он универсальный. Можно не только определить день максимальной загрузки отеля, но и период, когда эта загрузка сохранялась. Можно получить все периоды с максимальной нагрузкой. Вычислить процент
Что из всего этого следует. На мой взгляд, очень хорошие новости. Сейчас много разговоров о том, что искусственный интеллект лишит работы тех или этих. Лишит или нет, это мы еще посмотрим. Лично я считаю, что тут опасения сильно преувеличены. Гораздо меньше разговоров со знаком «плюс». Разговоров о том, что нам даст искусственный интеллект. А даст он нам то, что, как я вижу, мы все станем более креативными. Дивергентный и конвергентный типы мышления не антагонисты. Напротив, они естественным образом дополняют друг друга. Обратите внимание на мои действия в описанном мною примере. Я действую вполне конвергентно. Просто улучшаю шаг за шагом свой вопрос. А мой второй пилот дополняет меня. Ищет и находит всевозможные варианты решения. И это, как я считаю, самое важное свойство генеративных моделей искусственного интеллекта.

Ну а про классическое решение задач 1С вы можете узнать в рамках практических онлайн-курсов. Подробнее о курсах по ссылке.
Теги:
Хабы:
Всего голосов 15: ↑11 и ↓4+7
Комментарии14

Публикации

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS