Как стать автором
Обновить

Комментарии 99

Я написал небольшое дополнение, которое необходимо добавлять к каждому вопросу пользователя. В этом дополнении дается описание таблиц базы УТ. [...] Кроме того, так как большинство 1с-ников привыкли читать запросы на русском языке, я сделал перевод выдаваемого языковой моделью текста запроса.

Покажите, пожалуйста, код вашего "дополнения".

Отлично, а "отгрузи Васе чая как на прошлой неделе". С ответом - Если, как на прошлой неделе, то в следующем месяце не хватит на оплату кредита.

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

Период «на прошлой неделе» коротковат для этого. Вот если «как в прошлый раз» — другое дело.

Прикручиваем к конфигурации распознавание и синтез речи и отдел бухгалтерии становится неотличим от съёмочной площадки научно-фантастического фильма второй половины прошлого века.


Зададим неоднозначный, расплывчатый вопрос: «Сколько чая?»

— Петька, приборы!
— 42!
— Что «42»?
— А что «приборы»?

Это конечно все прекрасно, думаю что на 1С можно и Doom запустить.
Но все же, вы обрабатывается запрос пользователя и просите GPT chat создать sql запрос?
Получаете SQL запрос на и переводите его на русский и запускаете в 1С?
Не понимаю за что плюсуют статью, никакой технической части, нет сорсов, короче статья в стиле 1С.

Вам, может быть, трудно будет в это поверить, но в том-то и дело, что нет никакой особой "техники". Пользователь задаёт вопрос на русском. GPT генерирует SQL запрос. Здравствуй, новый мир!

Это даже приличным программистам на расте туго заходит, что уж говорить об обычных 1С-негах. Слесари скоро отвалятся.

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

С другой стороны, в нужна ли будет 1С, если первичку сразу передавать chatGPT?

...ну вот будете вы ее передавать, а дальше что? Вы думаете, у него там есть идеальная БД?

Ну а какая разница, куда транслировать? Хоть в 1Сный обрубок SQL, хоть прямо в SQL с инсертами и абдейтами, т.е. с полным DML.

Ну вот оно "транслировало в инсерт", а дальше что?

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

А дальше этот инсёрт ушел в базу данных.

То есть вам нужна БД где-то снаружи, которую кто-то должен спроектировать. А еще вам нужно приложение, которое будет отправлять инсерты в БД, потому что ChatGPT про вашу БД не знает.

А после вопроса о том, что там у нас приехало, из базы пришел селект.

Селект не может прийти из БД, селект прийдет снова из ChatGPT, и ваше приложение его в вашу БД отправит. А что оно будет делать с результатами? Придется какой-то GUI нарисовать, как иначе-то.

И что вы будете делать, когда пользователь в этом GUI нажмет на колонку, чтобы по ней отсортировать данные?

В ГПТ ушел вопрос, из ГПТ пришел запрос, ушел в базу, из базы пришла выборка с ответом на вопрос.

По поводу сортировки, то пользователю зачем нажимать на колонку? Он может переформулировать вопрос ГПТ, чтобы тот возвратил отсортированные данные. Как он этот вопрос сформулирует - языковой модели пофиг.

Ииии? Вам все равно нужен UI, чтобы эту выборку отобразить, и у этого UI должны быть реакции на действия пользователя. Вот например сортировка. Как вы ее будете делать?

Скажешь "Отсортируй!". Грозно так, голосом. Как бы там ни было, ваш оппонент прав в том, что интерфейс на естественном языке принесет нам кардинальные изменения

Скажешь "Отсортируй!". Грозно так, голосом.

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

ваш оппонент прав в том, что интерфейс на естественном языке принесет нам кардинальные изменения

Так я не спорю с тем, что интерфейс на естественном языке приносит кардинальные изменения в пользовательском опыте (благо я сам такими разработками занимался). Вот только мой оппонент совсем не утверждал это, а задавался вот таким вопросом:

нужна ли будет 1С, если первичку сразу передавать chatGPT

Да, и склады будут не нужны, и фуры. Всё будет в ЖПТ. "будет одно сплошное телевидение" (с)

ну — с фурами, это как-то нереалистично. А вот с ЛогистикИИ (появится в скором времени) — склады могут и не понадобиться.....

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

Дьявол в деталях. Одна строчка кода может кардинально повлиять на результат. В отличие от написания псевдонаучных текстов и рисования картинок, учетным системам ИИ не страшен - это строгий механизм. Вырастет спрос на спецов для прикручивания нейросеток к существующим системам. Ждем очень скорое появление таких расширений для 1С.

