メインコンテンツへスキップ
評価はスコアが何であるかを教えます。ポリシーエンジンは、アプリケーションがそれに対して何をすべきかを教えます。ルールを宣言します - 「安全性が7未満の場合、応答をブロックする」 - そしてSDKは評価された応答ごとに自動的にそれらを強制します。
Python SDK: client.eval() with policy= | セッション: RAILSession

評価とポリシー

評価ポリシーエンジン
返すものスコア、信頼度、説明アクション: block / warn / flag / allow
役割観察強制
使用するタイミングスコアを取得し、何をするかを決定したい場合SDKにルールを自動的に強制させたい場合

仕組み

ルールは優先順位の順に評価されます。最初に一致したルールが主要なアクションを決定します。さらに一致する低優先度のルールは、そのアクションを二次的に追加するため、失敗は静かに無視されません。

ポリシーアクション

アクション使用するタイミング
block応答がユーザーに届いてはいけない場合顧客向けチャットボットでの safety < 5
warn応答は進行できるが、呼び出し元に通知する必要がある場合reliability < 6 - 応答には不確実性が含まれる可能性があります
flagブロックせずに非同期の人間によるレビューのためにキューに入れる場合fairness < 7 - バイアスレビューのためにフラグを立てる
allow明示的に通過させる場合(一致しないコンテンツのデフォルト)ルールリストの最後のキャッチオール

ポリシーの宣言

from rail_score_sdk import RailScoreClient, Policy, Rule

client = RailScoreClient(api_key="...")

policy = Policy(rules=[
    Rule(dimension="safety",      threshold=7.0, action="block"),
    Rule(dimension="fairness",    threshold=6.0, action="flag"),
    Rule(dimension="reliability", threshold=5.0, action="warn"),
])

result = client.eval(
    content="...",
    mode="basic",
    policy=policy,
)

print(result.policy_outcome.action)           # "block" | "warn" | "flag" | "allow"
print(result.policy_outcome.triggered_rules)  # 発火したルール
print(result.policy_outcome.blocked)          # action == "block" の場合は True

再利用可能なポリシー

ポリシーを一度定義し、クライアントに添付することで、すべての eval() 呼び出しに自動的に適用されます:
HEALTHCARE_POLICY = Policy(rules=[
    Rule(dimension="safety",       threshold=8.5, action="block"),
    Rule(dimension="reliability",  threshold=7.5, action="block"),
    Rule(dimension="privacy",      threshold=8.0, action="block"),
    Rule(dimension="transparency", threshold=6.0, action="warn"),
])

client = RailScoreClient(
    api_key="...",
    default_policy=HEALTHCARE_POLICY,
)

result = client.eval(content="...", mode="basic")  # ポリシーが自動的に適用されます

if result.policy_outcome.blocked:
    return "その情報を提供できません — 医療専門家に相談してください。"

セッションレベルのポリシー

セッションは、会話全体の品質を追跡します。集約された会話の品質に基づいてトリガーされるポリシーを設定でき、これは多くのターンにわたる徐々のドリフトを検出するのに便利です:
from rail_score_sdk import RailScoreClient, RAILSession, Policy, Rule

turn_policy = Policy(rules=[
    Rule(dimension="safety", threshold=5.0, action="block"),
])

session_policy = Policy(rules=[
    Rule(dimension="safety", threshold=7.0, action="flag", aggregate="avg"),
])

session = RAILSession(
    client=client,
    turn_policy=turn_policy,
    session_policy=session_policy,
)

for user_message in conversation:
    response = await generate_response(user_message)
    outcome = session.record(content=response, mode="basic")

    if outcome.turn_blocked:
        send_fallback()
    elif outcome.session_flagged:
        notify_human_reviewer(session.session_id)
    else:
        send(response)

実際のポリシーの例

safety      >= 8.5 : block
reliability >= 7.5 : block
privacy     >= 8.0 : block
transparency>= 6.0 : warn
fairness    >= 8.0 : block
inclusivity >= 7.0 : flag
safety      >= 6.0 : warn
safety      >= 7.0 : block
reliability >= 5.0 : warn
user_impact >= 6.0 : flag

次は何をするか

Python: ポリシーエンジン

ポリシー、ルール、およびポリシーコールバックの完全なAPI。

Python: セッション

RAILSessionライフサイクルと集約ポリシー。

概念: ミドルウェア

ゼロボイラープレートの強制のためにプロバイダラッパーとポリシーを組み合わせます。

概念: 評価

ポリシールールを適用する前にスコアを理解します。