Scribe IA local

Jeu à distance : outil, technique, retour d'expérience
Répondre
Avatar de l’utilisateur
atman
Initié
Messages : 151
Inscription : dim. mars 08, 2020 5:55 pm

Scribe IA local

Message par atman »

Salut !
 
Je fais tourner une petite IA locale (Ollama, sur mon serveur perso, zéro cloud) qui lit automatiquement les résumés de nos sessions de JDR postés sur notre Discord/Mattermost, et alimente toute seule un wiki de campagne : fiches PNJ, lieux, factions, avec chronologie et liens entre les pages.
 Un joueur poste !resume + son texte, et quelques minutes plus tard le wiki s'est mis à jour tout seul — sans que j'y touche.
 Voici le repo GitHub avec les 6 workflows n8n + le README d'installation : https://github.com/fredben78/scribe-ia-jdr
 Toute la stack est 100% open source et gratuite — Wiki.js, Ollama, n8n, Mattermost n'ont aucun coût, aucun abonnement, rien à payer nulle part. C'est un des points qui comptait le plus pour moi en le construisant.
 Quelques précisions pour que ça se passe bien si tu tentes de le reproduire.
 Ce qu'il faut changer avant de lancer
  1. Le token Wiki.js — dans chaque fichier JSON, cherche (plusieurs occurrences par fichier) et remplace par ton propre token (Wiki.js → Administration → API Access → génères-en un).
  2. Les endpoints — si tes conteneurs ne s'appellent pas wikijs et ollama, adapte les URLs ("http : // wikijs:3000/graphql, http : // ollama:11434) au nom réel de tes conteneurs ou à leurs IP.
  3. Tout ce qui est spécifique à ma campagne — attention, ça touche plusieurs endroits, pas un seul :
    • Le nœud Code du workflow "Résumé de partie" contient en dur les noms de mes 4 PJ, pour qu'ils ne soient jamais transformés en fiches PNJ
    • Le nœud Code2 du même workflow contient une whitelist de 50 lieux de ma ville principale (Pointesable), pour les fusionner automatiquement dans une fiche ville unique plutôt que créer 50 mini-fiches
    • Les prompts Ollama eux-mêmes (dans les workflows Synthèses PNJ/Factions/Cultes/Lieux) mentionnent explicitement "Pointesable" et mes noms de PJ dans le contexte donné au modèle — ce ne sont pas juste des paramètres techniques, ils font partie du texte envoyé à l'IA
    Repasse sur chaque prompt (cherche "Pointesable", les noms de mes PJ) et adapte à ton propre univers. C'est probablement le plus gros du travail d'adaptation, plus que la config technique.
  4. Le credential Mattermost — les nœuds de notification référencent un credential qui n'existera pas chez toi. n8n te demandera de le recréer (Settings → Credentials → New → Mattermost) au premier lancement. Rien de secret n'est stocké dans les fichiers, juste une référence vide à combler.
Tu n'es pas obligé d'utiliser Wiki.js
 Mon choix n'a rien d'imposé — le seul vrai critère est d'avoir un outil avec une API accessible gratuitement en self-hosted. J'ai testé AFFiNE et Docmost avant : les deux sont présentés comme open source, mais leur API est en réalité bridée derrière une licence payante, ce qui les rend inutilisables pour ce genre d'automatisation malgré leurs interfaces sympas. C'est le genre de piège à vérifier avant de t'engager avec un outil — "open source" ne veut pas toujours dire "toutes les fonctionnalités sont gratuites".
 Si tu veux utiliser autre chose (BookStack, Outline, Notion via son API, ou même un simple dossier Markdown avec Git), c'est faisable — mais ça demande plus de travail que juste changer une URL : les nœuds qui parlent à Wiki.js utilisent son API GraphQL. Un autre outil aura probablement une API REST avec une syntaxe différente. La partie IA (extraction, synthèse, prompts) reste, elle, totalement indépendante du wiki choisi.
 Tu n'es pas obligé d'utiliser Mattermost non plus
 C'est juste l'outil que j'utilise avec mon groupe. Le point d'entrée est un simple webhook qui reçoit un message texte — Discord, Slack, un formulaire, ou même un déclencheur manuel dans n8n font l'affaire. Il faudra adapter le nœud Webhook en entrée et la logique qui en extrait le texte. Les nœuds de notification Mattermost en fin de workflow sont eux aussi optionnels, supprimables sans rien casser.
 Sur les triggers "When Executed by Another Workflow"
 Chaque workflow (sauf le premier) a deux déclencheurs en parallèle : un Manual Trigger pour tester isolément, et un "When Executed by Another Workflow" qui me permet l'enchaînement complet : Résumé → PNJ → Factions → Cultes → Lieux → Liens inter-fiches, tout ça déclenché par un seul !resume dans Mattermost.
 Mais rien ne t'oblige à garder cet enchaînement. Tu peux lancer chaque étape manuellement, n'en garder que certaines (juste les PNJ si le reste ne t'intéresse pas), ou changer l'ordre. Il suffit de supprimer le nœud "Execute Workflow" qui appelle l'étape suivante à la fin de celle que tu veux isoler.
 Un mot sur les délais
 Chaque appel à l'IA prend 30s à 2 min sur mon serveur (CPU seul, 16 Go de RAM). Avec l'enchaînement complet, une session peut prendre 15-30 minutes de bout en bout selon le nombre d'entités touchées.

Voilà si jamais ça peut être utile à quelqu'un....

Un visuel sur une des fiches, la chronologie sert à vérifier les infos dans le résumé pour contrôler tout type d'hallucinations qui aurait reussit à passer mais sert aussi à gérer la chronologie des événements pour les "en résumé" de chaque fiche.

Image

Le gros point faible de ce système c'est de trouver un joueur qui fait des résumés exploitable :D
Répondre