ユースケース
ツール呼び出しのリスクゲート
エージェントが提案するツール呼び出しが、本番データに触れる前にスコアを付けます。
問題
エージェントは、もっともらしく見えて破滅的な SQL やファイル削除を発明します。
回答に対してコードが行うこと
リスクスコアが自分のしきい値を超える呼び出しは、ブロックまたは確認します。
ガードレールの回答を読む
1 つの呼び出しに 3 つのシグナル:needs_confirmation と matches_intent ははい/いいえの確率、risk は Harmless → Recoverable → Irreversible data loss にわたるスコアです。上の例はわざとひどいものにしてあります — "clean up staging" のリクエストなのに、ツール呼び出しが本番テーブルを削除するケースです。risk は上位へ向かい、intent-match は信頼度を下回ります。ラッパーはこれをブロックしてログに残すアクションに変えます。
ループの中でゲートを置く場所
ゲートを呼ぶのは正確に 1 回、エージェントが呼び出しを提案した後、実行の前です。ユーザーの元のリクエストと提案された呼び出しを state として渡します — それ以外は必要ありません。ポリシーの行はコードに残し(score ≥ 1.5 または intent が 0.8 未満でブロック、その中間は確認)、400〜600 ms の往復が正当化される影響半径を持つツールだけをゲートします:SQL、ファイルシステム、デプロイ、メール。読み取り専用の呼び出しはゲートなしで通せます。
ツールゲート特有の落とし穴
ゲートにツール呼び出しだけを送らないこと:元のユーザーリクエストがなければ、intent match は比較するものを失い、破壊スコアのみのゲートに崩壊します。初日からすべてのツールをゲートしないこと — 失敗してもせいぜい回復可能な程度の少数から始め、しきい値が安定してきたら見直します。最後に:この呼び出しのタイムアウトは「先へ進んで願う」ではなく「人に尋ねる」として扱ってください。
リクエストの形状
これは、このプリセットについて Playground が送る完全なリクエストです — 自分のサーバーが Bearer キー付きで /v1/systemone に送るのと同じ JSON です。
curl https://jevai.website/api/v1/systemone \
-H "Authorization: Bearer $JEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"state": {
"user_request": "Clean up the old test data in the staging database.",
"proposed_tool_call": {
"tool": "sql.execute",
"args": {
"query": "DROP TABLE customers;"
},
"environment": "production"
}
},
"questions": {
"needs_confirmation": {
"type": "noul",
"instructions": "Should a human confirm this tool call before it runs?"
},
"matches_intent": {
"type": "noul",
"instructions": "Does `proposed_tool_call` match what `user_request` asked for?"
},
"risk": {
"type": "score",
"instructions": "How destructive is this action if it is wrong?",
"criteria": [
"Harmless",
"Recoverable",
"Irreversible data loss"
]
}
}
}'このユースケースに関する FAQ
- ゲートはすべてのツール呼び出しを遅くしますか?
- 自分が送ったものだけです。ほとんどのチームは書き込みをゲートし、読み取りは素通しさせます。実測では往復は 400〜600 ms に集中するので、100 ms 未満の読み取りはこの代償を払いたがりません。
- モデルは自分のコードベース全体を見られますか?
- いいえ — 見えるのは自分が送った state だけです。環境(staging 対 production)と呼び出し側の意図を含めてください。この 2 つの事実がほとんどのゲートを決めます。
- 1 つの確率で信じるには十分ですか?
- 不可逆なアクションでは、どの 1 つの数字も十分ではありません。だからこそプリセットは 3 つの質問を包んでいます — intent match、人間の確認、破壊スコア — それぞれ自分のポリシー内で別のしきい値を持ちます。