211 lines
16 KiB
Markdown
211 lines
16 KiB
Markdown
<!--
|
||
Copyright (c) 2024-2025 Тарабанов Александр Викторович
|
||
All rights reserved.
|
||
|
||
This software is proprietary and confidential.
|
||
Unauthorized copying, modification, or distribution is prohibited.
|
||
|
||
For licensing inquiries: info@hb3-accelerator.com
|
||
Website: https://hb3-accelerator.com
|
||
GitHub: https://github.com/HB3-ACCELERATOR
|
||
-->
|
||
|
||
# Интерактивный обмен веб-страницами с ИИ-ассистентом в корпоративном чате
|
||
|
||
## Описание задачи
|
||
|
||
Реализовать функционал, позволяющий пользователям создавать веб-страницы с данными о компании, продуктах или статьями (блог), делиться ими в корпоративном чате в виде интерактивных сообщений с кнопками, а также обеспечивать автоматическое добавление этих страниц в базу знаний (RAG) для поиска и генерации ответов ИИ-ассистентом. Страницы должны быть доступны для поиска в интернете по ключевым словам.
|
||
|
||
---
|
||
|
||
## Основные требования
|
||
|
||
1. **Создание веб-страниц**
|
||
- Форма на странице `/content` для ввода информации (название, описание, текст, теги, изображения и т.д.).
|
||
- Возможность предпросмотра и редактирования страницы до публикации.
|
||
- Кнопка "Поделиться", после нажатия которой страница сохраняется и становится доступной для дальнейших действий.
|
||
|
||
2. **Публикация и доступность**
|
||
- После публикации страница доступна по уникальному URL (например, `/content/page/123` или `/content/page/название`).
|
||
- Страница оптимизирована для SEO (мета-теги, ЧПУ-адреса, sitemap.xml).
|
||
- При необходимости — настройка индексации для поисковых систем (robots.txt).
|
||
- **Оптимизация для ИИ-поиска**: страницы должны быть структурированы и открыты для индексации поисковыми ИИ (Perplexity, GPT, Gemini и др.). Рекомендуется:
|
||
- Использовать семантическую разметку (schema.org, JSON-LD)
|
||
- Добавлять структурированные данные (FAQ, Article, Product)
|
||
- Открывать страницы для crawler-ботов ИИ (не блокировать их в robots.txt)
|
||
- Обеспечивать чистый, легко читаемый HTML-код
|
||
- Добавлять релевантные ключевые слова и теги
|
||
|
||
3. **Интеграция с корпоративным чатом**
|
||
- После публикации пользователь может отправить страницу в чат с помощью кнопки "Поделиться в чат".
|
||
- В чате появляется интерактивное сообщение (карточка) с краткой информацией о странице и кнопкой (например, "Показать содержимое").
|
||
- При нажатии на кнопку ассистент отправляет содержимое страницы (или его резюме) в чат.
|
||
- Возможность задать вопрос по содержимому страницы через чат (ассистент ищет ответ только в этой странице).
|
||
- При публикации страницы в чатах пользователей (веб, Telegram, email) вместе с ответами на сообщения должно автоматически добавляться интерактивное сообщение с заголовком страницы и кнопкой "Подробнее". При нажатии на кнопку ИИ-ассистент отправляет содержимое веб-страницы в чат.
|
||
|
||
4. **Интеграция с RAG (Retrieval-Augmented Generation)**
|
||
- После публикации страница автоматически разбивается на смысловые блоки (например, по абзацам).
|
||
- Каждый блок векторизуется (создается embedding) и сохраняется в векторное хранилище (Qdrant, Pinecone и т.д.) с метаданными (id страницы, теги, автор, дата).
|
||
- Ассистент использует эти данные для поиска и генерации ответов на вопросы пользователей.
|
||
- В форме создания страницы добавить выпадающий список "Интегрировать с RAG" (Да/Нет). При выборе "Да" ИИ-ассистент анализирует содержимое страницы, автоматически предлагает список возможных вопросов и ответов (Q&A) по теме страницы. Пользователь может отредактировать эти вопросы и ответы, отметить чекбоксами нужные и нажать "Добавить" — выбранные Q&A будут сохранены в базу знаний для последующего поиска и генерации ответов.
|
||
|
||
5. **Поиск в интернете**
|
||
- Страницы доступны для индексации поисковыми системами.
|
||
- Поиск по ключевым словам приводит к отображению соответствующих страниц.
|
||
|
||
---
|
||
|
||
## Пользовательские сценарии
|
||
|
||
1. **Создание и публикация страницы**
|
||
- Пользователь заполняет форму на `/content`, нажимает "Поделиться".
|
||
- Страница сохраняется, появляется уникальный URL.
|
||
|
||
2. **Обмен в чате**
|
||
- Пользователь нажимает "Поделиться в чат".
|
||
- В чате появляется карточка с кнопкой "Показать содержимое".
|
||
- Другой пользователь нажимает кнопку — ассистент отправляет содержимое страницы в чат.
|
||
|
||
3. **Поиск и ответы ассистента**
|
||
- Пользователь задаёт вопрос по теме страницы.
|
||
- Ассистент ищет ответ в RAG по содержимому страницы и формирует релевантный ответ.
|
||
|
||
4. **Поиск через интернет**
|
||
- Внешний пользователь находит страницу через поисковик по ключевым словам.
|
||
|
||
---
|
||
|
||
## Техническая реализация
|
||
|
||
### Frontend
|
||
- Vue.js, локальные scoped-стили
|
||
- Форма создания/редактирования страницы
|
||
- Компонент карточки для чата с интерактивной кнопкой
|
||
|
||
### Backend
|
||
- Node.js/NestJS/Fastify/Express
|
||
- REST API для создания, публикации, получения страниц
|
||
- Векторизация и интеграция с векторным хранилищем (Qdrant, Pinecone)
|
||
- Генерация и отправка сообщений в чат
|
||
|
||
### Векторное хранилище (RAG)
|
||
- Сохранение embedding-блоков с метаданными
|
||
- Поиск по embedding для генерации ответов ассистентом
|
||
|
||
### SEO и индексация
|
||
- Генерация мета-тегов, sitemap.xml
|
||
- ЧПУ-адреса страниц
|
||
- Настройка robots.txt
|
||
|
||
---
|
||
|
||
## Диаграмма взаимодействия
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
participant User
|
||
participant Frontend
|
||
participant Backend
|
||
participant VectorDB
|
||
participant Chat
|
||
participant SearchEngine
|
||
|
||
User->>Frontend: Заполняет форму на /content
|
||
Frontend->>Backend: POST /api/content (данные)
|
||
Backend->>Backend: Создает страницу, сохраняет в БД
|
||
Backend->>VectorDB: Векторизация, добавление в RAG
|
||
Backend->>Frontend: Возвращает ссылку на страницу
|
||
Frontend->>Chat: Отправляет карточку в чат
|
||
Chat->>User: Показывает карточку + ответ ассистента
|
||
SearchEngine->>Backend: Индексирует страницу (если разрешено)
|
||
```
|
||
|
||
---
|
||
|
||
## Примечания
|
||
- Все компоненты должны быть реализованы с учетом безопасности и приватности данных.
|
||
- Необходимо предусмотреть возможность удаления и редактирования страниц.
|
||
- Для интеграции с ИИ-ассистентом использовать современные RAG-фреймворки (LlamaIndex, LangChain и т.д.).
|
||
- Для векторизации использовать актуальные модели (OpenAI, Sentence Transformers и др.).
|
||
|
||
---
|
||
|
||
## Автоматический выбор и добавление интерактивных сообщений ИИ-ассистентом
|
||
|
||
ИИ-ассистент может самостоятельно анализировать контекст диалога и принимать решение о добавлении интерактивных сообщений (карточек) в чат, чтобы повысить релевантность и удобство взаимодействия.
|
||
|
||
### Принцип работы
|
||
|
||
1. **Анализ контекста диалога**
|
||
- Ассистент анализирует сообщения пользователя, определяет тему, намерение и ключевые слова.
|
||
- Выполняет поиск по базе знаний (RAG) для нахождения релевантных страниц или блоков.
|
||
|
||
2. **Принятие решения о вставке интерактивного сообщения**
|
||
- Если найден релевантный контент, ассистент решает, нужно ли добавить карточку с кнопкой (например, "Подробнее").
|
||
- Решение зависит от:
|
||
- Тематики и повторяемости вопросов
|
||
- Новизны или важности контента
|
||
- Явных триггеров в сообщениях пользователя (например, "покажи инструкцию", "расскажи подробнее" и т.д.)
|
||
|
||
3. **Формирование интерактивного сообщения**
|
||
- Ассистент формирует карточку с заголовком, кратким описанием и кнопкой (например, "Подробнее").
|
||
- При нажатии на кнопку пользователем ассистент отправляет содержимое страницы или выбранного блока в чат.
|
||
|
||
### Пример сценария
|
||
|
||
- Пользователь: "Как подключить наш продукт X?"
|
||
- Ассистент:
|
||
1. Находит в RAG инструкцию по подключению продукта X.
|
||
2. Отвечает кратко и автоматически добавляет интерактивную карточку с кнопкой "Показать инструкцию".
|
||
3. При нажатии на кнопку отправляет подробную инструкцию в чат.
|
||
|
||
### Преимущества
|
||
- Пользователь получает релевантную информацию в нужный момент, не перегружая чат лишними карточками.
|
||
- Ассистент становится более "умным" и проактивным.
|
||
- Повышается вовлечённость и удовлетворённость пользователей.
|
||
|
||
---
|
||
|
||
## Публикация страниц в социальных сетях и блогах через API
|
||
|
||
Система может поддерживать публикацию созданных страниц на страницах компании в социальных сетях и блогах (Medium, LinkedIn, Instagram, Paragraph, Telegraph, Telegram и др.) с помощью соответствующих API.
|
||
|
||
### Возможности
|
||
- Публикация статей и постов на платформах: Medium, LinkedIn (страницы компаний), Instagram (бизнес-аккаунты), Paragraph, Telegraph, Telegram (боты/каналы) и др.
|
||
- Выбор платформ для публикации пользователем (чекбоксы или список).
|
||
- Формирование контента с учётом особенностей каждой платформы (текст, изображения, разметка).
|
||
|
||
### Принцип работы
|
||
1. Пользователь выбирает опцию "Опубликовать в соцсетях" после создания страницы.
|
||
2. Открывается окно выбора платформ и авторизации (OAuth2, если требуется).
|
||
3. Для каждой платформы формируется подходящий формат контента.
|
||
4. Система отправляет запросы к API выбранных платформ для публикации.
|
||
5. Пользователь получает уведомление об успешной публикации или ошибке.
|
||
|
||
### Ограничения и нюансы
|
||
- Для некоторых платформ требуется бизнес-аккаунт и прохождение модерации приложения (LinkedIn, Instagram).
|
||
- Формат и объём контента может отличаться (например, Instagram — только изображение+текст).
|
||
- Возможны лимиты на частоту публикаций и размер постов.
|
||
- Некоторые платформы могут задерживать публикацию для модерации.
|
||
|
||
### Пример архитектуры
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
participant User
|
||
participant Frontend
|
||
participant Backend
|
||
participant SocialAPI
|
||
|
||
User->>Frontend: Нажимает “Опубликовать в соцсетях”
|
||
Frontend->>Backend: POST /api/publish-to-social (данные, токены)
|
||
Backend->>SocialAPI: Публикует на выбранных платформах
|
||
SocialAPI-->>Backend: Ответ (успех/ошибка)
|
||
Backend-->>Frontend: Сообщение о результате
|
||
Frontend-->>User: Уведомление
|
||
```
|
||
|
||
### Рекомендации
|
||
- Для каждой платформы реализовать отдельный модуль интеграции или использовать сторонние сервисы (Zapier, Make).
|
||
- Предусмотреть очередь публикаций и логи для отслеживания статуса.
|
||
- Обеспечить безопасное хранение и обновление токенов авторизации. |