📄 Техническая документация

Нейропоиск образовательных курсов
на платформе Kursograf.ru

Описание принципов работы, архитектуры и пользовательского интерфейса системы интеллектуального подбора курсов на основе GigaChat API (ПАО Сбербанк).

📅 Версия: 1.3.0 🗓 Дата: 05.03.2026 🌐 Сайт: kursograf.ru ⚖️ Статус: Действующий документ

🎯Обзор системы

Нейропоиск — функция платформы Kursograf.ru, позволяющая пользователям находить подходящие онлайн-курсы из каталога путём описания своих целей, опыта и предпочтений на естественном языке.

В отличие от классического поиска по ключевым словам, нейропоиск понимает контекст и намерение пользователя, обеспечивая персонализированные рекомендации с объяснением.

Ключевые характеристики

ПараметрЗначение
Провайдер ИИ (основной)GigaChat B2B API — ПАО Сбербанк
Провайдер ИИ (резервный)DeepSeek Chat API
МодельGigaChat
Объём каталога7 500+ курсов от 300+ школ
Кандидатов для анализадо 40 курсов на запрос
Рекомендаций в ответе5–8 курсов
Среднее время ответа3–8 секунд
Версия системы1.3.0 от 05.03.2026

Где размещён нейропоиск

  • Главная страница (kursograf.ru) — основной блок поиска в hero-секции
  • Страницы курсов (/vse-kursy/…) — блок «Найдите похожие курсы» перед описанием
  • Шорткод [kg_ai_search] — может быть размещён на любой странице сайта

⚙️Как это работает

Система использует подход RAG (Retrieval-Augmented Generation) — генерация ответа с контекстом из базы данных. Это позволяет нейросети работать только с актуальными данными каталога, а не «придумывать» курсы.

1
Пользователь вводит запрос
Произвольный текст на русском языке: цели, уровень подготовки, бюджет, предпочтения по формату. Минимальная длина — 5 символов.
2
Предварительная выборка из базы данных
Из запроса извлекаются ключевые слова. SQL-запрос к базе WordPress находит до 40 курсов-кандидатов по совпадению в заголовке и содержимом. К каждому курсу подтягиваются: категория, школа, цена, длительность, аудитория.
3
Авторизация в GigaChat API
Система получает временный токен доступа (access_token) по протоколу OAuth 2.0. Токен кэшируется на 28 минут, что исключает лишние запросы на авторизацию.
4
Запрос к нейросети GigaChat
Запрос пользователя и список курсов-кандидатов передаются в GigaChat. Нейросеть анализирует соответствие каждого курса запросу и выбирает 5–8 наиболее подходящих с кратким объяснением.
5
Обогащение результата и отображение
Ответ нейросети (JSON с ID и объяснениями) обогащается реальными данными из базы: URL, партнёрская ссылка, цена, школа. Готовые карточки курсов отображаются пользователю.

🖥Интерфейс пользователя

Виджет нейропоиска состоит из трёх состояний: поле ввода, загрузка, результаты.

kursograf.ru
Виджет нейропоиска
Нейропоиск курсов
Опишите своими словами — ИИ подберёт подходящие курсы из каталога
Хочу стать веб-разработчиком, знаю немного HTML, бюджет до 50 000 ₽
Python с нуля UX/UI дизайн Английский для работы Data Science SMM

Элементы интерфейса

ЭлементОписаниеОбязательный
Поле ввода (textarea)Текстовый запрос пользователя, до 500 символовДа
Быстрые подсказки5 тематических кнопок для быстрого стартаНет
Кнопка поискаЗапуск нейропоиска, блокируется во время загрузкиДа
Индикатор загрузкиАнимированный спиннер, текст «ИИ анализирует...»Да
Итоговый вывод (summary)1–2 предложения от ИИ о подборкеЕсли есть
Карточки курсовСетка от 5 до 8 карточек с объяснениемДа
Кнопка «Записаться →»Зелёная — партнёрская ссылка. Фиолетовая — страница курсаДа

💬Примеры запросов и результатов

Пример 1 — Смена профессии

Запрос пользователя:

Пользователь
Работаю бухгалтером 10 лет, хочу перейти в IT. Слышала о Python для аналитики данных. С чего начать? Могу учиться вечерами, бюджет до 40 000 ₽.

Ответ нейросети (фрагмент JSON):

