1. Назначение
ИИ Ассистент — это надстройка над GigaChat, которая:
-
анализирует загруженные документы (в частности, книги EPUB);
-
индексирует текст и изображения в векторной базе внутри 1С;
-
отвечает на вопросы пользователя, используя механизм RAG (Retrieval-Augmented Generation — «дополненная генерация с поиском»).
Он действует как «внутренний ИИ», обученный на твоих данных.
2. Архитектура
2.1 Компоненты системы
Компонент | Назначение | Пример |
---|---|---|
ИИ_ОбщиеМодули | Служебные функции: JSON, кодировки, конвертации. | Преобразует вектор в строку JSON для записи в регистр. |
ИИ_GigaChat | Работа с API GigaChat (chat/completions, embeddings). | Вызывает "GigaChat-Max" или "Embeddings" , получает токен. |
ИИ_RAG | Поиск фрагментов по косинусному сходству. | Находит 5 наиболее релевантных страниц книги. |
ИИ_АссистентОбщий | Основная логика диалога с ИИ. | Обрабатывает вопрос пользователя, вызывает ChatCompletion. |
ИИ_Ассистент (обработка) | Визуальный интерфейс (форма). | Поле для вопроса, область с HTML-ответом. |
3. Процесс работы (пошагово)
Шаг 1: Импорт книги
-
Книга
.epub
загружается пользователем через форму. -
Функция
СобратьСтраницыEPUB()
:-
Извлекает текст и изображения из каждой страницы;
-
Возвращает массив структур:
{chapter, page, text, images}
.
-
Аналогия:
«ИИ читает книгу постранично, вычленяя из HTML только слова и картинки.»
Шаг 2: Индексация
-
Для каждого фрагмента текста вызывается
ИИ_GigaChat.Embedding(Текст)
→ получается вектор (список чисел). -
Векторы сохраняются в регистр сведений
ИИ_КнигаФрагменты
. -
Изображения — в
ИИ_КнигаИзображения
.
Пример записи в регистр:
Источник | Страница | Текст | ВекторJSON |
---|---|---|---|
EPUB:Блок1 | 5 | «Машинное обучение — это...» | [0.12, 0.45, -0.31, ...] |
Шаг 3: Поиск (RAG)
-
Когда пользователь задаёт вопрос:
-
Вопрос преобразуется в вектор через
Embedding
. -
Функция
НайтиТопK
ищет 5 ближайших фрагментов по косинусному сходству:Score = Сумма(A[i]*B[i]) / (Sqrt(ΣA²) * Sqrt(ΣB²))
-
Возвращаются лучшие фрагменты текста с высоким
Score
.
-
Аналогия:
ИИ находит «похожие» страницы книги, где уже есть ответ.
Шаг 4: Генерация ответа
-
Функция
СпроситьПоКниге(Вопрос)
:-
Собирает топ-фрагменты.
-
Формирует сообщение в стиле:
Вопрос: Как пробить чек возврата? Контекст: [1] В разделе «Возврат продажи» выберите режим «Возврат по чеку»... [2] Без чека — откройте форму «Возврат продажи» вручную...
-
Отправляет всё это в
GigaChat.ChatCompletion
.
-
-
Модель (
GigaChat-Max
) выдаёт осмысленный ответ с цитатами.
Шаг 5: Формирование HTML-ответа
Функция ПостроитьHTMLОтвет_Строкой
делает визуальный вывод:
-
Основной ответ — сверху (в формате Markdown → HTML).
-
Ниже — список цитат, откуда взята информация.
-
Если в источнике есть картинки — они вставляются
<img src="data:image/...">
.
Пример вывода в форме:
Ответ:
Чтобы оформить возврат по чеку в УНФ:
-
Откройте вкладку «Возврат продажи» → «Режим».
-
Найдите нужный чек и удалите лишние позиции.
-
Нажмите «Пробить чек» — система создаст чек возврата.
Источники:
-
Книга «УНФ — руководство кассира», стр. 12
-
Книга «Практика УНФ», стр. 17
4. Визуально это выглядит так:
-
Поле ввода вопроса:
"Как оформить возврат по чеку?" -
Кнопка: «Спросить»
-
Результат (HTML-поле):
Текст + цитаты + картинки (если были в книге).
Проверено на следующих конфигурациях и релизах:
- Управление нашей фирмой, редакция 3.0, релизы 3.0.12.170
Вступайте в нашу телеграмм-группу Инфостарт