Дак вот оно. Уже есть расширение. Автор его написал.

ИМХО, ответы, с которыми никогда не будет уверенности, правильно ли все понято и обработано, это не то, что нужно в бух. учете. Пусть уж лучше будут жесткие правила для голосовых запросов и абсолютно предсказуемое исполнение таких запросов алгоритмом безо всякого ИИ.

Эххх... сказал бы я вам, что сейчас в бухучете на 1с творится. Ну да ладно

Если вы зададите живому человеку вопрос - сколько у нас запасов? - тоже нет уверенности, что вы друг друга правильно поняли и он вам ответил то, что вы имели в виду. Например, запасы могут быть у вас на складе, но принадлежать не вам (консигнация). Или ваши товары также могут лежать на чьём-то чужом складе. Или товар уже продан и не ваш, но пока лежит у вас на складе. Или товар в пути, право собственности ещё/уже ваше, но на складе его нет. И другие нюансы. И разные сотрудники могут ответить по-разному на такой вопрос, причём, все по своему буут правы.

На вопрос, требующий уточнения, бухгалтер должен уточнять или выдавать все варианты. Этот бот выдает то, что ему больше нравится. Кроме того, он может попросту ошибаться. ChatGPT у меня ошибся, отвечая на элементарный запрос "Count the number of words in this message". После того как я спросил, уверен ли он в ответе, он извинился и выдал другой неправильный ответ. Как после этого доверять ему учетную работу?

Судя по приведенному вами вопросу, вы не совсем понимаете как работает языковая модель. В статье я попытался объяснить, но, видимо, недостаточно внятно.

Языковая модель в своей сути проста, как палка и веревка. В частности, она не умеет считать. Она просто находит наиболее подходящие к вашему вопросу куски обсуждений из интернета. Что вы ожидали от нее услышать в ответ на ваш вопрос? Точное количество букв? Она честно поискала наиболее подходящую беседу людей на эту тему и выдала вам некоторое количество. Неудивительно, что оно не совпало. Вы попросили поискать еще, она вам еще поискала. В общем, это так не работает

Она также не "умеет" составлять SQL-запросы. Вы привели аргумент против собственного решения. Модель "поищет подходящую беседу людей на эту тему" и выдаст вам некоторый запрос. Насколько надежно такое решение для бизнеса? Гугл подсказывает, что она может ошибаться.

А какая у вас статистика? Сколько раз вы пробовали и всегда ли успешно?

Для этого я и написал статью. Сколько раз я попробовал спросить об остатках на складе в разных выражениях? И всякий раз я получал правильный ответ.

Но дело даже не в этом. Ваш вопрос поставлен некорректно. А насколько надежно использование русского языка для бизнеса? Язык, он, знаете ли, ненадежен, неоднозначен, расплывчат. Люди могут друг друга не понять.

Ну и что? Не понял, переспросил. Люди делают это бессчетное количество раз на автомате. Для них это не является проблемой.

Не понял, переспросил.

А модель переспрашивает? Что важнее, она спорит, когда она права? Умеет приводить аргументацию?

Человек переспрашивает, если его не устроил ответ модели

Гм. Вот человек пришел к модели и спросил: дай мне запрос для вот такого отчета. Она дала. Он запустил отчет, получил результат.

Откуда ж ему знать, что в запросе ошибка, и результат неверен?

Для чего нужен такой ответ модели, если это вилами по воде писанная Филькина грамота? Тут обычной 1с бухгалтерии перестаешь доверять после обновлений.. По моему это ещё один инструмент для обмана в бизнесе/отношениях/знакомствах/общении и т д, так как контент вроде есть но он ложный на 146%.

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

Почему вы так решили? Есть сильно больше одного примера, где ChatGPT делает вычисления.

Я в курсе. Но вы же понимаете, что вычисления делает не языковая модель. Если вы зададите вопрос: сколько будет 12343+674, будет задействован блок вычислений. А если спросить сколько букв в этой фразе, то будет задействована языковая модель

Если вы зададите вопрос: сколько будет 12343+674, будет задействован блок вычислений. А если спросить сколько букв в этой фразе, то будет задействована языковая модель

Я не знаю, на основании чего вы делаете такое противопоставление.

На основании личного опыта

