AI-ассистент (чат-бот) на базе YandexGPT для генерации ответов по локальной базе документов

28.01.25

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
ВыгрузкаБазыДанных
.dt 5,19Mb
76
76 Скачать бесплатно

Сервис Yandex Foundation Models

Подробная информация о сервисе Yandex Foundation Models доступна по ссылке: О сервисе Yandex Foundation Models.

Полное руководство по использованию YandexGPT API можно найти на официальном сайте: Yandex.Cloud.

AI Assistant API

AI Assistant API — это инструмент для создания AI-ассистентов. Он позволяет разрабатывать персонализированных помощников, реализовывать сценарии генерации ответов с использованием информации из внешних источников (RAG, Retrieval Augmented Generation), а также сохранять контекст запросов к модели.

Официальная документация: AI Assistant API.

На момент написания статьи функциональность AI Assistant API находится на стадии Preview.

Постановка задачи

Реализовать на платформе «1С:Предприятие 8» AI-ассистента для генерации ответов на основе локальной базы документов, используя только возможности технологической платформы. В качестве примера выбран AI Assistant API от Yandex, так как он предоставляет широкий набор API и готовую Yandex.Cloud Python SDK (Yandex.Cloud SDK), что упрощает взаимодействие с сервисом.

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

Результат

В рамках задачи реализована базовая функциональность, объединенная на уровне метаданных в подсистему «YandexGpt».

В интерфейсе конфигурации доступны две обработки:

  1. AI ассистент — реализует функции AI-ассистента для генерации ответов, имитируя чат-бот с удобным интерфейсом (в целом, реализовано как в 1С:СППР). 

  2. Тестирование API Yandex GPT ассистента — инструмент для проверки и отладки API. Полезен для освоения последовательности действий, необходимых для получения генеративного ответа, а также для отладки каждого метода.

Форма «AI ассистента»

 

 

Форма «Тестирование API Yandex GPT ассистента»

 

 

Терминология API

  1. Каталог пользователя — рабочее пространство в Yandex Cloud, создаваемое при регистрации. Включает каталог default и сеть default. Пользователь может создавать новые каталоги и ресурсы, управлять правами доступа.

  2. folderId — идентификатор каталога пользователя.

  3. File — загружаемый файл для генерации ответов. Файлы могут быть маркированы с помощью свойства labels.

  4. Search Index — поисковый индекс, созданный для определенного набора файлов или всех файлов в каталоге пользователя. Индексы могут быть маркированы с помощью свойства labels.

  5. Assistant — AI ассистент.

  6. Threads — ветка (поток) AI ассистента.

  7. Message — сообщение с вопросом пользователя.

  8. Run — задача для генерации ответа.

Базовый алгоритм взаимодействия с сервисом включает следующие этапы:

  1. Загрузка файлов в каталог пользователя - файлы могут загружаться в один или несколько каталогов. В текущей реализации все файлы размещаются в едином каталоге пользователя, при этом количество каталогов и файлов внутри них может варьироваться;
  2. Создание поискового индекса - пользователь имеет возможность создать один или несколько поисковых индексов. Каждый индекс может быть связан с одним или несколькими файлами, загруженными в каталог;
  3. Создание AI-ассистента - на данном этапе пользователь создает AI-ассистента, который будет использоваться для дальнейшего взаимодействия;
  4. Создание ветки ассистента - для организации диалога создается ветка ассистента, которая представляет собой отдельный контекст взаимодействия;
  5. Создание сообщения с идентификатором ветки ассистента - пользователь формирует сообщение, указывая идентификатор созданной ветки ассистента, чтобы обеспечить корректную обработку запроса в рамках выбранного контекста;
  6. Запуск задачи генерации ответа и ожидание завершения - инициируется процесс генерации ответа на основе предоставленного сообщения. Пользователь ожидает завершения формирования ответа, после чего получает результат.

