セッション追跡
RAILSessionは、構成可能な深層評価頻度と品質閾値アラートを使用して、マルチターンの会話全体でスコアを追跡します。
import { RAILSession } from '@responsible-ai-labs/rail-score';
const session = new RAILSession(client, {
deepEvalFrequency: 5, // 5ターンごとに深層評価
contextWindow: 10, // 最後の10ターンを追跡
qualityThreshold: 7.0, // スコアが閾値を下回ったときに深層評価をトリガー
});
// 会話ターンを追加
const result = await session.addTurn("AIの応答内容");
console.log(result.rail_score.score);
// セッションメトリクス
const metrics = session.getMetrics();
console.log(`平均: ${metrics.averageScore}`);
console.log(`最小: ${metrics.minScore}, 最大: ${metrics.maxScore}`);
console.log(`合格率: ${metrics.passingRate}`);
console.log(`ターン数: ${metrics.turnCount}`);
for (const [dim, avg] of Object.entries(metrics.dimensionAverages)) {
console.log(` ${dim}: ${avg.toFixed(1)}`);
}
// 新しい会話のためにリセット
session.reset();
ポリシーエンジン
4つのモードでコンテンツ品質ポリシーを強制します: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("チェックするコンテンツ");
console.log(result.evaluation.rail_score.score);
console.log(result.passed); // true/false
console.log(result.failedDimensions); // ["safety"] または []
} catch (error) {
if (error instanceof RAILBlockedError) {
console.log(`ブロックされました: ${error.message}`);
}
}
// ランタイム再構成
policy.setMode("LOG_ONLY");
policy.setThresholds({ safety: 8.0 });
// CUSTOMモード — 独自の強制ロジック
const customPolicy = new PolicyEngine(client, {
mode: "CUSTOM",
thresholds: { safety: 7.0 },
customCallback: async (content, evalResult) => {
return `[レビュー済み] ${content}`;
},
});
ミドルウェア
任意の非同期関数をRAIL評価の前後でラップします: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(`入力スコア: ${result.rail_score.score}`),
onOutputEval: (result) => console.log(`出力スコア: ${result.rail_score.score}`),
});
const safeLLMCall = middleware.wrap(async (input) => {
return await myLLM.generate(input);
});
const output = await safeLLMCall("ユーザーメッセージ");
次は何か
プロバイダーとリファレンス
LLMプロバイダーラッパー、エラーハンドリング、およびTypeScript型。
概念: ポリシーエンジン
ポリシールールがどのように機能するか。