JSON
{ "summary": "Подобраны курсы для перехода в аналитику данных с учётом бухгалтерского опыта и бюджета до 40 000 ₽. Все курсы рассчитаны на вечернее обучение.", "courses": [ { "id": 2841, "reason": "Курс специально для начинающих, Excel и Python объясняют с нуля, есть блок финансовой аналитики." } ] }

Карточки курсов в интерфейсе:

Аналитика данных
Аналитик данных с нуля
🏫 Skillfactory
💡 Специально для начинающих, Excel и Python с нуля, есть финансовый блок
Записаться →
Python · Data Science
Python для анализа данных
🏫 Яндекс Практикум
💡 Гибкий темп, вечерний формат, практика на реальных датасетах
Записаться →
Финансовый анализ
Excel + BI для аналитиков
🏫 Нетология
💡 Использует опыт работы с числами, плавный вход в IT
Подробнее →
Пример 2 — Повышение квалификации в IT
Запрос
Я Python-разработчик middle уровня, хочу освоить машинное обучение и нейронные сети. Желательно курс с практическими проектами и менторством.
ℹ️
Нейросеть учтёт уровень «middle» и не предложит курсы для начинающих, а также отфильтрует теоретические курсы без практики.
Пример 3 — Детское образование
Запрос
Ищу курс программирования для ребёнка 10 лет, который уже немного знает Scratch. Хотим перейти на Python. Онлайн, 2–3 часа в неделю.
Система правильно интерпретирует контекст «для ребёнка», «Scratch → Python», «2–3 часа» и подберёт детские курсы с соответствующей методикой.

🏗Архитектура системы

// Клиентская часть
👤 Пользователь
браузер
──→
📱 Виджет
JavaScript
──AJAX POST──→
⚙️ WordPress
admin-ajax.php
// Серверная обработка
🔍 Поиск
kg_ai_find_candidates()
──SQL──→
🗄 MySQL
wp_posts + wp_postmeta
🔑 OAuth 2.0 токен
kg_gigachat_get_token()
──HTTPS──→
🤖 GigaChat Auth
ngw.devices.sberbank.ru:9443
💬 RAG-запрос
kg_ai_ask_gigachat()
──HTTPS──→
🤖 GigaChat API
gigachat.devices.sberbank.ru
// Ответ пользователю
✨ Обогащение
referalka + meta
──JSON──→
🃏 Карточки
renderResults()
──→
👤 Пользователь

Ключевые файлы системы

ФайлНазначение
inc/ai-search.phpЯдро системы: AJAX-обработчик, SQL-поиск, вызов GigaChat API, шорткод, CSS/JS
page-2.phpШаблон главной страницы — виджет в hero-секции
single-vse-kursy.phpШаблон страницы курса — виджет перед описанием
functions.phpПодключение ai-search.php через require

🔌Интеграция с GigaChat API

Получение токена доступа

HTTP Request
POST https://ngw.devices.sberbank.ru:9443/api/v2/oauth Headers: Authorization: Basic {Authorization_Key} RqUID: {UUID v4} Content-Type: application/x-www-form-urlencoded Accept: application/json Body: scope=GIGACHAT_API_B2B
ℹ️
Токен действителен 30 минут. На сервере кэшируется в WordPress Transients на 28 минут, что экономит время и снижает нагрузку на сервер авторизации.

Запрос к модели GigaChat

HTTP Request
POST https://gigachat.devices.sberbank.ru/api/v1/chat/completions Headers: Authorization: Bearer {access_token} Content-Type: application/json Body: { "model": "GigaChat", "temperature": 0.3, "max_tokens": 1500, "messages": [ { "role": "system", "content": "[системный промпт]" }, { "role": "user", "content": "[запрос + список курсов]" } ] }

Структура ответа

JSON Response
{ "summary": "Подобраны курсы для начинающих веб-разработчиков...", "courses": [ { "id": 1664, "reason": "Охватывает HTML, CSS и JavaScript с нуля, есть менторская поддержка" }, ... ] }

Резервный провайдер DeepSeek

При любой ошибке GigaChat API (код 4xx/5xx, таймаут, недоступность) система автоматически повторяет запрос через DeepSeek Chat API. Пользователь не уведомляется о смене провайдера — результат выглядит идентично.

⚠️
DeepSeek — сервис с серверами за рубежом. При использовании резервного провайдера текст запроса пользователя и список курсов (без персональных данных) могут обрабатываться на зарубежных серверах. Персональные данные пользователей в запрос не передаются.

🗄Работа с данными

Что передаётся в нейросеть

