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

Tuteur IA : pipeline multi-agent

Pipeline multi-agent du tuteur IA Studeia : orchestrator, retrieval, pedagogical, evaluation, content, supervisor. Fallback Claude/GPT/Grok/Gemini. RAG par tenant. Détection des misconceptions

2026-05-31 10 min
Resposta curta

Le tuteur IA de Studeia utilise un pipeline multi-composant : l'Orchestrator coordonne → StudentModelService charge le contexte de l'apprenant → RetrievalAgent effectue la recherche RAG → PedagogicalAgent choisit la stratégie → le LLM principal répond avec fallback automatique → EvaluationAgent, ContentAgent, SupervisorAgent et des tâches de synthèse/mémoire peuvent s'exécuter en arrière-plan. Les composants déterministes ont un coût LLM nul ; seuls les composants LLM-backed utilisent TenantTaskModelConfig et le metering.

Pipeline détaillé

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

  1. StudentModelService.getSnapshot(userId, courseId)

    • Charge ConceptMastery (distribution Beta par concept)
    • Charge les misconceptions actives/en résolution (avec trace 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 en utilisant le contexte (remplace "ça", "cela" par les concepts actuels)
    • Recherche pgvector avec filtres (tenantId, courseId)
    • Boost par zones faibles dans les quiz (quizWeakAreas du studentModel)
    • Top-K avec re-classement 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 (s'il y a eu un quiz récent)

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 comptage : 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 appels d'outils spéciaux :

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

Post-LLM (background via after(), fire-and-forget)

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

    • Classifie 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 à états)
  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 tour suivant
    • Réduit la latence perçue par l'apprenant
  3. SessionSummarizer (toutes 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

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

Configuration par l'admin

TenantTaskModelConfig

L'admin 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 (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équent)
  • learningStyleOverrides : visuel, auditif, kinesthésique

Personnalisation du template de prompt

L'admin 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 premier token : 800-1500ms (incluant le pipeline pré-LLM)
  • Latence totale du tour : 2-8s 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 au tuteur (parole de l'apprenant → speech-to-text → chat) n'est pas encore implémenté (roadmap).

Voir aussi

FAQ

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

Le tuteur utilise un pipeline multi-composant : 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 router ; des tâches LLM-backed en arrière-plan gèrent l'évaluation, les follow-ups de contenu, la sécurité/supervision et la synthèse de session si nécessaire. Seuls les composants LLM-backed consomment TenantTaskModelConfig et le metering.

Quel est le coût d'un tour complet du tuteur ?

Typiquement $0.005-$0.05 par tour complet. Décomposition : 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 (boolean, default true). Bascule admin institutionnel dans /institution/courses/[id]/settings. La barre latérale de l'apprenant et le sous-menu Cours masquent 'Chat Tuteur' lorsqu'il est désactivé.

Veja tambem

Tuteur IA : pipeline multi-agent