Enveloppes prêtes à l’emploi qui ajoutent un score RAIL automatique à vos appels LLM existants. Toutes les enveloppes retournent { response, content, railScore, evaluation }.
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 Langfuseconst result = await railLangfuse.traceEvaluation("trace-id", "Contenu à évaluer");// Pousser un résultat d'évaluation existant vers une traceawait railLangfuse.scoreTrace("trace-id", existingResult);
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}`); }}