Сервис 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».
В интерфейсе конфигурации доступны две обработки:
-
AI ассистент — реализует функции AI-ассистента для генерации ответов, имитируя чат-бот с удобным интерфейсом (в целом, реализовано как в 1С:СППР).
-
Тестирование API Yandex GPT ассистента — инструмент для проверки и отладки API. Полезен для освоения последовательности действий, необходимых для получения генеративного ответа, а также для отладки каждого метода.
Форма «AI ассистента»
Форма «Тестирование API Yandex GPT ассистента»
Терминология API
-
Каталог пользователя — рабочее пространство в Yandex Cloud, создаваемое при регистрации. Включает каталог
default
и сетьdefault
. Пользователь может создавать новые каталоги и ресурсы, управлять правами доступа. -
folderId — идентификатор каталога пользователя.
-
File — загружаемый файл для генерации ответов. Файлы могут быть маркированы с помощью свойства
labels
. -
Search Index — поисковый индекс, созданный для определенного набора файлов или всех файлов в каталоге пользователя. Индексы могут быть маркированы с помощью свойства
labels
. -
Assistant — AI ассистент.
-
Threads — ветка (поток) AI ассистента.
-
Message — сообщение с вопросом пользователя.
-
Run — задача для генерации ответа.
Базовый алгоритм взаимодействия с сервисом включает следующие этапы:
- Загрузка файлов в каталог пользователя - файлы могут загружаться в один или несколько каталогов. В текущей реализации все файлы размещаются в едином каталоге пользователя, при этом количество каталогов и файлов внутри них может варьироваться;
- Создание поискового индекса - пользователь имеет возможность создать один или несколько поисковых индексов. Каждый индекс может быть связан с одним или несколькими файлами, загруженными в каталог;
- Создание AI-ассистента - на данном этапе пользователь создает AI-ассистента, который будет использоваться для дальнейшего взаимодействия;
- Создание ветки ассистента - для организации диалога создается ветка ассистента, которая представляет собой отдельный контекст взаимодействия;
- Создание сообщения с идентификатором ветки ассистента - пользователь формирует сообщение, указывая идентификатор созданной ветки ассистента, чтобы обеспечить корректную обработку запроса в рамках выбранного контекста;
- Запуск задачи генерации ответа и ожидание завершения - инициируется процесс генерации ответа на основе предоставленного сообщения. Пользователь ожидает завершения формирования ответа, после чего получает результат.
Пошаговый сценарий использования (первый запуск без переиспользования предыдущих результатов), используя обработку "Тестирование API Yandex GPT ассистента"
-
Проверить наличие файлов в каталоге пользователя с помощью команды
Files.List()
. Ответ сервера при пустом каталоге:{"files":[],"next_page_token":""}
. -
Загрузить файлы в облако с помощью команды
Files.Create()
. -
Проверить наличие файлов в каталоге пользователя с помощью команды
Files.List()
. Ответ сервера при наличии файлов:{"id":"fvtsbqj4fahsllcbe4mk","folder_id":"b1g0v75e6ebk1diphg05"...
. -
Создать поисковый индекс с помощью команды
SearchIndexs.Create()
. В асинхронном режиме сервер возвращает объектOperation
с идентификатором операции —operationId
. -
Проверить завершение операции с помощью команды
Operations.Get()
. Успешный ответ:{"done": true, "response": {"@type": "type.googleapis.com/yandex.cloud.ai.assistants.v1.searchindex.SearchIndex"...
, гдеid
— идентификатор индекса. -
Проверить наличие поискового индекса с помощью команды
SearchIndexs.Get()
, используяid
из предыдущего шага. Успешный ответ:{"id":"fvtngm941398v3acj2n0","folder_id":"b1g0v75e6ebkldiphg05"...
. -
Создать AI ассистента с помощью команды
Assistants.Create()
. При успешном создании заполняется полеassistantId
. -
Создать ветку ассистента с помощью команды
Threads.Create()
. При успешном создании заполняется полеthreadid
. -
Заполнить поле
content
вопросом и выполнить командуMessages.Create(threadId, content)
. При успешном создании заполняется полеmessageId
. -
Запустить задачу с помощью команды
Runs.Create(assistantId, threadid)
. При успешном создании заполняется полеrunId
. -
Получить ответ с помощью команды
Runs.Get(runId)
. Ответ формируется через некоторое время. Статус"status":"COMPLETED"
указывает на завершение задачи.
Пошаговый сценарий использования используя обработку "AI ассистент"
- Если в каталог пользователя загружены файлы, то достаточно нажать на кнопку
Начать работу с AI ассистентом
и дождаться сообщения в чатеГотов к работе...
. Если файлы предварительно в каталог пользователя не загружены, то необходимо нажать на кнопкуОбновить файлы
, выбрать каталог на диске с файлами и дождаться сообщения в чатеГотов к работе...
- В поле ввода
Вопрос пользователя
ввести строку с текстом вопроса и нажать на кнопкуОтправить вопроса
- Текст вопроса отобразится в чате внутри блока зеленого цвета, а полученный через некоторый промежуток времени ответ также отобразится в чате, но в серого цвета
Все действия, связанные с сервисом, которые подробно описаны в предыдущем разделе в пунктах с 1 по 11, скрыты от пользователей. Однако для целей отладки все идентификаторы сохраняются и доступны для анализа в разделе «Отладка (свёрнуто)».
Подготовка к работе
-
Создать или использовать существующий Яндекс ID.
-
Получить API-ключ в Yandex.Cloud и сохранить его в свойстве
APIключ
структурыПараметрыАвторизации
в модулеYandexGptОбщегоНазначенияКлиентСервер
. -
Получить идентификатор каталога и сохранить его в свойстве
FolderId
структурыПараметрыАвторизации
в модулеYandexGptОбщегоНазначенияКлиентСервер
. -
Создать платежный аккаунт.
-
Привязать платежный аккаунт к облаку для получения расширенных квот.
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).