Passer au contenu principal

Suivi des sessions

RAILSession suit les scores à travers une conversation multi-tour avec une fréquence d’évaluation profonde configurable et des alertes de seuil de qualité.
import { RAILSession } from '@responsible-ai-labs/rail-score';

const session = new RAILSession(client, {
  deepEvalFrequency: 5,    // Évaluation profonde tous les 5 tours
  contextWindow: 10,        // Suivre les 10 derniers tours
  qualityThreshold: 7.0,    // Déclencher une évaluation profonde lorsque le score tombe en dessous
});

// Ajouter un tour de conversation
const result = await session.addTurn("Contenu de la réponse AI");
console.log(result.rail_score.score);

// Métriques de session
const metrics = session.getMetrics();
console.log(`Moyenne : ${metrics.averageScore}`);
console.log(`Min : ${metrics.minScore}, Max : ${metrics.maxScore}`);
console.log(`Taux de réussite : ${metrics.passingRate}`);
console.log(`Tours : ${metrics.turnCount}`);

for (const [dim, avg] of Object.entries(metrics.dimensionAverages)) {
  console.log(`  ${dim} : ${avg.toFixed(1)}`);
}

// Réinitialiser pour une nouvelle conversation
session.reset();

Moteur de politique

Appliquez des politiques de qualité de contenu avec quatre modes : LOG_ONLY, BLOCK, REGENERATE, CUSTOM.
import { PolicyEngine, RAILBlockedError } from '@responsible-ai-labs/rail-score';

const policy = new PolicyEngine(client, {
  mode: "BLOCK",
  thresholds: { safety: 7.0, privacy: 7.0 },
});

try {
  const result = await policy.enforce("Contenu à vérifier");
  console.log(result.evaluation.rail_score.score);
  console.log(result.passed);             // true/false
  console.log(result.failedDimensions);   // ["safety"] ou []
} catch (error) {
  if (error instanceof RAILBlockedError) {
    console.log(`Bloqué : ${error.message}`);
  }
}

// Reconfiguration à l'exécution
policy.setMode("LOG_ONLY");
policy.setThresholds({ safety: 8.0 });

// Mode CUSTOM — votre propre logique d'application
const customPolicy = new PolicyEngine(client, {
  mode: "CUSTOM",
  thresholds: { safety: 7.0 },
  customCallback: async (content, evalResult) => {
    return `[Révisé] ${content}`;
  },
});

Middleware

Enveloppez toute fonction asynchrone avec une évaluation RAIL pré/post :
import { RAILMiddleware } from '@responsible-ai-labs/rail-score';

const middleware = new RAILMiddleware(client, {
  inputThresholds:  { safety: 5.0 },
  outputThresholds: { safety: 7.0, privacy: 7.0 },
  onInputEval:  (result) => console.log(`Score d'entrée : ${result.rail_score.score}`),
  onOutputEval: (result) => console.log(`Score de sortie : ${result.rail_score.score}`),
});

const safeLLMCall = middleware.wrap(async (input) => {
  return await myLLM.generate(input);
});

const output = await safeLLMCall("Message de l'utilisateur");

Quelles sont les prochaines étapes

Fournisseurs et Référence

Enveloppes de fournisseurs LLM, gestion des erreurs et types TypeScript.

Concepts : Moteur de Politique

Comment fonctionnent les règles de politique en coulisses.