Aller au contenu
Studeia Docs
AI-assisted translation — last updated 2026-06-23. For original (pt-BR or en-US), use the language switcher.

Tuteur IA : pipeline multi-agent

Pipeline multi-agent du tuteur IA Studeia : orchestrateur, retrieval, pédagogique, évaluation, contenu, superviseur. Fallback Claude/GPT/Grok/Gemini. RAG par tenant. Détection de misconceptions

Par Équipe Studeia 2026-06-23 10 min
Resposta curta

Le tuteur IA de Studeia offre à chaque apprenant un soutien personnalisé : il répond aux questions en s'appuyant sur le contenu du cours (RAG), choisit la stratégie d'enseignement en fonction du niveau, détecte les idées reçues et est modéré par un agent de sécurité — sans coût d'IA pour les composants déterministes. Pour l'institution, cela signifie des apprenants mieux accompagnés 24h/24 et 7j/7 et des enseignants libérés des tâches répétitives, avec une IA ancrée dans votre contenu et sous contrôle des coûts.

Pipeline détaillé

Pré-LLM (synchrone, zéro coût LLM)

  1. StudentModelService.getSnapshot(userId, courseId)

    • Charge ConceptMastery (distribution Beta par concept)
    • Charge les misconceptions actives/en résolution (avec piste de preuves)
    • Charge EpisodicMemory (ce qui a fonctionné auparavant)
    • Charge quizContext (avgScore, passRate, totalAttempts, weakAreas)
    • Charge l'historique ChatSession (fenêtre glissante de 10 messages)
  2. RetrievalAgent.retrieve(query, studentModel)

    • Reformule la requête à l'aide du contexte (remplace « ceci », « cela » par les concepts actuels)
    • Recherche pgvector avec filtres (tenantId, courseId)
    • Boost par zones faibles dans les quiz (quizWeakAreas du studentModel)
    • Top-K avec reranking sémantique
  3. PedagogicalAgent.select(studentModel, query)

    • Évalue la maîtrise moyenne + la maîtrise spécifique à la requête
    • Applique des ajustements (divergence chat-quiz, âge, style d'apprentissage)
    • Retourne la stratégie + l'ajout au system prompt
  4. buildEnrichedPrompt(query, studentModel, ragChunks, strategy, misconceptions)

    • Construit le system prompt avec :
      • Stratégie pédagogique sélectionnée
      • Contexte RAG (top-5 chunks avec attribution de source)
      • Misconceptions actives (avec instructions pour les aborder)
      • Tentatives de quiz récentes (mémoire inter-tours)
      • Contexte de déclenchement de quiz inline (si un quiz récent a eu lieu)

LLM principal (streaming, SSE)

router.stream(taskType: "chat_tutor", messages, options) résout le provider via TenantTaskModelConfig :

  • Claude (primary) → OpenAI → xAI Grok → Google Gemini (chaîne de fallback)
  • Circuit breaker par provider (état Redis)
  • Middleware de metering : limite de débit + vérification de crédit + calculateur de coût
  • Streaming via Server-Sent Events vers le client

Le LLM peut émettre des tool calls spéciaux :

  • [INLINE_QUIZ]{...}[/INLINE_QUIZ] — quiz interactif rendu dans le chat
  • present_quiz tool call — format Vercel AI SDK

Post-LLM (arrière-plan via after(), fire-and-forget)

  1. EvaluationAgent.evaluate(turn, studentModel) — Haiku, ~$0,001

    • Classe la compréhension : correct | partial | incorrect | unclear
    • Détecte StudentMisconception avec :
      • source: "chat"
      • sourceSessionId
      • contextSnippet (max 500 caractères)
      • concepts[] (mappés vers ConceptMastery)
    • Met à jour ConceptMastery (mise à jour bayésienne via beta(alpha+success, beta+failure))
    • Appelle MisconceptionResolutionService.checkAndTransition (machine d'état)
  2. ContentAgent.preGenerate(studentModel, conceptId) — Haiku, ~$0,001

    • Génère un exercice de suivi basé sur les concepts faibles
    • Stocke dans Redis (TTL 30min) pour servir au prochain tour
    • Réduit la latence perçue par l'apprenant
  3. SessionSummarizer (tous les 10 tours) — Haiku, ~$0,001

    • Résume l'historique long
    • Remplace les anciens messages dans la fenêtre glissante
    • Préserve les insights pédagogiques pertinents
  4. SupervisorAgent.run(turn, courseContext) — Haiku, ~$0,001

    • Classe la sévérité (5 niveaux) + la catégorie (8 types)
    • Crée AiSupervisorIncident si severity != "none"
    • Applique les strikes / quarantaine / cooldown de sécurité selon les règles

Configuration par l'administrateur

TenantTaskModelConfig

L'administrateur choisit le provider+modèle par type de tâche :

chat_tutor          → Claude Sonnet 4.6 (ou GPT-4o, ou Grok-3, etc.)
chat_evaluation     → Claude Haiku
chat_summarization  → Claude Haiku
chat_supervisor     → Claude Haiku
content_generation  → Claude Haiku
course_review       → Claude Sonnet
gamification_agent  → Claude Sonnet
course_agent        → Claude Sonnet

PedagogicalConfig

Configurabilité pédagogique par tenant :

  • masteryThresholds : seuils pour changer de stratégie (par défaut 0,3 ; 0,5 ; 0,7 ; 0,9)
  • domainOverrides : ajustement par domaine (ex. : les mathématiques utilisent un scaffolding plus agressif)
  • ageOverrides : ajustement par tranche d'âge (enfant = direct_instruction plus fréquente)
  • learningStyleOverrides : visuel, auditif, kinesthésique

Personnalisation des templates de prompts

L'administrateur institutionnel peut modifier le system prompt du tuteur via PromptTemplate (en base de données) :

  • Par taskType (chat_tutor)
  • Par provider (Anthropic, OpenAI, Google, xAI — variantes optimisées)
  • Par locale (pt-BR, en-US, es-ES, fr-FR)
  • Par tenant (ou null = global)
  • Par cours (override par cours)

Limitations techniques

  • Latence first-token : 800-1500 ms (incluant le pipeline pré-LLM)
  • Latence totale du tour : 2-8 s pour une réponse moyenne (~300 mots)
  • Fenêtre de contexte : limitée par le provider (Claude Sonnet 4.6 = 200K, GPT-4o = 128K)
  • Langues : le tuteur répond dans la langue de l'apprenant mais en interne le pipeline est bilingue (en/pt)
  • Images : le tuteur accepte les images en entrée (multimodal Claude/GPT/Gemini) mais le RAG est text-only
  • Avatar parlant + voix (sortie) : disponible en opt-in par cours — avatar parlant en temps réel avec voix TTS via HeyGen LiveAvatar ou D-ID (BYO key). Voir Avatar & TTS.
  • Voix en entrée (STT) : parler avec le tuteur (parole de l'apprenant → speech-to-text → chat) est implémenté en B2B (dictée : la parole devient du texte dans le champ de message, sans envoi automatique). Ce qui reste sur la roadmap, c'est la conversation vocale bidirectionnelle (boucle en temps réel avec l'avatar) et la note automatique de prononciation.

Voir aussi

FAQ

Comment le pipeline du tuteur IA est-il composé ?

Le tuteur utilise un pipeline multi-composants : des composants déterministes en TypeScript gèrent l'orchestration, le contexte de l'apprenant, la recherche RAG et la stratégie pédagogique ; le LLM principal génère la réponse via le routeur ; des tâches LLM-backed en arrière-plan gèrent l'évaluation, les suivis de contenu, la sécurité/supervision et la récapitulation de session si nécessaire. Seuls les composants LLM-backed consomment TenantTaskModelConfig et le metering.

Combien coûte un tour complet du tuteur ?

Typiquement $0,005-$0,05 par tour complet. Détail : LLM principal (Sonnet) $0,005-$0,04 + EvaluationAgent (Haiku) $0,001 + ContentAgent (Haiku) $0,001 + SupervisorAgent (Haiku) $0,001. Les messages courts sur des concepts simples peuvent coûter $0,001 (Haiku uniquement).

Puis-je désactiver le tuteur IA pour un cours spécifique ?

Oui. Course.aiTutorEnabled (booléen, valeur par défaut true). Bascule administrateur institutionnel dans /institution/courses/[id]/settings. La barre latérale de l'apprenant et le sous-menu du cours masquent « Chat Tuteur » lorsqu'il est désactivé.

Veja tambem

Tuteur IA : pipeline multi-agent