Настройка для хранения постоянных данных JSON в артефактах

Я смиренно предлагаю внедрить настройку rails console, которая позволит администраторам включить возможность для артефактов ИИ хранить постоянные данные в одном JSON-файле. Конечно, это может непреднамеренно создать некоторые проблемы или риски, точно так же, как и настройка для включения постоянного удаления тем — :warning: поэтому включение должно осуществляться через rails console.

Артефакты ИИ очень полезны и значительно повышают качество обсуждений, однако их полезность можно утроить, если они смогут постоянно хранить простые данные и манипулировать ими простыми способами :eyes:

Мой личный случай использования

Мой экземпляр Discourse используется как LMS (для обучения английскому языку) и как виртуальная лаборатория для экспериментов в моих научных исследованиях в области ИИ. У каждого из моих клиентов/студентов есть своя приватная категория (доступ предоставляется через их приватную группу), где мы сохраняем и отслеживаем всё (учебные материалы и т. д.). Небольшая часть моих исследований заключается в том, чтобы понять, как спроектировать систему, которая сможет успешно и автономно создавать образовательный контент для обучающегося, исходя из его «Биографии обучающегося» (как показано на скриншотах ниже) и некоего графа знаний (остальное я пока оставлю в секрете).

Моя цель — использовать API Discourse для получения этих JSON-данных (биографии обучающегося из артефакта) из содержимого темы (вероятно, здесь понадобятся довольно сложные регулярные выражения), а затем передать их моей когнитивной архитектуре, построенной на FastAPI и работающей на том же сервере с обратным прокси. Когнитивная архитектура творит своё волшебство, затем создаёт новый контент для этого обучающегося и формирует новую тему с этим контентом в приватной категории обучающегося.

Вот быстрая и грубая визуализация того, о чём я говорю:

    flowchart TD
    A[Экземпляр Discourse<br/>LMS + Лаборатория исследований ИИ] --> B[Приватные категории студентов<br/>с контролем доступа через группы]
    
    B --> C[Биография обучающегося<br/>хранится в содержимом темы<br/>в формате JSON]
    
    C --> D[API Discourse<br/>Получение содержимого темы]
    
    D --> E[Регулярное выражение<br/>Извлечение JSON-данных]
    
    E --> F[Биография обучающегося<br/>Извлечённые данные]
    
    F --> G[Когнитивная архитектура FastAPI<br/>Тот же сервер + Обратный прокси]
    
    H[Граф знаний<br/>Конфиденциальные исследовательские данные] --> G
    
    G --> I[Генерация контента ИИ<br/>Здесь происходит волшебство ✨]
    
    I --> J[Новый образовательный контент<br/>Персонализированный для обучающегося]
    
    J --> K[Создание новой темы<br/>через API Discourse]
    
    K --> L[Контент опубликован в<br/>приватной категории студента]
    
    L --> M[Учебные материалы<br/>Отслеживаются и сохраняются]
    
    M --> N[Непрерывное обучение<br/>и исследовательский цикл]
    
    N -.-> C
    
    style A fill:#e1f5fe
    style G fill:#f3e5f5
    style I fill:#fff3e0
    style L fill:#e8f5e8


Технически всего этого можно достичь (и даже более элегантно), разрешив HTTP в артефактах, но я подозреваю, что это даже рискованнее, чем хранение данных.

:heart: Я полностью намерен открыть исходный код этой технологии, как только всё заработает и будет тщательно протестировано.


Этот артефакт «Биография обучающегося» работает безупречно, за исключением того, что введённые данные исчезают после обновления страницы :see_no_evil_monkey:

Вот как выглядят поля данных в артефакте

3 лайка

Я уже думал об этой супермощной функции: за настройкой сайта я хочу разрешить хранение артефактов в виде пар ключ-значение, привязанных к текущему пользователю.

Это открывает огромный спектр вариантов использования, включая этот.

6 лайков

О, дорогой мистер Сэм, это было бы просто спасением!

В вашей реализации фраза «привязано к текущему» пользователю означает, что редактировать и просматривать сохранённые данные сможет только один пользователь? Я спрашиваю, потому что в зависимости от того, как вы это реализуете, мне, возможно, придётся изменить свой подход. В моём случае я хочу, чтобы данные могли редактировать и я, и студент. Другие пользователи не смогут их ни редактировать, ни даже просматривать, так как артефакт всё равно будет находиться в личной категории этого студента.

1 лайк

Я сейчас обдумываю JS API, но в любом случае вы всегда сможете получать данные в «Исследователе данных», так как они будут храниться в таблице (user id, artifact id, artifact version, key, value, public (bool)).

Дайте мне немного времени, так как у меня в голове много вопросов, на которые я пока отвечаю сам.

  • Публичное пространство для анонимов? Да или нет? Какие ограничения?
  • Доступ администратора ко всему через артефакт?
  • Публичная и приватная информация (например, опросы).

Раскрою детали по мере формирования ответа.

3 лайка

Чуть расширяя эту идею о постоянных данных в артефактах… было бы замечательно, если бы мы могли каким-то образом «переиспользовать» артефакты (или вручную регистрировать новые) с незначительными изменениями JSON-данных в каждом из них. Например:

Как уже упоминалось, у каждого моего студента есть своя приватная категория, что означает наличие у них собственных материалов и викторин. Сегодня я протестировал создание артефакта викторины.

Текущий подход к созданию викторин

(Тема создаётся как вики-тема, чтобы студент мог фактически выбрать флажок с ответом.)

Версия артефакта

Причина, по которой это было бы полезно, заключается в том, что тогда у нас мог бы быть один «движок викторин», который хорошо работает (сама мини-программа), а затем просто заменять фразовые глаголы (или любые другие данные) с помощью другого JSON-объекта. Таким образом, меняются данные, но код остаётся прежним, если это понятно.

1 лайк