К вопросу о надежности искусственного интеллекта в бизнесе

10.01.25

Интеграция - Нейросети

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

Ох уж эти галлюцинации! Кто только не попался на эту удочку. От рядовых пользователей до целых коллективов с академическим статусом, публикующихся на arxiv. Наиболее яркий пример тому: Alice in Wonderland: Simple Tasks Showing Complete Reasoning Breakdown in State-Of-the-Art Large Language Models Эта же статья не так давно обсуждалась на Хабре Ахиллесова пята ИИ: простая задача, обнажившая слабости всех языковых моделей

Если хотите разобраться с этим, забудьте на время это слово галлюцинации и обратите внимание на другое слово семплирование. Что это такое. Большая языковая модель выдает вам ответ на ваш вопрос по частям, которые называются токенами. Это не слово и не буква, а нечто среднее между ними. На каждом шаге модель выбирает из нескольких возможных вариантов продолжения. Варианты не равны между собой. Какие-то считаются более подходящими, какие-то менее. Например, у вас может быть вариант 1 с рейтингом 70%, вариант 2 с рейтингом 29% и вариант 3 с рейтингом 1%. Это будет означать, что в 70 случаях из 100 для продолжения будет выбран вариант 1, в 29 случаях вариант 2 и в 1 случае вариант 3. На практике это может означать, что вы получите пресловутую галлюцинацию в 30 случаях из 100. Более того, в 1 случае из 100 вы получите такую галлюцинацию, о которой будете долго рассказывать всем, кто только будет вас слушать.

Самое важное здесь в том, что семплирование не является органической частью модели. Семплирование это нечто "прикрученное" сбоку. Зачем так сделали, и почему не стали просто выбирать всегда наилучший вариант? Представьте себе, что семплирование отключено и на каждом шаге выбирается наилучший вариант. Вы просите модель рассказать сказку. Она расскажет вам сказку. Возможно даже неплохую. Но она расскажет ее и вам, и Васе, и Пете... И сегодня, и завтра, и послезавтра. Каждый раз одну и ту же сказку. Если речь идет о сказке, то это никуда не годится. С другой стороны, если вам надо решать задачу на логику или математику (а бизнес-задачи чаще всего именно такие), тогда одна "сказка" для всех и всегда, это именно то, что вам нужно.

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

  • temperature

  • top_p

  • top_k

Самая простая из них top_k. С ее помощью мы можем установить количество рассматриваемых на каждом шагу результатов. Понятно, что если задать top_k=1, то это и будет полным отключением семплирования. Но это слишком просто. В OpenAI, например, считают, что не по пацански просто, поэтому у них такой опции нет. Опция top_p работает сложнее. На каждом шаге из всех возможных кандидатов выбираются самые лучшие один за другим до тех пор пока их суммарный "рейтинг" (или суммарная вероятность, как это чаще называют) не станет больше либо равен установленного порога. Если установить top_p=0.1, то это тоже будет равносильно отключению семплирования, за исключением экзотических случаев, когда у вас будет много кандидатов с низким рейтингом (вероятностью). Например: 0.05, 0.04, 0.03, 0.03... Но это и будет означать, что выбор на этом конкретном шаге почти не играет значения.

Самая замудренная опция temperature. Тут используется логарифмическая функция для изменения изначальных рейтингов. При значении temperature=1 распределение рейтингов (вероятностей) остается неизменным. При значениях выше 1, разница между рейтингами сглаживается, при значениях ниже 1, разница обостряется. Допустим, изначально у вас было два кандидата с рейтингами 60% и 40% (0.6 и 0.4). Вы задаете низкую температуру и разница обостряется, превращается, условно говоря, в 98% и 2% (0.98 и 0.02). Чтобы отключить семплирование, надо установить как можно более низкую температуру. Некоторые провайдеры разрешают указывать temperature=0, другие занимаются буквоедством и не разрешают этого делать (ну да, на значении 0 эта функция не определена). Приходится указывать что-то типа temperature=0.01

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

