Skip to content

Arquitetura de Implantação

O GamiBot usa plugins Moodle para integrar as disciplinas e serviços separados para processar ficheiros, pesquisar vetores e gerar respostas. Os componentes podem ser instalados em servidores diferentes; a topologia e os recursos necessários dependem da instalação dos serviços.

ComponenteResponsabilidade
Moodle com local_gamibot_manager e block_gamibotInterface de chat, ativação por disciplina, credenciais e fila global persistente de ingestão
Serviço recetor de ingestãoRecebe notificações de alterações a ficheiros e obtém os ficheiros elegíveis no Moodle
DoclingProcessa os ficheiros obtidos pelo serviço de ingestão
Ollama com o modelo de embeddings nomic-textProduz embeddings dos materiais indexados da disciplina
QdrantGuarda e pesquisa o índice de materiais da disciplina
LangflowExecuta os fluxos Clarify, Summarize e Quiz
vLLM com Qwen3.5Serve o modelo de linguagem usado pelos fluxos alojados
Gami APITrata funções separadas de gamificação

Percurso dos ficheiros da disciplina

Uma disciplina Moodle com o seu próprio bloco GamiBot coloca em fila as alterações elegíveis às atividades Ficheiro e Pasta. O cron do Moodle envia notificações JSON em lotes limitados ao endpoint de ingestão configurado. O recetor obtém o conteúdo através de um URL de ficheiro dos serviços web do Moodle, processa-o com Docling, obtém embeddings nomic-text através de Ollama e atualiza Qdrant. Uma notificação de eliminação pede ao recetor que remova o conteúdo indexado de um módulo.

A fila limita o início dos pedidos entre todas as disciplinas e processos de cron. Os valores predefinidos são cinco passos de envio por execução e pelo menos cinco segundos entre inícios de pedidos. Uma resposta HTTP 2xx confirma a receção pelo serviço, não a conclusão do processamento ou indexação. Consulte Ingestão de dados para regras de visibilidade, tentativas e comandos de estado.

Percurso do chat

O bloco Chat chama um serviço AJAX Moodle do plugin Manager. O Manager escolhe a finalidade Langflow Clarify, Summarize ou Quiz e envia o pedido com a chave Langflow partilhada. Os fluxos alojados usam Qwen3.5 através de vLLM; podem usar o contexto da disciplina indexado em Qdrant conforme a sua configuração. Os endpoints e IDs de campos pertencem à versão do plugin, enquanto a chave da API é definida pelo administrador do site.

O segredo do webhook de ingestão e o segredo da Gami API são separados da chave Langflow. Proteja cada ligação e use HTTPS com verificação de certificados em produção. Consulte Configuração do Moodle e segurança e privacidade.

Decisões de implantação

Dimensione e distribua os serviços Moodle, Docling, Ollama, Qdrant, Langflow e vLLM de acordo com a carga medida. A variante do modelo, formatos de documentos suportados, dimensões dos embeddings, imagens de execução, portas e variáveis de ambiente são específicos dos serviços instalados. Confirme-os na configuração da instalação antes de aplicar exemplos de infraestrutura ou estimativas de capacidade.

Monitorize tanto a fila do Moodle como o trabalho pendente no recetor. Uma fila Moodle vazia mostra que as notificações foram recebidas com sucesso, mas o índice remoto ainda pode estar a processá-las.

Released under the MIT License.