ДанныеПередаётсяИсточник
Текст запроса пользователяДаПоле ввода
Название курсаДаwp_posts.post_title
Категория курсаДаwp_terms
Название школыДаwp_postmeta (nazvanie_shkoly)
Цена курсаДаwp_postmeta (czena_kursa)
ДлительностьДаwp_postmeta (dlitelnost)
Аудитория курсаДаwp_postmeta (dlya_kogo…)
IP-адрес пользователяНет
Email / телефонНет
Cookie / сессияНет
Партнёрские ссылкиНетДобавляются только локально

Партнёрские ссылки (монетизация)

После получения ответа от нейросети система обогащает карточки реферальными ссылками школ — они хранятся локально в базе данных и не передаются в API нейросети.

  • Если у школы есть реферальная ссылка — кнопка «Записаться →» использует её (зелёная, rel="nofollow sponsored")
  • Если нет — кнопка «Подробнее →» ведёт на страницу курса на сайте (фиолетовая)

🔒Безопасность

Мера защитыРеализация
CSRF-защитаWordPress Nonce в каждом AJAX-запросе (check_ajax_referer)
Санитизация вводаsanitize_text_field() + wp_unslash() перед обработкой
SQL-инъекцииВсе запросы через $wpdb->prepare() с параметризацией
XSS в выводеJavaScript escHtml() при рендеринге карточек
Ключи APIХранятся в PHP-коде на сервере, не передаются клиенту
SSL GigaChatСовместимость с сертификатами Минцифры РФ
Лимит запросаМинимум 5 символов, максимум 500 символов

⚖️Соответствие законодательству РФ

Система нейропоиска не собирает, не обрабатывает и не передаёт персональные данные пользователей в сторонние сервисы.

Федеральный закон № 152-ФЗ «О персональных данных»

  • В нейросеть передаётся только анонимный текст запроса и обезличенные данные о курсах
  • Основной провайдер — GigaChat (ПАО Сбербанк) — российская компания, обработка данных в инфраструктуре РФ
  • Kursograf.ru зарегистрирован оператором персональных данных: реестр РКН № 52-25-232090
  • Запросы пользователей не хранятся и не логируются на постоянной основе

Маркировка партнёрских ссылок

  • Все кнопки с реферальными ссылками содержат атрибут rel="nofollow sponsored"
  • Ссылки, требующие маркировки по закону о рекламе, содержат в URL параметр erid

Журнал версий системы

v1.0.0 — Февраль 2025
Первоначальная реализация на DeepSeek API. AJAX-обработчик, SQL-поиск кандидатов, базовый UI-виджет.
v1.1.0 — Март 2025
Интеграция GigaChat API (PERS). Кэширование OAuth-токена. Обновлённый промпт-инжиниринг.
v1.2.0 — Март 2025
Поддержка партнёрских ссылок (referalka из базы школ). Схема fallback DeepSeek при недоступности GigaChat.
v1.3.0 — 05.03.2026
Переключение на GigaChat B2B API (scope GIGACHAT_API_B2B). Размещение виджета на главной и страницах курсов. Предзаполнение контекста на страницах курсов. Настоящая документация.

Частые вопросы

Хранит ли система мои запросы?
Нет. Текст запроса обрабатывается в режиме реального времени и не сохраняется в базе данных сайта. GigaChat обрабатывает запрос согласно политике конфиденциальности ПАО Сбербанк.
Откуда берутся курсы в результатах?
Только из каталога Kursograf.ru. Нейросеть не «придумывает» курсы — она выбирает из конкретного списка кандидатов, отобранных из базы данных сайта (7 500+ курсов от 300+ школ).
Почему результаты могут отличаться при одинаковом запросе?
Языковые модели имеют встроенную вариативность (параметр temperature = 0.3). Результаты в целом стабильны, но могут незначительно меняться. Это нормальное поведение нейросетевых систем.
Что означает зелёная кнопка «Записаться →»?
Зелёная кнопка ведёт по партнёрской ссылке школы — Kursograf.ru может получить вознаграждение при записи. Фиолетовая кнопка «Подробнее →» ведёт на страницу курса на нашем сайте без партнёрских параметров.
Как работает резервный провайдер DeepSeek?
Если GigaChat API недоступен (ошибка сети, технические работы, превышение лимита), система автоматически повторяет запрос через DeepSeek. Переключение происходит незаметно для пользователя. DeepSeek — китайский провайдер, данные обрабатываются за рубежом, но персональные данные пользователей не передаются.