Как видите, в этом смысле управлять моделью не сложнее чем, краном на кухне. Холодное-горячее. Тем удивительнее то, что так много людей обожглось и продолжает обжигаться горячими. Видимо, здесь нет ничей вины. Большие языковые модели были явлены широкой публике в виде чата. Для поболтать-поразвлекаться. Температура в чате была установлена в значение 1. Регулировка температуры отсутствовала (она и сейчас чаще всего отсутствует), дабы не смущать публику логарифмами. Для решения задач на логику это никуда не годилось, но сказочки получались знатные. А если какой-нибудь Вася пробовал чат на логику, то получалось еще лучше! Вася с некоторой, довольно высокой вероятностью получал очень странный результат и него тут же возникало желание поведать об этом всему свету. На его крики приходили Петя и Коля. Проверяли у себя решение задачи на логику. Получали нормальный результат и разгорался жаркий спор, привлекающий все новых и новых участников, из которых кто-то потом становился подписчиком. Business as usual.

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

В истории с галлюцинациями больших языковых моделей большая часть это миф. Но это все же часть. Отключив семплирование, мы получим ... Но прежде, чем перейти к тому, что мы получим, хочу обратить ваше внимание на Debate: Sparks versus embers. Здесь два математика обсуждают тему: "Текущие подходы масштабирования LLM достаточны для создания новых методов, необходимых для разрешения основных открытых математических гипотез..." В дебатах есть примечательный момент. Когда условный ИИ-скептик говорит, что в длинных цепочках рассуждений обязательно будут галлюцинации, оппонент ему возражает так: "Послушай, ну мы-то с тобой знаем, что если человеком написана статья в 50+ страниц, то там будут галлюцинации 100%. И что? И ничего, показываем ревьюверам, исправляем. Все это запросто воспроизводится и в искусственном интеллекте. Одна модель проверяет другую..."

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

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

Допустим, мы знаем, что на наших задачах уровень галлюцинаций составляет 1 к 1000 на запрос. Это означает, что на 1 запрос из 1000 будет выдан неверный результат. Если мы делаем около 1000 запросов в год, тогда примерно раз в год модель нам будет подкидывать неприятности. Будем тогда дублировать каждый запрос, т.е. отправлять один и тот же запрос к большой языковой модели дважды. Всякий раз мы будем получать один и тот же ответ, но раз в год ответы будут разными. Тогда мы отправим запрос в третий раз и воспользуемся тем результатом, который встретился в двух случаях из трех. Таким нехитрым приемом, мы хоть и не достигнем абсолюта, но теперь неприятности нас будут ожидать не раз в год, а раз в тысячу лет.

Этот метод хорош тем, что его можно очень просто масштабировать. Если нас не устраивает тысяча лет, можно превратить ее в миллион или миллиард простым повторением запросов. Это, конечно, увеличивает затраты, но тут хочу напомнить, что бизнес-задачи стоят существенно дешевле, чем развлечения. У вас может быть миллион записей о продажах. Но практически любой запрос на получение статистики даст вам на выходе текст SQL запроса, который уложится в 100 токенов. Текущая цена 100 выходных токенов у модели gpt-4o-mini всего лишь 0.00006 долларов. Т.е. 1000 запросов вам обойдутся в 6 центов, ну а две тысячи в целых 12. Есть, конечно, еще входные токены, но они стоят в разы меньше. Gpt-4o-mini прекрасно справляется с бизнес-задачами. Но есть, например китайская Deepseek coder v3, которая по утверждениям некоторых работает еще лучше. Так она стоит еще дешевле.

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

См. также

Нейросети 8.3.6 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Обработка подключения фотокамер Canon и Nikon к Управление торговлей 11.4 для потоковой загрузки фотографий в карточки товаров с автоматическим удалением фона

22800 руб.

24.06.2021    9949    4    4    

15

