Uma configuração para permitir armazenar dados JSON persistentes em artefatos

Proponho humildemente a implementação de uma configuração no console do Rails que permitiria aos administradores habilitar a capacidade de artefatos de IA armazenarem dados persistentes em um único arquivo JSON. Isso pode, é claro, introduzir inadvertidamente alguns problemas/riscos, assim como a configuração para habilitar a exclusão permanente de tópicos — :warning: por isso, habilitá-la através do console do Rails.

Artefatos de IA são muito úteis e agregam muito à qualidade das discussões, no entanto, sua utilidade pode ser triplicada se eles pudessem armazenar permanentemente dados simples e manipular esses dados de maneiras simples :eyes:

Meu Caso de Uso Pessoal

Minha instância do Discourse é usada como um LMS (para educação em inglês) e um laboratório virtual para experimentos em minha pesquisa científica em IA. Cada um de meus clientes/alunos tem sua própria categoria privada (o acesso é concedido através de seu grupo privado), onde temos tudo salvo e rastreado (materiais de aprendizado, etc.). Uma pequena parte de minha pesquisa é descobrir como projetar um sistema que possa criar com sucesso e autonomamente conteúdo educacional para um aluno, dada sua “Biografia do Aluno” (como mostrado nas capturas de tela abaixo) e um grafo de conhecimento. (Vou manter o resto confidencial por enquanto).

Minha intenção é usar a API do Discourse para buscar esses dados JSON (a biografia do aluno do artefato) do conteúdo do tópico (provavelmente precisarei de algumas expressões regulares pesadas aqui), então alimentá-la à minha arquitetura cognitiva, que é construída com FastAPI e está rodando no mesmo servidor com um proxy reverso. A arquitetura cognitiva faz sua mágica, então cria novo conteúdo para aquele aluno, então cria um novo tópico com esse conteúdo na categoria privada daquele aluno.

Aqui está uma visualização rápida e grosseira do que estou falando:

    flowchart TD
    A[Instância do Discourse<br/>LMS + Laboratório de Pesquisa em IA] --
    > B[Categorias Privadas de Alunos<br/>com Controle de Acesso por Grupo]
    
    B --
    > C[Biografia do Aluno<br/>armazenada no Conteúdo do Tópico<br/>formato JSON]
    
    C --
    > D[API do Discourse<br/>Buscar Conteúdo do Tópico]
    
    D --
    > E[Expressão Regular<br/>Extrair Dados JSON]
    
    E --
    > F[Biografia do Aluno<br/>Dados Extraídos]
    
    F --
    > G[Arquitetura Cognitiva FastAPI<br/>Mesmo Servidor + Proxy Reverso]
    
    H[Grafo de Conhecimento<br/>Dados Confidenciais de Pesquisa] --
    > G
    
    G --
    > I[Geração de Conteúdo por IA<br/>A Mágica Acontece Aqui ✨]
    
    I --
    > J[Novo Conteúdo Educacional<br/>Personalizado para o Aluno]
    
    J --
    > K[Criar Novo Tópico<br/>via API do Discourse]
    
    K --
    > L[Conteúdo Postado em<br/>Categoria Privada do Aluno]
    
    L --
    > M[Materiais de Aprendizado<br/>Rastreados e Salvos]
    
    M --
    > N[Loop Contínuo de Aprendizado<br/>e Pesquisa]
    
    N -.
    -> C
    
    style A fill:#e1f5fe
    style G fill:#f3e5f5
    style I fill:#fff3e0
    style L fill:#e8f5e8


Tecnicamente, tudo isso pode ser alcançado (e de forma mais elegante) permitindo http em artefatos, mas suspeito que seja ainda mais arriscado do que armazenar dados.

:heart: Pretendo totalmente abrir código desta tecnologia assim que conseguir que tudo funcione e seja exaustivamente testado.


Este artefato de biografia do aluno funciona perfeitamente, exceto pelo fato de que os dados inseridos desaparecem após atualizar a página :see_no_evil_monkey:

como os campos de dados se parecem no artefato

3 curtidas

Já tenho pensado há algum tempo nesse recurso super poderoso, que fica por trás de uma configuração do site. Quero permitir o armazenamento de artefatos de pares chave-valor, vinculados ao usuário atual

Isso desbloqueia uma quantidade enorme de casos de uso, incluindo este

6 curtidas

Ohhh querido Sr. Sam, isso seria uma dádiva!

Na sua implementação, “bound to current” usuário implica que apenas um usuário possa editar/ver os dados salvos? Estou perguntando porque, dependendo de como você fizer isso, talvez precise alterar minha abordagem. No meu caso de uso, gostaria que os dados fossem editáveis por tanto eu quanto o estudante. Nenhum outro usuário poderia editá-los ou mesmo vê-los, porque o artefato estaria na categoria privada daquele estudante de qualquer maneira.

1 curtida

Estou pensando na API JS no momento, mas, independentemente disso, você sempre poderá acessar os dados no explorador de dados, pois eles estarão em uma tabela. (ID do usuário, ID do artefato, versão do artefato, chave, valor, público (bool))

Deixe-me pensar um pouco sobre isso, pois tenho um monte de perguntas que estou respondendo em minha cabeça.

  • Espaço público para anônimos? sim ou não? quais são os limites
  • Acesso de administrador a tudo via artefato?
  • Informações públicas vs. privadas (por exemplo, enquetes)

Expandirei aqui à medida que as respostas se formarem.

3 curtidas

Expandindo um pouco essa noção de dados persistentes em artefatos… seria ótimo se pudéssemos de alguma forma “reutilizar” artefatos (ou registrar manualmente novos) com apenas pequenas modificações nos dados JSON em cada um. Por exemplo:

Como já mencionado, cada um dos meus alunos tem sua própria categoria privada, o que significa que eles têm seus próprios materiais e questionários. Hoje testei a criação de um artefato de questionário.

Abordagem atual para fazer questionários

(O tópico é criado como um tópico wiki para que o aluno possa realmente selecionar sua caixa de seleção de resposta.)

Versão do artefato

A razão pela qual seria útil é porque poderíamos então ter um “motor de questionário” que funciona bem (o mini-programa em si) e apenas substituir os verbos frasais (ou quaisquer outros dados) usando um objeto JSON diferente. Assim, os dados mudam, mas o código não, se isso faz sentido.

1 curtida