Aller au contenu

IA

Le module IA de Fraza, un fournisseur au choix, des prompts à réponse structurée et vérifiée, des boutons dans l'admin, des tâches en arrière-plan et les jetons comptés.

@fraza/module-ai ajoute l'intelligence artificielle à un projet Fraza. Le code du projet et les autres modules appellent toujours ce module, jamais le fournisseur : passer d'Anthropic à Ollama, ou d'un modèle à un autre, se fait dans les variables d'environnement, sans toucher au code.

npm i @fraza/module-ai
Paquet@fraza/module-ai
LicenceMIT, Fraza Libre.
Registrenpmjs, sans compte ni configuration.
ActivationFRAZA_MODULE_AI=true

L'activation, le choix du fournisseur et la création des tables sont dans Installation.

Pages de cette section

PageContenu
InstallationInstaller le module, créer les tables, tester la configuration.
ConfigurationFournisseurs, variables d'environnement, permissions, entrée d'admin.
PromptsDéclarer un prompt, décrire sa réponse, ajuster ceux des modules dans ai.js.
BoutonsLes boutons d'IA de l'admin, leur formulaire, leurs deux modes et les propositions gardées.
TâchesLancer un prompt sur un événement ou à heure fixe.
Modèle de donnéesTables fraza_ai_run et fraza_ai_result.
APIFonctions serveur, intégration ai pour les autres modules, routes HTTP.

Ce que le module apporte

ÉlémentDétail
FournisseursAnthropic, OpenAI, Google, Mistral, un service compatible avec l'API d'OpenAI, Ollama. Voir Configuration.
Tablesfraza_ai_run, l'historique des appels, et fraza_ai_result, les propositions en attente à côté d'un contenu.
Entrée d'adminUne section « IA » du groupe « Outils », icône BrainIcon, ordre 90, avec la page /admin/ai.
Permissionsai.use et ai.view.
Routes API8 routes d'admin. Aucune route publique.
Tuile du tableau de bordai-usage : les jetons du mois et les appels en échec.
Tâche planifiéeai-retention, chaque jour à 3 h 17.
Intégrationai, lue par les autres modules par getIntegration('ai') sans importer ce paquet. Voir API.

Comment le module travaille

Chaque prompt décrit la forme de sa réponse. Un prompt porte un schéma JSON de sa réponse. Le module l'envoie au fournisseur sous la forme que celui-ci accepte, puis vérifie la réponse reçue contre le schéma complet, quel que soit le fournisseur. Une réponse hors schéma est redemandée une fois, avec les écarts écrits au modèle ; un second échec est une erreur. Le code qui reçoit data n'a donc rien à revérifier. Voir Prompts.

Rien n'est enregistré sans relecture. Un bouton remplit les champs d'un écran sans enregistrer, et une tâche en arrière-plan range sa réponse à côté du contenu, marquée comme venant de l'IA, jusqu'à ce que quelqu'un l'utilise ou l'ignore. Le module n'écrit jamais dans le contenu d'un autre module. Voir Boutons.

L'historique ne garde aucun texte. Chaque appel écrit une ligne : le prompt, le modèle, les jetons, la durée, le résultat. Jamais le texte envoyé ni la réponse, qui peuvent contenir des données personnelles. Voir Modèle de données.

Avec les autres modules

Posts et Médias déclarent leurs prompts quand ce module est installé et activé : rédiger un contenu à partir d'un sujet, proposer un nom de fichier et un texte alternatif pour une image. Sans lui, leurs boutons n'apparaissent pas, et rien d'autre ne change. Aucun des deux ne déclare @fraza/module-ai en dépendance : ils passent par l'intégration ai.

Ce que le module ne fait pas

  • Il ne connaît aucun prix. Il compte les jetons envoyés et reçus, par jour, par prompt et par modèle. Le coût dépend du contrat passé avec le fournisseur, que le module ne lit pas.
  • Il ne diffuse pas la réponse au fil de l'eau. Une réponse structurée ne sert qu'une fois complète et vérifiée : le module attend la fin de l'appel.
  • Il n'offre ni conversation ni outils. Un appel est une demande et une réponse, sans mémoire d'un appel à l'autre.

Notes

  • Le texte envoyé quitte le serveur pour celui du fournisseur, sauf avec Ollama sur une machine du projet. Choisir le fournisseur selon les données que les prompts lui confient.
  • Ce module ne déclare aucune dépendance de production. Il appelle les API des fournisseurs par fetch, sans SDK.

Sur cette page