Пошаговый сценарий использования (первый запуск без переиспользования предыдущих результатов), используя обработку "Тестирование API Yandex GPT ассистента"

  1. Проверить наличие файлов в каталоге пользователя с помощью команды Files.List(). Ответ сервера при пустом каталоге: {"files":[],"next_page_token":""}.

  2. Загрузить файлы в облако с помощью команды Files.Create().

  3. Проверить наличие файлов в каталоге пользователя с помощью команды Files.List(). Ответ сервера при наличии файлов: {"id":"fvtsbqj4fahsllcbe4mk","folder_id":"b1g0v75e6ebk1diphg05"....

  4. Создать поисковый индекс с помощью команды SearchIndexs.Create(). В асинхронном режиме сервер возвращает объект Operation с идентификатором операции — operationId.

  5. Проверить завершение операции с помощью команды Operations.Get(). Успешный ответ: {"done": true, "response": {"@type": "type.googleapis.com/yandex.cloud.ai.assistants.v1.searchindex.SearchIndex"..., где id — идентификатор индекса.

  6. Проверить наличие поискового индекса с помощью команды SearchIndexs.Get(), используя id из предыдущего шага. Успешный ответ: {"id":"fvtngm941398v3acj2n0","folder_id":"b1g0v75e6ebkldiphg05"....

  7. Создать AI ассистента с помощью команды Assistants.Create(). При успешном создании заполняется поле assistantId.

  8. Создать ветку ассистента с помощью команды Threads.Create(). При успешном создании заполняется поле threadid.

  9. Заполнить поле content вопросом и выполнить команду Messages.Create(threadId, content). При успешном создании заполняется поле messageId.

  10. Запустить задачу с помощью команды Runs.Create(assistantId, threadid). При успешном создании заполняется поле runId.

  11. Получить ответ с помощью команды Runs.Get(runId). Ответ формируется через некоторое время. Статус "status":"COMPLETED" указывает на завершение задачи.

Пошаговый сценарий использования используя обработку "AI ассистент"

  1. Если в каталог пользователя  загружены файлы, то достаточно нажать на кнопку Начать работу с AI ассистентом и дождаться сообщения в чате Готов к работе.... Если файлы предварительно в каталог пользователя не загружены, то необходимо нажать на кнопку Обновить файлы, выбрать каталог на диске с файлами и дождаться сообщения в чате Готов к работе...
  2. В поле ввода Вопрос пользователя ввести строку с текстом вопроса и нажать на кнопку Отправить вопроса
  3. Текст вопроса отобразится в чате внутри блока зеленого цвета, а полученный через некоторый промежуток времени ответ также отобразится в чате, но в серого цвета

Все действия, связанные с сервисом, которые подробно описаны в предыдущем разделе в пунктах с 1 по 11, скрыты от пользователей. Однако для целей отладки все идентификаторы сохраняются и доступны для анализа в разделе «Отладка (свёрнуто)».

 

 

Подготовка к работе

  1. Создать или использовать существующий Яндекс ID.

  2. Получить API-ключ в Yandex.Cloud и сохранить его в свойстве APIключ структуры ПараметрыАвторизации в модуле YandexGptОбщегоНазначенияКлиентСервер.

  3. Получить идентификатор каталога и сохранить его в свойстве FolderId структуры ПараметрыАвторизациив модуле YandexGptОбщегоНазначенияКлиентСервер.

  4. Создать платежный аккаунт.

  5. Привязать платежный аккаунт к облаку для получения расширенных квот.

P.S. JSON Viewer позаимствован в статье //infostart.ru/1c/tools/1348459

P.S.S. Пример работы демонстрировался на файлах pdf выгруженных из статей ИТС про СППР, статья 1, статья 2, статья 3, статья 4

P.S.S.S Версия технологической платформы - 1С:Предприятие 8.3 (8.3.25.1394).

YandexGPT 1C AI Assistant

См. также

SALE! 25%

Мессенджеры и боты Системный администратор Программист Бизнес-аналитик Пользователь Руководитель проекта Платформа 1С v8.3 Платные (руб)

Развитие популярного решения для интеграции мессенджера Telegram с нашей любимой 1С - конструктор чат-ботов в Телеграм.

15000 11250 руб.

18.06.2021    67989    322    273    

379

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

Интеграция мессенджера WhatsApp и 1С: УНФ, УТ, КА, ERP - отправка и получение сообщений, картинок, файлов и видео прямо в 1С. Расширение работает с сервисом GreenApi.

15600 руб.

23.06.2023    11265    65    16    

41

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    40231    115    163    

209

SALE! 50%

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

Расширение 1С с полным набором инструментов для качественных транзакционных, триггерных и маркетинговых рассылок Email, SMS, WhatsApp, Telegram. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.

4800 2400 руб.

07.04.2014    86176    51    195    

137

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

Расширение для согласования справочников и документов в основных типовых конфигурациях. Ролевая адресация, условная маршрутизация, чат-бот telegram, интеграция с n8n, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    31350    37    49    

72

Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Сделайте взаимодействие сотрудников компании быстрым и удобным. В Личном кабинете в Телеграм сотрудники могут получать и выполнять задачи используя популярный мессенджер

11520 руб.

29.12.2022    7891    6    11    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mkalimulin 1393 29.01.25 00:28 Сейчас в теме
Возможно стоит добавить модную аббревиатуру RAG
2. aximo 2153 29.01.25 09:00 Сейчас в теме
Информация написана здорово, возможности нейросетей удивляют конечно, но 99% пользователей, прочитав данную статью, отвалятся на шаге "Создать платежный аккаунт."
3. SultanovStas 29 29.01.25 10:03 Сейчас в теме
(2) В ходе двухмесячного эксперимента было потрачено 160 рублей. Я ставил перед собой задачу разработать решение, не используя готовые библиотеки, чтобы стимулировать участников к освоению нового и интересного материала.
investec; akR00b; +2 Ответить
4. Torin57 35 29.01.25 17:45 Сейчас в теме
(3) Для чего это может быть применимо? Это может быть применимо в саппорте пользователей? Типа у пользователя что-то не получается, например, заполнить документ Премия в ЗУП 3.1 из текстового файла. Какая-нибудь ошибка с красным крестиком, или сотрудника обработка не нашла. И пользователь обращается к помощнику, спрашивает почему Садыков не подобрался. Помощник говорит, проверьте дату рождения в загрузочном файле. Проверьте что ФИО совпадает буква в букву и так далее. Что-нибудь такое?

Также поясню про себя, чтобы вы понимали с кем общаетесь. Я немножко знаком с API ИИ, детектор тролля написал, но фокус внимания у меня на другом. Я больше пользователь и писатель промтов чем специалист по ИИ. Поэтому со мной желательно говорить на уровне пользователя.
12. alexey-simf 19 25.02.25 13:42 Сейчас в теме
(4) "Проверьте что ФИО совпадает буква в букву и так далее" - это какой-то не ИИ-сценарий, а тупой алгоритмический. Как по мне, так ИИ должен не подсказки давать что проверить, а явно указывать причину, иначе чем он лучше базы данных справочной информации с хорошим поиском.

Далеко ещё до тех времён, когда ИИ станет в 1С настоящим помощником, который вместо советов подстелить соломку, на всяк случай, будет указывать на ошибку, исправлять её и пользователю останется только подтвердить изменения одной кнопкой.
5. starik-2005 3157 30.01.25 10:25 Сейчас в теме
Я сегодня попросил дипсик китайский написать статью о его АПИ с примерами на 1С 8.3. И знаете, я несколько испужался...
6. mkalimulin 1393 30.01.25 15:59 Сейчас в теме
(5) Дефицит - страшная сила. А дефицит данных для обучения ИИ - страшная вдвойне. Интернет выжали досуха, со всем, что там было. И 1С в том числе.
7. Torin57 35 01.02.25 14:16 Сейчас в теме
(5) Так что было-то? Может поделитесь?
8. zavhome@gmail.com 03.02.25 10:24 Сейчас в теме
(7) Конечно! Вот пример использования API на языке 1С 8.3. Предположим, что вы хотите отправить запрос к API и получить ответ. Для этого можно использовать встроенный объект `HTTPЗапрос`.

Пример кода:

```1C
Процедура ОтправитьЗапросКAPI()

    // Укажите URL API
    URL = "https://api.deepseek.com/v1/chat/completions";

    // Создаем HTTP-запрос
    Запрос = Новый HTTPЗапрос;
    Запрос.Адрес = URL;
    Запрос.Заголовки.Вставить("Authorization", "Bearer YOUR_API_KEY"); // Замените YOUR_API_KEY на ваш ключ API
    Запрос.Заголовки.Вставить("Content-Type", "application/json");

    // Тело запроса в формате JSON
    ТелоЗапроса = Новый Структура;
    ТелоЗапроса.Вставить("model", "deepseek-chat");
    ТелоЗапроса.Вставить("messages", Новый Массив);
    Сообщение = Новый Структура;
    Сообщение.Вставить("role", "user");
    Сообщение.Вставить("content", "Привет, как дела?");
    ТелоЗапроса.messages.Добавить(Сообщение);

    // Преобразуем тело запроса в JSON
    ТелоJSON = Новый ЗаписьJSON;
    ТелоJSON.Записать(ТелоЗапроса);
    ТелоJSON.Закрыть();

    // Устанавливаем тело запроса
    Запрос.УстановитьТелоИзСтроки(ТелоJSON.ПолучитьСтроку(), "application/json");

    // Отправляем запрос и получаем ответ
    HTTP = Новый HTTPСоединение("api.deepseek.com");
    Ответ = HTTP.Получить(Запрос);

    // Обрабатываем ответ
    Если Ответ.КодСостояния = 200 Тогда
        // Преобразуем ответ из JSON
        ОтветJSON = Новый ЧтениеJSON;
        ОтветJSON.Открыть(Ответ.ПолучитьТелоКакСтроку());
        Результат = ОтветJSON.Прочитать();
        ОтветJSON.Закрыть();

        // Выводим результат
        Сообщить("Ответ от API: " + Результат.choices[0].message.content);
    Иначе
        Сообщить("Ошибка: " + Ответ.КодСостояния);
    КонецЕсли;

КонецПроцедуры
Показать

```

### Пояснение:
1. **URL**: Укажите URL API, к которому вы хотите обратиться.
2. **Заголовки**: Добавьте необходимые заголовки, такие как `Authorization` для вашего API-ключа и `Content-Type` для указания формата данных.
3. **Тело запроса**: Создайте структуру с данными, которые вы хотите отправить, и преобразуйте её в JSON.
4. **Отправка запроса**: Используйте объект `HTTPСоединение` для отправки запроса.
5. **Обработка ответа**: Проверьте код состояния ответа и обработайте данные, если запрос успешен.

### Важно:
- Замените `YOUR_API_KEY` на ваш реальный API-ключ.
- Убедитесь, что у вас есть доступ к интернету и что URL API корректный.

Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать! 😊
10. SultanovStas 29 21.02.25 09:53 Сейчас в теме
(8) Код, конечно, ИИ сгенерирует, но он будет решать "локальную" задачу, однако основная цель разработчика заключается в решении проблемы комплексно:

1. Унификация кода - разработка универсальных решений, которые могут применяться в различных ситуациях, обеспечивая гибкость и масштабируемость.
2. Переиспользование кода - создание модулей и функций, которые легко интегрируются в другие проекты, снижая время разработки и минимизируя дублирование усилий.
3. Разбиение на логические блоки - организация кода таким образом, чтобы он был структурирован и модульным, облегчающим поддержку, модификацию и расширение функционала.
11. Torin57 35 22.02.25 19:36 Сейчас в теме
(8) Обратил внимание, что отправка http запроса к API у всех по-разному происходит.
Как минимум, насчитал 3 варианта:
Ответ = Соединение.ОтправитьДляОбработки(Запрос);

ОтветHTTP=СоединениеHTTP.ВызватьHTTPМетод(МетодHTTP, ЗапросHTTP);

Ответ = HTTP.Получить(Запрос);

Это как-то влияет на скорость обработки, в зависимости от того какой метод использовать? Или без разницы?
9. пользователь 20.02.25 15:56
Сообщение было скрыто модератором.
...
13. moondi 03.03.25 13:08 Сейчас в теме
Большое спасибо. Заинтерисовала идея. Т.е. я могу дополнить базу яндексгпт своими данными и он в приоритетном порядке будет сначала мои данные использовать, а при их нехватке из базы гпт?
14. moondi 03.03.25 13:33 Сейчас в теме
Большое спасибо. Заинтерисовала идея. Т.е. я могу дополнить базу яндексгпт своими данными и он в приоритетном порядке будет сначала мои данные использовать, а при их нехватке из базы гпт?
Оставьте свое сообщение