Библиотека представлена в виде расширения 1С. В расширении один общий модуль, три справочника и одна демонстрационная обработка. Расширение применимо к любой типовой или нетиповой конфигурации.
Обзор функций
Генерация(промт, модель, температура)
Это основная функция библиотеки. Вы задаете большой языковой модели вопрос и получаете ответ. Вопрос тут зовется промтом, так уж сложилось. Вторым параметром вы задаете модель, это ссылка на элемент справочника Модели. В настоящий момент список всех моделей выглядит так:
Для генерации можно использовать семь моделей от четырех провайдеров. У каждого провайдера есть свои особенности в реализации API. Но от вас не требуется вникать в эти технические детали. Вы можете полностью сосредоточиться на разработке логики вашего решения.
Параметр Температура служит для задания уровня "креативности" модели. Применение больших языковых моделей в 1С, как правило, подразумевает нулевую "креативность". Например, вы даете пользователю ввести вопрос, преобразовываете этот вопрос в запрос к базе данных, выполняете запрос и выдаете результат пользователю. В этом случае надо устанавливать значение параметра Температура в 0.
Но есть задачи именно на креативность. Например вы говорите большой языковой модели: у меня вот такая структура базы данных, придумай 5 разных запросов к ней. Здесь будет уместно установить значение параметра Температура в 0.8 или в 1.
ТекстЗапроса(промт, модель, схема, общий_журнал=ложь, журнал_ошибок=ложь)
Эта функция выдает текст запроса на языке запросов 1С. В дополнении к промту и модели, вы указываете схему. Схема - это ссылка на элемент справочника Схемы БД. Схема состоит из двух частей. Первая описывает таблицы. Вторая задает соответствие между описанием из первой части и реальными именами таблиц и полей в вашей базе.
Вектор(текст, модель)
Для заданного текста выдает массив чисел. Это векторное представление (embedding) текста. Это нужно для сравнения текстов. Дело в том, что в модель нельзя загрузить большой объем текста за раз. Допустим, вы хотите сделать на базе искусственного интеллекта некоего консультанта. Весь объем знаний этого консультанта вам придется разбить на относительно небольшие части. Затем вам потребуется как-то определять к какой именно части относится вопрос пользователя. Здесь вам и поможет векторное представление.
ПолучитьТекстИзАудио(аудио, модель)
Речь может быть письменной, а может быть голосом. Во втором случае, прежде, чем задействовать большую языковую модель, нам потребуется распознать текст. Эта функция преобразует аудио данные в текст.
ПолучитьАудиоИзТекста(текст, модель)
Обратная операция, т.е. озвучка текста может потребоваться, если вы захотите создать полностью голосового бота.
ЗапроситьИзображение(промт, модель)
Создает запрос на генерацию изображения на основе текстового описания (промт). В результате выдает идентификатор запроса на создание изображения. Этот идентификатор далее используется в функции ПолучитьИзображение()
ПолучитьИзображение(идентификатор, модель)
Получаем изображение, созданное ранее по запросу ЗапроситьИзображение(). Изображение выдается в base64
ПолучитьСообщениеТелеграм(бот)
Большие языковые модели работают с текстом. Поэтому интеграция с мессенджерами вам рано или поздно потребуется. Эта функция получает сообщение от бота Телеграм.
ОтправитьСообщениеТелеграм(бот, чат, текстСообщения, меню=неопределено)
Эта функция отправляет сообщение в чат Телеграм.
ОтправитьАудиоТелеграм(бот, чат, аудиофайл, меню=неопределено)
Эта функция отправляет голосовое сообщение в чат Телеграм.
ПолучитьАудиоДанныеТелеграм(бот, сообщение)
А с помощью этой функции вы сможете вытащить аудио-данные из сообщения от бота Телеграм. Там это делается немного замороченно, в несколько шагов. Эта функция упростит вам жизнь.
ПроверитьИЗаполнитьСправочники()
Эта процедура производит начальное заполнение справочников БИИ_Провайдеры и БИИ_Модели, если они пустые.
Тестировалось на 8.3.23.1912.
Управляемые формы.
UPD 19.03.2024
Добавлены три модели генерации от Anthropic. Anthropic конкурирует с OpenAI, предлагая модели с большим контекстным окном и более низкой ценой. Общее количество моделей теперь достигло 17. Из них 10 - генерация, 4 - векторы, 2 - распознавание речи, 1 - синтез речи.
UPD 07.04.2024
Добавлена функция получения текста запроса на языке запросов 1С.
UPD 04.05.2024
Добавлена модель для генерации изображений yandex-art и две новые функции ЗапроситьИзображение() и ПолучитьИзображение()
UPD 12.05.2024
Добавлена функция отправки аудио в Телеграм ОтправитьАудиоТелеграм(). Теперь можно сделать полностью голосовой интерфейс. Пользователь говорит голосом и получает ответ тоже голосом. Также добавлены две модели типа Текст2Аудио (tts) от OpenAI. Общее количество поддерживаемых моделей сейчас 21.
UPD 19.06.2024
Компания NVIDIA тут решила, что не все ей для других стараться, надо что-то и для себя сделать. Выпустила свою LLM модель. 340B, что немало. Напомню, что нашумевший в свое время ChatGPT имел в своей основе модель 130B. У модели NVIDIA уже неплохой ЭЛО. Думаю, что у этого гиганта достаточно ресурсов, чтобы войти в топ и составить компанию расположившимся там Microsoft, Google и Amazon. Добавил в библиотеку нового провайдера NVIDIA и новую модель генерации nvidia/nemotron-4-340b-instruct. На данный момент на старте дают 1000 бесплатных запросов, что означает по сути бесплатный доступ. Отвечает не так быстро, как GPT-4o, но в целом приемлемо.
UPD 27.06.2024
А вот и первый "китаец". Китайские модели от провайдеров Alibaba, 01 AI и Zhipu AI уже давно присутствуют на рынке и занимают места крепких середнячков в рейтинге ЭЛО https://chat.lmsys.org/?leaderboard. Но до сих пор у меня лично не получалось подключиться к кому-нибудь из них через API. То номер телефона нужен китайский, то еще что-то. Наконец удалось подключиться и проверить работу флагманской модели glm-4-0520 от Zhipu AI. Процесс подключения прошел не просто легко, а суперлегко. На сайте указал российский номер телефона, email. Получил на email код подтверждения, ввел его и сразу же получил работающий API ключ. Начальный уровень бесплатный. Пока не настучишь запросов на 50 юаней. При том, что у меня средний запрос это примерно 0.1 юань. В общем, хорошая альтернатива Open AI, на фоне того, что они недавно объявили об ужесточении мер по контролю за доступом.
Также есть новости от Anthropic. Они запускают линейку 3.5 на смену 3. Начали, правда не с флагманской Opus, а со средней Sonnet. Тем не менее, их модель claude-3-5-sonnet-20240620 прямо сейчас находится на втором месте в рейтинге. Добавил и эту модель в библиотеку.
UPD 06.07.2024
Партия сказала "надо"... В Open AI заявили, что будут предпринимать дополнительные меры к тому, чтобы их модели нельзя было использовать на "неправильных" территориях. Видимо, в руководстве Китая быстро смекнули, к чему идет дело, и распорядились немедленно организовать доступ к их моделям для всех желающих, по всему миру. Без проблем подключился к еще одному китайскому лидеру 01 AI. Их модель yi-large в рейтинге lmsys сейчас располагается чуть выше, чем glm-4-0520 от Zhipu AI, которую я анонсировал в прошлый раз. Вдвоем эти "китайцы" буквально дышат в затылок лидерам LLM (OpenAI, Anthropic, Google). Добавил в библиотеку еще одного провайдера и еще одну модель.
UPD 15.08.2024
Добавил возможность вызова функций. Теперь можно не только поболтать, но и сделать из модели полезного работника. Подробности здесь: Приделываем "лапки" к ИИ