Перенимаю эстафету и попробую как-то изложить концепцию системы “Редактор адаптивных курсов”
- Я создаю базу понятий — с объяснениями, указанием типов, примерами и связями с другими основными понятиями. Это фундамент, на основе которого формируется руководство для достижения мастерства в определённой области. При этом я, как автор, могу использовать заранее подготовленные мета-мета-понятия из трансдисциплинарного интеллект-стека, размещённые на нашей платформе. За этот мета-мета уровень будет отвечать научный руководитель.
Для этих целей подходит Neo4j. Следует определить стандарт для графа и затем с помощью LLM пересобрать его, указав необходимые узлы, свойства и связи. После работы LLM потребуется участие научного руководителя для доведения графа до удовлетворительного состояния. Для контроля соблюдения стандарта предлагаю использовать плагин n10s (Neo4j) совместно с SHACL validator. В SHACL-файле описывается паспорт узла, а плагин n10s проверяет, например:
- добавлен ли перевод на русский и английский языки;
- существует ли хотя бы одна связь с другим понятием;
- приведён ли пример.
Если автор пытается сохранить узел без примера, валидатор выдает ошибку прямо в интерфейсе. Мета-мета-уровень (трансдисциплинарные понятия) хранится там же, но отмечается отдельной меткой, например :MetaConcept
. Редактирует их научный руководитель в Protégé: он видит OWL-дерево, меняет только верхние определения, а n10s автоматически синхронизирует изменения с Neo4j.
Возможно, потребуется промежуточный этап перехода от текстовых курсов к адаптивным, что легко реализуется с помощью векторного представления существующих курсов и эмбеддингов в Neo4j, что лично меня вдохновляет.
Мета-мета-уровень (онтологический контроль) можно реализовать разными инструментами, но в волонтёрском чате акцент сделан на Protégé, и чем больше я изучаю этот инструмент, тем больше он мне нравится, и я хочу его опробовать.
Таким образом, мы получаем проверку соответствия заданному стандарту узлов, их свойств и связей, а также строгий редактор, который на основе онтологии не позволит допускать ошибки вроде «этика – это система».
- Задаю шаблон руководства: структуру типового раздела, логику входа, связки, объяснения и задания. Это выполняется в общем фреймворке на нашей платформе.
- Для каждого конкретного руководства определяю цель и целевую аудиторию, указываю разделы, раскрываемые понятия и рабочие продукты, которыми должен овладеть стажёр. Здесь автор создаёт промпт, отражающий его методологические идеи. Дополнительно он может выбрать идеи по методике, для чего на платформе будут предложены соответствующие сервисы. Потребуется изучение современных методик обучения.
- После этого прошу ИИ собрать черновик руководства. При необходимости корректирую вручную, но структура уже задана. Это будет универсальное руководство для всех. Возможно, на промежуточном этапе это потребуется, но в дальнейшем этот шаг можно пропустить.
- Добавляю модель личности — пока это простой чек-лист, чтобы человек мог быстро определить текущий уровень своего развития (характеристики). В дальнейшем возможно создание цифрового двойника, что потребует отдельной разработки подсистемы, способной учитывать особенности стажёра.
Предполагаю, что задачу можно реализовать на базе веб-интерфейсов вроде этого , или так где автор выбирает шаблоны и заполняет поля с понятиями (идеально — с автодополнением). Выбрав шаблон Template1, появляются поля из TemplateBlock — компоненты будущего текста: intro / explain / example / task / check и TemplateParam — что конкретно вставлять в текст: concept / example / task. Всё это отлично интегрируется с Neo4j.
В форме есть поле «Пожелания к тону и подаче», содержание которого дополняет стандартный промпт (определения + примеры) через prompt-gateway. LLM (OpenAI через langchain) формирует текст и возвращает блоки.
Все перечисленные пункты так или иначе связаны с работой с промптами и генерацией текста, за исключением цифрового двойника.
- На основе описанного и дополнительных пользовательских настроек запускается генерация индивидуальной траектории обучения. Чек-лист → Персональное руководство, генерируемое ИИ-агентом → Программа на каждый день. Пользователь может запросить варианты: «приводи примеры из моей профессиональной области» или «составь программу, учитывая моё ограниченное время (например, 5 часов в неделю)».
Пока планируется использовать graphiti + собственные скрипты, которые будут наполнять характеристики (ссылка), что позволит выстраивать персонализированную траекторию.
Текущая форма проста:
- Сколько часов в неделю? (число)
- Отрасль (выбор из списка)
- Уровень уверенности (ползунки по ключевым навыкам)
Эти ответы становятся узлом UserProfile
. Затем подключаем graphiti (Zep), который автоматически обновляет профиль при поступлении xAPI-событий («завершил раздел с оценкой 80%»).
В перспективе можно интегрировать модель BigFive/OCEAN для анализа доступных стпажерских текстов и добавления характеристик, таких как экстравертность, интровертность, стиль и мотивация.
Небольшой Python-скрипт адаптации: Запрашивает из Neo4j опубликованные разделы с уровнем сложности <= текущий + 1.
Итог
- Строгая, но гибкая база: любое понятие проходит проверку.
- Автоматический черновик с правильной структурой.
- Индивидуальная программа с учётом времени и потребностей стажёра.
- Расширяемая платформа: новая методика мгновенно доступна всем авторам.
Очень интересно почитать предложения единомышленников вообще всех, а особенно, кто работал с чем-то подобным или видит явные косяки.
graph TD
%% --- Мета-мета ---
subgraph "0 Мета-мета слой"
Meta[Мета-мета<br/>Трансдисциплинарные понятия]
end
%% --- Графы знаний ---
subgraph "1–3 Графы понятий"
Neo[Neo4j<br/>Граф понятий и руководств]
SHACL[SHACL<br/>Валидатор]
Protege[Protégé]
end
%% --- Авторский интерфейс ---
subgraph "Веб-интерфейс автора"
UI[UI автора<br/>Шаблон и промпт]
PromptGW[Шлюз промптов]
end
%% --- LLM ---
LLM[LLM / Graph-RAG]
Vec[Векторный индекс]
%% --- Сторона обучающегося ---
subgraph "Цифровой двойник"
Twin[Профиль пользователя<br/>Чек-лист / Двойник]
Traj[Построитель траектории]
Daily[Интерфейс дневного плана]
end
%% --- Потоки ---
Meta --> Neo
UI --> Neo
Neo --> Vec
Neo --> Protege
Protege --> Neo
Neo --> SHACL
SHACL --> UI
UI -- промпт --> PromptGW
PromptGW --> LLM
Neo --> PromptGW
Vec -. эмбеддинги .-> PromptGW
LLM --> UI
UI --> Neo
Twin --> Traj
Neo --> Traj
Traj --> Daily
Daily -. события xAPI .-> Neo
P.S. Круто бы в клубе добавить mermaid
В схему сил всматриваться не осталось, но вроде общее представление отражает и хорошо подсвечивает объекты внимания
Узлы и свойства(максимально обогащенный граф)
Label | Минимальный набор свойств | Комментарий |
---|---|---|
Concept | name_ru , name_en , synonyms , definition_ru , definition_en , category , complexity (0-5), bloom_level , source , version , embedding |
Эмерджентность, Подсистема, Надсистема, Шкура на кону |
Skill | name , esco_code , description , level_scale (0-8), embedding |
|
Practice | title , description , modality (reading/video/hands-on), duration_min , difficulty , obj_text , outcome_metric , embedding |
Утренняя рефлексия, Мышление письмом, систематическое медленное чтение |
Lesson / Module | title , summary , objectives , estimated_effort , difficulty , author , lang , license , version , embedding |
Становятся кирпичами курсов. |
AssessmentItem | answer_key , difficulty , embedding |
Вопросы для проверки. |
Explanation / Example | type (analogy/case), text , complexity , embedding |
Короткие иллюстрации. |
LearningGoal | goal_text , target_date , priority |
Личное «хочу освоить…». |
User (Student) | uid , profile_json (уровни навыков, предпочтения), created_at |
Храним отдельно, но в том же графе. |
Event | actor_id , verb , object_id , timestamp , score , success , duration , raw_json |
Прямой порт xAPI-statement. |
Связи и их свойства
Тип ребра | Направление | Ключевые свойства |
---|---|---|
CONTAINS | Course → Module / Module → Lesson / Lesson → Concept | order (целое), weight |
HAS_PREREQUISITE | любая сущность → Требуемый Concept/Skill | min_level , rationale |
SUPPORTS_SKILL | Practice → Skill | gain_estimate (0-1) |
EXEMPLIFIES | Example → Concept | relevance |
ADDRESSES_GOAL | Lesson/Practice → LearningGoal | coverage (0-1) |
NEXT | Lesson₁ → Lesson₂ | confidence , edge_type (mandatory/optional) |
RELATED | Concept ↔ Concept | relation_type (is_a, part_of, cause_of), weight |
EVALUATED_BY | Skill/Concept → AssessmentItem | threshold_score |
PERFORMED | User → Event | — (сам Event хранит детали) |
GENERATED_FROM | Lesson/Practice → Source (PDF, дискуссия) | citation |
Связи и ребра собрал из чатов с ИИ. Если граф будет обогащен всем этим, то можно свернуть горы как мне чувствуется.
У каждого ребра стоит добавить created_by, created_at, valid_from, valid_to - пригодится для версионирования и отката.