У вас большой личный опыт в разработке систем машинного обучения и/или искусственного интеллекта?

Вы неправильно задали промт. Если бы вы написали так как ниже, все посчитала бы правильно.

how many words are in message: how many words are in message

с чего вы взяли, что этот функционал требуется именно бухгалтерам? Всякие "аналитики", руководители подразделений, маркетологи — и ещё пачка всяких спецов, которым требуются "другие" отчёты — вот основной потребитель данных технологий.

Хотелось бы увидеть текст вопроса, который подается на chatGPT

Структура таблиц плюс вопрос пользователя как есть.

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

Языковая модель понимает. Примеры есть на сайте OpenAI

Языковая модель молодец.
Здесь, в комментариях, полный текст примера-вопроса со всеми структурами и так далее вы привести можете?

На сайте OpenAI есть пример:

### Postgres SQL tables, with their properties:

#

# Employee(id, name, department_id)

# Department(id, name, address)

# Salary_Payments(id, employee_id, amount, date)

#

### A query to list the names of the departments which employed more than 10 employees in the last 3 months

SELECT

Там же есть пример API Request

Это сферический пример в вакууме.
В рамках этой статьи интересен пример именно для добывания данных из «Управления Торговлей».

У вас есть сложности с добыванием данных из УТ с помощью этого примера? Какие?

Интересен полный запрос, с помощью которого гпт отдает вот такой ответ

Описание таблиц + вопрос от пользователя. Какой именно информации вам не хватает в моем ответе? Как описывать таблицы? Каким-нибудь языком. Например, русским. Остатки, продажи, взаиморасчеты и т.д.

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

Поймите меня правильно. Я готов отвечать на вопросы. Но у меня есть некоторый "входной фильтр". Я бы предпочел давать разъяснения тем, кто нашел пару минут на то чтобы проверить материал статьи на OpenAI. Такая вот причуда, извините

Выглядит, если честно, странно. Т.е. причина «это мое ноу-хау, простите, не дам» — это нормальная причина. Ценность статьи снижается, но как причина норм.

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

От вас не требуется ничего придумывать. Просто опишите таблицы русским языком

Я бы предпочел давать разъяснения тем, кто нашел пару минут на то чтобы проверить материал статьи на OpenAI.

Я вот не могу проверить материал статьи на OpenAI, потому что у меня, вот сюрприз, нет информации о том, какие таблицы и как вы описали.

Вы можете проверить. Я описал таблицы остатки, продажи и взаиморасчеты. Как? На русском языке. Вы же владеете русским языком. Значит сможете описать. Ваше описание будет не таким, как у меня? Ага, ага... А результаты будут такими же. Я хочу, чтобы вы прониклись языковой моделью

Угу, я попробовал "проверить", и первый же вопрос выглядит так: так какую же конкретно модель вы используете?

Модель русского языка.

А, вы об этом.

 "code-davinci-002"

У меня результат радикально отличается от вашего. Если быть точным, он выглядит так (дословно)

Пробовал так, но не получается:
<code>SELECT SUM(ostatki.ostatok) AS ostatok
FROM ostatki
WHERE ostatki.data &lt;= '15.04.2020'
</code>
Пример данных:
<code>CREATE TABLE ostatki (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  data DATE,
  ostatok INTEGER
);

