아티팩트에 영속적 JSON 데이터를 저장할 수 있는 설정

저는 rails 콘솔을 통해 관리자 권한으로 AI 아티팩트가 단일 JSON 파일에 영구 데이터를 저장할 수 있는 기능을 활성화할 수 있는 설정의 구현을 겸손하게 제안합니다. 이는 물론 주제를 영구적으로 삭제할 수 있도록 하는 설정과 마찬가지로 일부 문제나 위험을 의도치 않게 도입할 수 있으므로 :warning: rails 콘솔을 통해 활성화하도록 했습니다.

AI 아티팩트는 매우 유용하며 토론의 질을 크게 높여주지만, 간단한 데이터를 영구적으로 저장하고 이를 간단한 방식으로 조작할 수 있다면 그 효용성은 3배 이상으로 늘어날 것입니다 :eyes:

제 개인적 사용 사례

제 Discourse 인스턴스는 LMS(영어 교육용)로 사용되고 있으며, 또한 AI에 대한 제 과학적 연구를 위한 가상 실험실로 활용되고 있습니다. 각 클라이언트/학생은 자신만의 비공개 카테고리를 가지고 있으며(비공개 그룹을 통해 접근 권한이 부여됨), 여기서 학습 자료 등 모든 것이 저장되고 추적됩니다. 제 연구의 작은 부분은 학습자의 “학습자 이력(Learner Biography)”(아래 스크린샷 참조)과 일종의 지식 그래프를 주어진 경우, 학습자를 위해 교육 콘텐츠를 성공적이고 자율적으로 생성할 수 있는 시스템을 설계하는 방법을 알아내는 것입니다 (나머지는 당분간 비공개로 유지할 것입니다).

제 의도는 Discourse API를 사용하여 해당 JSON 데이터(아티팩트 내 학습자 이력)를 토픽 콘텐츠에서 가져오는 것입니다(여기서는 아마도 상당히 강력한 정규 표현식이 필요할 것입니다). 그런 다음 동일한 서버에서 리버스 프록시로 실행되고 있는 FastAPI로 구축된 제 인지 아키텍처에 이를 입력합니다. 인지 아키텍처가 마법을 부린 후, 해당 학습자를 위한 새로운 콘텐츠를 생성하고, 그 콘텐츠로 해당 학습자의 비공개 카테고리에서 새로운 토픽을 생성합니다.

제가 말하는 것의 대략적인 시각화는 다음과 같습니다:

    flowchart TD
    A[Discourse Instance<br/>LMS + AI Research Lab] --> B[Student Private Categories<br/>with Group Access Control]
    
    B --> C[Learner Biography<br/>stored in Topic Content<br/>JSON format]
    
    C --> D[Discourse API<br/>Fetch Topic Content]
    
    D --> E[Regular Expression<br/>Extract JSON Data]
    
    E --> F[Learner Biography<br/>Extracted Data]
    
    F --> G[FastAPI Cognitive Architecture<br/>Same Server + Reverse Proxy]
    
    H[Knowledge Graph<br/>Confidential Research Data] --> G
    
    G --> I[AI Content Generation<br/>Magic Happens Here ✨]
    
    I --> J[New Educational Content<br/>Personalized for Learner]
    
    J --> K[Create New Topic<br/>via Discourse API]
    
    K --> L[Content Posted to<br/>Student's Private Category]
    
    L --> M[Learning Materials<br/>Tracked & Saved]
    
    M --> N[Continuous Learning<br/>& Research Loop]
    
    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를 설계하고 있습니다. 하지만 어쨌든 데이터는 테이블 형태로 존재하기 때문에 데이터 탐색기에서 항상 데이터에 접근할 수 있습니다. (사용자 ID, 아티팩트 ID, 아티팩트 버전, 키, 값, 공개 여부 (bool))

머릿속에서 답을 찾고 있는 질문들이 꽤 있어서, 이 문제에 대해 좀 더 시간을 가지고 생각해보겠습니다.

  • 익명 사용자를 위한 공개 공간? 예 또는 아니오? 제한 사항은 무엇인가요?
  • 아티팩트를 통한 모든 것에 대한 관리자 접근 권한?
  • 공개 정보와 비공개 정보 (예: 투표)

답이 정리되면 여기에 내용을 보충하겠습니다.

3개의 좋아요

아티팩트 내 영속 데이터(persistent data)라는 개념을 조금 더 확장해서 이야기하자면… 각 아티팩트에서 JSON 데이터만 살짝 수정하는 방식으로 아티팩트를 "재사용"할 수 있다면(또는 수동으로 새로운 아티팩트를 등록할 수 있다면) 정말 좋겠습니다. 예를 들면 다음과 같습니다:

앞서 언급했듯이, 제 학생들은 각자 자신의 개인 카테고리를 가지고 있으며, 이는 각자 자신만의 자료와 퀴즈를 의미합니다. 오늘 저는 퀴즈 아티팩트를 만드는 것을 테스트해 보았습니다.

현재 퀴즈 제작 방식

(학생이 답안 체크박스를 실제로 선택할 수 있도록 위키 토픽으로 생성됩니다.)

아티팩트 버전

이 방식이 유용한 이유는, 잘 작동하는 “퀴즈 엔진”(실제 미니 프로그램)을 하나만 가지고 있으면, 다른 JSON 객체를 사용하여 구동사(또는 기타 데이터)만 교체하면 되기 때문입니다. 즉, 코드는 그대로 유지하면서 데이터만 변경되는 방식입니다. 이 설명이 이해가 되시나요?

1개의 좋아요