Мастера заполнения Нейросети Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Расширение для заполнения описания товара (номенклатуры) с помощью модели ИИ ChatGPT с ключевыми словами. Расширение формирует продающее описание товара по его наименованию с помощью модели искусственного интеллекта. Будет полезно для владельцев интернет магазинов, каталогов товаров и продающих через маркетплейсы. Адаптировано для основных конфигураций: УТ, ЕРП, КА, УНФ. Прошло аудит на 1cfresh.com. Версия для автоматического заполнения

5000 руб.

13.03.2023    18373    47    50    

76

Нейросети Мастера заполнения Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Расширение для заполнения описания номенклатуры с помощью модели ИИ GigaChat от Сбера. Расширение формирует продающее описание товара по его наименованию с помощью модели искусственного интеллекта. Будет полезно для владельцев интернет магазинов, каталогов товаров и продающих через маркетплейсы. Адаптировано для основных конфигураций: УТ, ЕРП, КА, УНФ.

5000 руб.

08.11.2023    2792    12    0    

21

Нейросети Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

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

3 стартмани

09.01.2025    168    3    svcoopers    0    

0

Инструментарий разработчика Нейросети Программист Платформа 1С v8.3 Абонемент ($m)

Решение демонстрирует механизмы взаимодействия с сетями TVM (Telegram Open Network Virtual Machine), такими как Everscale, TON и другими, построенными на базе этой виртуальной машины. Взаимодействие реализовано через клиента командной строки ever-cli. Пример реализации выполнен для сети Everscale, но с небольшими доработками может быть использована для сети TON.

2 стартмани

27.12.2024    292    0    lectorkoba    0    

2

Нейросети Россия Бесплатно (free)

Иногда читаешь статью на Инфостарте и понимаешь, что для тебя это слишком сложно. К счастью, сейчас есть искусственный интеллект. Искусственный интеллект разберет статью на тезисы и ответит на вопросы о непонятом. Можно, конечно, задать вопрос автору статьи, но есть проблема. Всегда есть вероятность, что твой вопрос окажется «глупым». С искусственным интеллектом можно не стесняться и задавать любые вопросы. Хочу рассказать, как я осмысливал сложную статью с Инфостарта с помощью языковой модели O1 от OpenAI.

24.12.2024    757    Torin57    1    

4

Нейросети Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

23.12.2024    2315    mkalimulin    35    

33

Нейросети Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для использования моделей искусственного интеллекта (LLM) в целях написания кода 1С и других без использования внешних сервисов. Для работы с ИИ необходим только компьютер пользователя.

1 стартмани