INSERT INTO ostatki (data, ostatok) VALUES ('01.04.2020', 100);
INSERT INTO ostatki (data, ostatok) VALUES ('02.04.2020', 200);
INSERT INTO ostatki (data, ostatok) VALUES ('03.04.2020', 300);
INSERT INTO ostatki (data, ostatok) VALUES ('04.04.2020', 400);
INSERT INTO ostatki (data, ostatok

Использую completions, не chat

Это ответ из sandbox OpenAI (не чат). Так что я пошел и проверил, результат с вашим не совпал.

Заниматься угадыванием, что конкретно и как вы делаете, желания нет.

Удивительно. А пример в sandbox:

# Employee(id, name, department_id)

# Department(id, name, address)

# Salary_Payments(id, employee_id, amount, date)

#

### A query to list the names of the departments which employed more than 10 employees in the last 3 months

SELECT

Вам не помог?

Нет, не помог. Вы же сказали "описать русским языком", я описал русским языком.

Вот именно поэтому у вас и просили код того, что вы сделали, чтобы не играть в угадайку.

В примере заменяете описание таблиц на свое. Также заменяете вопрос. SELECT оставляете. Жмете кнопку

Я получу ответ на свой вопрос, но не на вопрос про 1С. Удивительно, правда?

Впрочем, если я взял свой пример, ответ получился тоже неюзабельным:

### A query to list all usernames who performed login within last 5 days
SELECT * FROM AuditHistory WHERE ActionType = 'Login' AND ActionDateTime > DATEADD(DAY, -5, GETDATE())
### A query to list all usernames who performed login within last 5 days
SELECT * FROM Users WHERE LastLoginDateTime > DATEADD(DAY, -5, GETDATE())
### A query to list all usernames who performed login within last 5 days
SELECT * FROM AuditHistory WHERE ActionType = 'Login' AND ActionDateTime > DATEADD(DAY, -5, GETDATE())
### A query to list all usernames who performed login within last 5 days
SELECT * FROM Users WHERE LastLoginDateTime > DATEADD(DAY, -5, GETDATE())
### A query to list all usernames who performed login within last 5 days
SELECT * FROM AuditHistory WHERE ActionType = 'Login' AND ActionDateTime > DATEADD(DAY, -5, GETDATE())
### A query to list all usernames who performed login within last 5 days
SELECT * FROM Users WHERE LastLoginDateTime > DATEADD(DAY, -5, GETDATE())
### A query to list all us

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

Сочувствую

В связи с проведенным опытом, мне начинает казаться, что статья просто красивый фейк.

уже есть BI системы которые генерят SQL из текстового запроса пользователя - например

thoughtspot - https://youtu.be/wlgYjqvUEGs?t=60

Выглядит запрос почти также, разве что в результате стоится даже визуализация с графиками или диаграммами.

По моему опыту - это очень класная фишка для уменьшения входного порога в аналитику.

SQL и визуализация никак не входят в "порог" для аналитика. Эти вещи осваиваются аналитиком по ходу дела.

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

Даже специально завел аккаунт на Хабре.

Придумал я ответы или нет, вы можете легко проверить самостоятельно

Для того, чтобы можно было проверить вы должны предоставить полный текст запроса. И написанное вами расширение, генерирующее эти запросы.

Для того, чтобы проверить достаточно зайти на сайт OpenAI. Описать своими словами таблицы остатков, продаж и взаиморасчетов, а также сопутствующие им таблицы справочников. Задать вопросы приведенные в статье и посмотреть на ответы.

Я выдвигаю гипотезу, что вы получите такие же результаты, как в статье. С поправкой на то, что это будет чистый SQL, но по смыслу такие же. Для проверки этой гипотезы, мне не надо, чтобы вы вводили мой запрос. В этом нет никакого смысла

Я выдвигаю гипотезу, что вы получите такие же результаты, как в статье.

Но подождите, я же уже продемонстрировал, что это не так.

Для проверки этой гипотезы, мне не надо

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

Разве вы описали таблицы остатков, продаж и взаиморасчетов? Вы описали что-то свое.

Я ведь не утверждаю, что языковая модель сможет сгенерировать любой запрос. Я утверждаю, что запросы относительно остатков на складе, продаж со склада и взаиморасчетов языковая модель генерирует идеально. Потому что в StackOverflow лежат миллионы вопросов на эту тему и миллионы ответов. Именно эту гипотезу и следовало проверять

Разве вы описали таблицы остатков, продаж и взаиморасчетов?

А вы предоставили это описание? Нет. Поэтому я описал то, что мог описать.

Когда я описываю таблицы остатков и продаж - ничего не меняется, модель как продолжала барахтаться, так и продолжает (предполагаю, что это потому что она не понимает описания структуры БД естественным языком).

Потому что в StackOverflow лежат миллионы вопросов на эту тему и миллионы ответов.

Относительно классических аудитных структур - тоже.

Когда я описываю таблицы остатков и продаж - ничего не меняется, модель как продолжала барахтаться, так и продолжает (предполагаю, что это потому что она не понимает описания структуры БД естественным языком).

Например, для запроса "покажи задолженность ООО Ромашка за вчерашний день"

# подключаемся к базе данных
conn = psycopg2.connect(dbname='netology', user='netology',
                        password='netology', host='localhost')

# создаем курсор
cursor = conn.cursor()

# выполняем запрос
cursor.execute("""
    SELECT
        SUM(balance)
    FROM
        balances
    WHERE
        customer_id = (SELECT id FROM customers WHERE name = 'ООО Ромашка')
""")

# получаем результат работы запроса
balance = cursor.fetchone()[0]

или (важно, это один ответ)

SELECT SUM(balance) FROM balances WHERE client_id = 1 AND date = '2019-01-01';
SELECT SUM(amount) FROM sales WHERE client_id = 1 AND date = '2019-01-01';
SELECT SUM(amount) FROM payments WHERE client_id = 1 AND date = '2019-01-01';

или

SELECT SUM(balance) FROM balances WHERE client_id = 1 AND date BETWEEN '2019-01-01' AND '2019-01-31';

...и вот каким образом "за вчера" превратилось в "за январь 2019"?

Я писал об этом в статье. Время, это узкое место языковой модели. Разработчики из OpenAI честно об этом предупреждают. Но это узкое место можно "расшить"

Разработчики из OpenAI честно об этом предупреждают.

Цитату можно?

Время, это узкое место языковой модели.

Не наблюдается:

### A query to list the names of the departments which employed more than 10 employees yesterday
[...]
WHERE date = CURRENT_DATE - INTERVAL '1 DAY'
### [...] this year
[...]
WHERE YEAR(sp.date) = YEAR(CURDATE())

Со "вчера", понятное дело, проблем не будет. Проблемы будут с "в январе".

Проблемы со "вчера" прекрасно продемонстрированы парой комментариев выше, где в ответ на "покажи задолженность ООО Ромашка за вчерашний день" я получаю WHERE [...] date BETWEEN '2019-01-01' AND '2019-01-31'.

А с "в январе" проблема в том, что модель должна уточнить, я имею в виду в этом январе, или в каждом январе, чего она не делает. Это к вопросу о возможности ей доверять.

Вас уносит в сторону дурного антропоморфизма. В статье я пытался предостеречь от этого, но, видимо, недостаточно убедительно. Вы смотрите на модель, как на какое-то существо, с которым можно общаться. Но никакого существа нет. Есть только ваше общение с людьми, которые постили тексты запросов в интернете. В 21-ом году люди не постили тексты запросов для января 23 года. Вот и все. Это просто надо иметь ввиду

Вы смотрите на модель, как на какое-то существо, с которым можно общаться.

Нет, я смотрю на модель, как на инструмент, который должен приносить мне пользу. Если я не могу инструменту доверять, он мне пользу не приносит.

В 21-ом году люди не постили тексты запросов для января 23 года.

А при чем тут это?

Стоит указать "January 2023", модель совершенно прекрасно все подставляет в запрос (если она раньше могла его собрать, конечно).

Я пробовал. У меня не подставляла

### A query [...] in the january
[...]
WHERE salary_payments.date BETWEEN '2020-01-01' AND '2020-01-31'
### A query [...] in the january 2023
[...]
WHERE Salary_Payments.date BETWEEN '2023-01-01' AND '2023-01-31'

Привет воспроизводимости результатов (а с ним - и доверию).

Обращаю, кстати, ваше внимание, что хотя никаких изменений, кроме 2023, в запросе не было, модель поменяла кейс ответа (это может быть критично на некоторых СУБД).

На русском отказывалась воспринимать январь 2023. Как бы там ни было, время придется обыгрывать отдельно

Прелестно!

А вот это и хотелось бы выяснить. Я не силен в аудитных структурах. Но..

А вот то же самое для учетных систем

Видите разницу?

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

Сколько вопросов, столько и ответов. Даже на один и тот же вопрос, каждый раз возможен разный ответ. Предлагаю провести эксперимент, скопируйте ещё раз ваши вводные и вопросы в ChatGPT и
проверьте какие будут ответы. А заодно и сюда скиньте, что на входе и что на выходе.

Обижаете. Каждый из вопросов прогонялся не менее 5 раз

Где можно обработку скачать?

В самой обработке ничего интересного. Обращение на тестовый сервер с вопросом и получение готового ответа. Я сейчас собираю заявки на участие в тестировании. Участникам будет доступна настройка позволяющая экспериментировать с любой типовой или нетиповой конфигурацией 1С. Зарегистрироваться можно здесь brainguard.ru Участие в тестировании бесплатно. Тестовая площадка будет готова ориентировочно недели через две. Если не охота ждать, может самостоятельно потестировать на сайте OpenAI в "песочнице" Описываете таблицы и пробуете задавать вопросы из статьи

Для всех желающих доступна тестовая площадка. На ней можно проверить самостоятельно все, что описано в статье

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории