Enveloppes de fournisseurs LLM
Enveloppes prêtes à l’emploi qui ajoutent un score RAIL automatique à vos appels LLM existants. Toutes les enveloppes retournent{ response, content, railScore, evaluation }.
OpenAI
import { RAILOpenAI } from '@responsible-ai-labs/rail-score';
import OpenAI from 'openai';
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const railOpenAI = new RAILOpenAI(client, openai, {
thresholds: { safety: 7.0 },
});
const result = await railOpenAI.chat({
model: "gpt-4o",
messages: [{ role: "user", content: "Explain quantum computing simply." }],
});
console.log(result.content); // Texte de réponse LLM
console.log(result.railScore.score); // Score RAIL
console.log(result.evaluation); // Résultat d'évaluation complet
Anthropic
import { RAILAnthropic } from '@responsible-ai-labs/rail-score';
import Anthropic from '@anthropic-ai/sdk';
const anthropic = new Anthropic();
const railAnthropic = new RAILAnthropic(client, anthropic, {
thresholds: { safety: 7.0 },
});
const result = await railAnthropic.message({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: [{ role: "user", content: "Explain quantum computing simply." }],
});
console.log(result.content);
console.log(result.railScore.score);
Google Gemini
import { RAILGemini } from '@responsible-ai-labs/rail-score';
import { GoogleGenerativeAI } from '@google/generative-ai';
const genAI = new GoogleGenerativeAI(process.env.GOOGLE_API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-2.0-flash" });
const railGemini = new RAILGemini(client, model, {
thresholds: { safety: 7.0 },
});
const result = await railGemini.generate("Explain quantum computing simply.");
console.log(result.content);
console.log(result.railScore.score);
Observabilité
Langfuse
import { RAILLangfuse } from '@responsible-ai-labs/rail-score';
import { Langfuse } from 'langfuse';
const langfuse = new Langfuse({ publicKey: "...", secretKey: "..." });
const railLangfuse = new RAILLangfuse(client, langfuse);
// Évaluer le contenu et pousser les scores vers une trace Langfuse
const result = await railLangfuse.traceEvaluation("trace-id", "Contenu à évaluer");
// Pousser un résultat d'évaluation existant vers une trace
await railLangfuse.scoreTrace("trace-id", existingResult);
Gestionnaire Guardrail
import { RAILGuardrail } from '@responsible-ai-labs/rail-score';
const guardrail = new RAILGuardrail(client, {
inputThresholds: { safety: 7.0 },
outputThresholds: { safety: 7.0, fairness: 7.0 },
});
const preResult = await guardrail.preCall("Message de l'utilisateur");
if (!preResult.allowed) {
console.log("Entrée bloquée :", preResult.failedDimensions);
}
const postResult = await guardrail.postCall("Réponse LLM");
if (!postResult.allowed) {
console.log("Sortie bloquée :", postResult.failedDimensions);
}
Gestion des erreurs
import {
AuthenticationError,
InsufficientCreditsError,
InsufficientTierError,
ValidationError,
ContentTooLongError,
SessionExpiredError,
ContentTooHarmfulError,
RateLimitError,
RAILBlockedError
} from '@responsible-ai-labs/rail-score';
try {
const result = await client.eval({ content: "Contenu à évaluer" });
} catch (error) {
if (error instanceof AuthenticationError) {
console.error("Clé API invalide");
} else if (error instanceof InsufficientCreditsError) {
console.error(`Besoin de ${error.required} crédits, en avoir ${error.balance}`);
} else if (error instanceof RateLimitError) {
console.error(`Limite de taux dépassée. Réessayez après ${error.retryAfter}s`);
} else if (error instanceof ContentTooHarmfulError) {
console.error("Contenu trop nuisible pour être régénéré (score moyen < 3.0)");
} else if (error instanceof SessionExpiredError) {
console.error("Session de régénération sécurisée expirée (TTL de 15 min)");
} else if (error instanceof RAILBlockedError) {
console.error(`Bloqué par la politique : ${error.policyMode}`);
}
}
| Erreur | Statut | Quand |
|---|---|---|
AuthenticationError | 401 | Clé API invalide ou manquante |
InsufficientCreditsError | 402 | Pas assez de crédits |
InsufficientTierError | 403 | La fonctionnalité nécessite un plan supérieur |
ValidationError | 400 | Paramètres invalides |
ContentTooLongError | 400 | Le contenu dépasse la longueur maximale |
SessionExpiredError | 410 | Session de régénération sécurisée expirée |
ContentTooHarmfulError | 422 | Score moyen du contenu en dessous de 3.0 |
RateLimitError | 429 | Limite de taux dépassée |
RAILBlockedError | — | Contenu bloqué par le moteur de politique |
Fonctions utilitaires
import {
getScoreLabel, getScoreColor, getScoreGrade, formatScore,
formatDimensionName, normalizeDimensionName, resolveFrameworkAlias,
validateWeights, normalizeWeights, calculateWeightedScore,
isPassing, getDimensionsBelowThreshold, getLowestScoringDimension,
getHighestScoringDimension, aggregateScores
} from '@responsible-ai-labs/rail-score';
getScoreLabel(8.5); // "Excellent"
getScoreColor(8.5); // "vert"
getScoreGrade(8.5); // "A-"
formatScore(8.567, 2); // "8.57"
formatDimensionName("user_impact"); // "Impact utilisateur"
normalizeDimensionName("legal_compliance"); // "inclusivité"
resolveFrameworkAlias("ai_act"); // "eu_ai_act"
const weakAreas = getDimensionsBelowThreshold(result, 7.0);
const lowest = getLowestScoringDimension(result);
const stats = aggregateScores([result1, result2, result3]);
console.log(stats.averageScore, stats.minScore, stats.maxScore);
Types TypeScript
import type {
// Client
RailScoreConfig,
// Évaluation
EvalParams, EvalResult, EvalIssue, DimensionScore,
Dimension, EvaluationMode, ContentDomain, ScoreLabel,
// Régénération sécurisée
SafeRegenerateParams, SafeRegenerateResult, SafeRegenerateContinueParams,
// Conformité
ComplianceCheckSingleParams, ComplianceCheckMultiParams,
ComplianceResult, MultiComplianceResult, ComplianceFramework,
// Session & Politique
SessionConfig, SessionMetrics, PolicyMode, PolicyConfig, MiddlewareConfig,
// Observabilité
GuardResult, RAILGuardrailConfig,
} from '@responsible-ai-labs/rail-score';
Quelles sont les prochaines étapes
Référence de l'API d'évaluation
Paramètres HTTP complets et schéma de réponse.
API de conformité
RGPD, HIPAA, Loi sur l’IA de l’UE et plus encore.
Crédits et Tarification
Coûts des crédits par point de terminaison et mode.
Aperçu des intégrations
Tous les fournisseurs LLM et outils d’observabilité pris en charge.