16.12.2024    2402    8    gariki    55    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. XilDen 504 10.01.25 12:48 Сейчас в теме
Очень интересно и доступно всё описано) Спасибо за статью!
2. DmitryKSL 157 10.01.25 14:03 Сейчас в теме
Есть практика замены искусственным интеллектом работы программиста? Хотя бы банальные вещи. Просто интересно об этом было бы почитать. Если что я про 1С.
4. AlexanderEkb 25 10.01.25 15:28 Сейчас в теме
(2) Конечно. Уже с 1с работает всё отлично. Я только так программирую в 1с с использованием аи-агентов. Без них уже сложно, и медленно будет.
8. DmitryKSL 157 10.01.25 16:17 Сейчас в теме
(4) Что именно используете? Можно немного подробнее?
9. AlexanderEkb 25 10.01.25 16:52 Сейчас в теме
(8) IDE: Cursor, в первую очередь. Для генерации больших обьёмов тестовых данных, тестовым модулей. Для написания кода и форм. Для анализа конфигураций, для изменение кода в конфигурации по промту пока не использую
6. mkalimulin 1236 10.01.25 15:45 Сейчас в теме
(2) На сегодняшний день достаточно надежно работает получение произвольных отчетов. Т.е. тут мы имеем полную замену программиста. Пользователь работает напрямую, без человека-посредника.
На подходе реструктуризация базы и создание произвольных алгоритмов. Т.е. пользователь говорит что-то типа: "А теперь мне надо вести учет по размерам", а в результате происходит перестройка базы
7. wonderboy 389 10.01.25 16:14 Сейчас в теме
(2) Прям замены врядли такое успешно практикуют. Но помощь программисту - действительно очень существенная. Вот показывал пример:
https://rutube.ru/video/aea514d0d1882a158393428f0e00f93a/
3. SerVer1C 838 10.01.25 14:36 Сейчас в теме
Расскажите, в каких бизнес-кейсах (штук 5, хотя бы) вы применяете БЯМ ?
5. mkalimulin 1236 10.01.25 15:40 Сейчас в теме
(3) Прием заказов от покупателей. Получение произвольных отчетов.
https://infostart.ru/1c/articles/2269344/ вот здесь подробно описано
10. quazare 3863 10.01.25 17:02 Сейчас в теме
(5) забавно, сейчас выглядит как «игрушка», но за подобным будущее
11. grumagargler 727 10.01.25 18:57 Сейчас в теме
Сегодня ИИ в нагнетании ажиотажа не нуждается, но проблемки всё-таки есть, и мне кажется в задачах для бизнеса, нечестно оправдывать галлюцинации машины, сравнивая её с галлюцинациями человека. Если про бизнес, то на мой взгляд, это всё равно что если бы арифметические операции машиной выполнялись почти всегда точно, а если есть претензии - ну так попробуй сам в уме подсчитать. Другими словами, несмотря на то, что это новое-прорывное-прекрасное, бизнес-требования всё-таки диктуются жизнью, и это нормально, что нам хочется чтобы машина не ошибалась. А она к сожалению, пока ещё ошибается.

Один из примеров (тоже очень активно занимаемся темой виртуальных ассистентов). Допустим, одна из функций агента добавляет задачу для пользователя в информационную базу. Функция принимает на вход текст задачи, дату и время, продолжительность. Всё работает, если диалог строится примерно таким образом: Я: Создай задачу ИИ: Скажите текст задачи, дату и продолжительность. Я: Позвонить клиенту, завтра в два часа дня. ИИ: Я создал для вас задачу #123.

Затем, я например говорю: Я: Я должен завтра позвонить клиенту и обсудить детали договора. ИИ: Я создал для вас задачу #124. Время он не спросил и передал в мою функцию 9 утра, при этом и в описании параметров и в самой функции указано, что ИИ обязан спросить время у пользователя. Тоже и с продолжительностью, передано 30 минут, хотя ни значения по умолчанию ни каких-то других указаний в схеме описания функции нет.

Это один из примеров, есть и другие.

По поводу решения проблемы не детерминированности путем многократного выполнения запросов, не очень понятно с практической точки зрения. ИИ может параллельно запрашивать функции, результаты которых лежат в основе дальнейших рассуждений модели, ещё не видимых пользователю, а также вовлекает создание объектов в информационной базе, что существенно меняет ответ функции при повторном запуске всего цикла. Для голосовых помощников, это в принципе неприемлемо, мы на пупе крутимся за десятые доли секунды, чтобы максимально обеспечить естественность общения с помощником.
12. mkalimulin 1236 10.01.25 20:42 Сейчас в теме
(11) Мне кажется ваша проблема в том, что вы слишком прямолинейно подходите к решению задач.
Почему бы не делать то, что вы делаете в два прогона? Сначала промт от пользователя и получение структурированной задачи. Если вы в тулзах укажете все параметры необязательными, тогда и никаких 9 утра и 30 минут не будет. На втором шаге сравниваете эту не полностью заполненную структуру с тем, что должно быть и получаете список того, что надо заполнить...
Вы "на пупе крутитесь" потому, что сами себя туда загнали. Я вот принимаю голосовое сообщение в Телеграм и через некоторое время выдаю пользователю ответ. И это тоже естественно. Все уже так привыкли: пишешь что-то в мессенджер, а тебе через какое-то время отвечают. Вы уперлись в то, что должен быть именно разговор. А это, кстати, не самое "естественное", если можно так выразиться. Есть определенная ассиметрия. Для человека комфортнее когда он выдает на выход голосом, а принимает текстом. Человеку так легче. Говорить легче, чем писать, но читать легче, чем слушать
13. grumagargler 727 10.01.25 22:10 Сейчас в теме
(12) > Мне кажется ваша проблема в том, что вы слишком прямолинейно подходите к решению задач

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

