跳转到主要内容

Installation

npm install @responsible-ai-labs/rail-score

Basic usage

import { RailScoreClient } from "@responsible-ai-labs/rail-score";

const client = new RailScoreClient({ apiKey: "YOUR_RAIL_API_KEY" });

// Evaluate content
const result = await client.eval({
  content: "Your AI-generated text here",
  mode: "basic",
});

console.log(`RAIL Score: ${result.railScore.score}/10`);

for (const [dim, scores] of Object.entries(result.dimensionScores)) {
  console.log(`  ${dim}: ${scores.score}/10`);
}

Safe Regeneration

const result = await client.safeRegenerate({
  content: "Prioritize candidates from top universities.",
  prompt: "What hiring criteria should we use?",
  threshold: 7.0,
  mode: "basic",
  maxIterations: 3,
});

console.log(`Final score: ${result.finalScore}/10`);
console.log(`Content: ${result.content}`);

Compliance check

const result = await client.complianceCheck({
  content: "We store and process user interaction data.",
  frameworks: ["gdpr", "eu_ai_act"],
  context: "EU-facing SaaS product",
});

console.log(`Compliant: ${result.overallCompliant}`);

LLM provider wrappers

import { RAILOpenAI, RAILAnthropic, RAILGemini } from "@responsible-ai-labs/rail-score";

const client = new RAILOpenAI({
  openaiApiKey: "sk-...",
  railApiKey: "YOUR_RAIL_API_KEY",
  railThreshold: 7.0,
  railPolicy: "regenerate",
});

const response = await client.chatCompletion({
  model: "gpt-4o",
  messages: [{ role: "user", content: "Explain quantum computing." }],
});

console.log(`RAIL Score: ${response.railScore}/10`);

Naming conventions

The JavaScript SDK uses camelCase for all properties:
API (snake_case)SDK (camelCase)
rail_scorerailScore
dimension_scoresdimensionScores
safe_regeneratesafeRegenerate
compliance_checkcomplianceCheck
credits_consumedcreditsConsumed
threshold_metthresholdMet