> Вы "на пупе крутитесь" потому, что сами себя туда загнали.

Мне кажется вы изолировали себя от реальности и смотрите на задачи с позиции уже полученного опыта работы с ИИ, а не потребностей бизнеса. Мне почти неудобно вас спрашивать, а зачем тогда OpenAI разрабатывает модели gpt-4o-realtime* (эти модели позволяют создавать разговорные среды с низкой задержкой, и поддерживают ввод и вывод аудиоданных в реальном времени) и представляете ли вы себе что такое требования заказчика и существование категории работников, у которых руки, например, в перчатках, а из техники, смартфон в халате или автономный raspberry pi.
14. mkalimulin 1236 10.01.25 22:51 Сейчас в теме
(13) Ну раз такие требования заказчика, тогда да, ничего не поделаешь.
А чем вам рецепт с необязательными параметрами не понравился?
17. AlexanderEkb 25 11.01.25 06:13 Сейчас в теме
(11) я читал ту переписку, которые вы на инфостарте скидывали про эту проблему с function calling, где вам много давали по теме и не по теме советов как обойти это. Я так понял проблема эта так и не решилась. Интересно, у вас запрос разве не попадает в вашу функцию в коде, которая потом его пересылает llm-ке? В этой функции перед тем как передать запрос пользователя дальше по цепочке, вроде можно же закинуть llm-ке запрос на получение параметров из запроса и прервать цепочку отправки запроса дальше при отсутствии необходимого. Те, я так понимаю, эта проблема есть, но, если я вам правильно понимаю, она специфична для function calling в gpt. Те, при другой реализации - это проблема решается парой лишней строчек кода?
wonderboy; +1 Ответить
18. AlexanderEkb 25 11.01.25 06:22 Сейчас в теме
(11) А какие фреймоврки используете? CrewAI не пробовали?
15. grumagargler 727 10.01.25 23:13 Сейчас в теме
> А чем вам рецепт с необязательными параметрами не понравился?

В одном комментарии сложно передать всё, что приходилось пробовать. Рецепт рабочий в одной ситуации, но вылазит в другой. Чтобы бы вы понимали, мы уже дошли до того, что записываем разговоры (теперь мы понимаем больших вендоров), чтобы потом у себя воспроизводить общение пользователя и смотреть, где лажает. Потому что у себя - всё работает, а потом пользователи жалуются, и правильно жалуются, видим по логам что передает или запрашивает или не запрашивает (а должен) ИИ. И главное, как это надёжно тестировать? Да, есть у нас своя консоль, есть свой прокси-сервер, который смотрит параметры запроса от сервера ИИ, сравнивает со схемой функций, вычисляет что обязательно, что не обязательно, что обязательно, но можно передать 0 или пустую строку и т.д., есть тесты-промпты и т.д., но потом у заказчика - всё равно как-то что-то скажет, и что-то ломается. В целом - работает, но наша практика показывает, что для того, чтобы оно очень хорошо работало, пользователю нужно всё-таки учиться определенной схеме общения с ИИ, чтобы ИИ не ошибался.
16. mkalimulin 1236 11.01.25 00:06 Сейчас в теме
(15) Я тоже одно время думал, что пользователи со временем наработают опыт общения с ИИ и все наладится.
Но сейчас склонен считать, что это было заблуждением. Надо стремиться создавать такие сервисы, где от пользователя не потребуется никакой опыт. Он просто говорит, что ему надо и получает, что ему надо
Оставьте свое сообщение