どの機能に最も注意が要るか
リスク評価は、AI機能がどれだけの害を与えうるかを示し、公開前に必要な注意の度合いを決めます。献立づくりと履歴書の選別は、同じモデルを使ってもリスクは同じではありません。
このレッスンは一般的な情報であり、法的助言ではありません。人に関わる決定では、適用される決まりを確かめ、専門家に相談してください。
このレッスンのゴール
メモ
AI機能のリスクを評価し、だれが責任を負うかを言えます。
キーワード
| ことば | いみ |
|---|---|
| リスクレベル | 機能にどれだけ注意が要るかを示す段階 |
| 自動の決定 | 動く前にだれも確認しない結果 |
| 元に戻せる | 誤った結果を直せること |
| 責任者 | 機能について答える、名前のある一人 |
| 説明責任 | 理由を説明し、直す責任 |
学生が入力するセルは、このプレビューでは空白です。
四つの問いでレベルが決まる
機能について四つ尋ねます。人に作用しますか。各結果を動く前にだれかが確認しますか。誤った結果を直せますか。何人に届きますか。
危険な側に当てはまるごとに点が加わり、合計でレベルが決まります。人に作用する、確認する人がいない、元に戻せない、1000 人を超える、がそれです。レベルは話し合いの出発点です。危険な機能を、おもちゃのように扱うのを防ぎます。
例: 二つの機能
| 機能 | 人に作用 | 自動 | 元に戻せない | 1000人超 | 点数とレベル |
|---|---|---|---|---|---|
| 注文の追跡 | いいえ | はい: 2 | いいえ | いいえ | 2、低 |
| 履歴書の選別 | はい: 2 | はい: 2 | はい: 2 | いいえ | 6、高 |
学生が入力するセルは、このプレビューでは空白です。
どの機能にも名前のある責任者がいる
「データチーム」のような役割は責任者ではありません。責任者は、機能が害を与えたときに尋ねられ、止められる一人です。
人についての決定をシステムだけが行うことに、決まりを設けている地域があります。多くは人による見直しを求めます。これは要約であり法的助言ではありません。適用される決まりを調べてください。
よくある間違い
注意
「モデルがリスクを決めるので、安全なモデルなら安全な機能だ」と考えがちです。リスクは、機能が何をするか、だれに対してか、元に戻せるかで決まります。評価するのはモデルではなく機能です。
モデル用の補助を書く(1)
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const base = process.env.AI_URL || \"http://ai:4000\";' '// 応答に含まれるトークン数。なければ null。' 'function count(data, name) {' ' return data.usage && typeof data.usage[name] === \"number\" ? data.usage[name] : null;' '}' > model.js"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
モデル用の補助を書く(2)
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function ask(messages, sample, max) {' ' try {' ' const res = await fetch(base + \"/v1/chat/completions\", {' ' method: \"POST\",' ' headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' ' body: JSON.stringify({ model: \"lab\", messages: messages, max_tokens: max || 100 }),' ' signal: AbortSignal.timeout(30000),' ' });' ' if (res.ok === false) throw new Error(\"status \" + res.status);' ' const d = await res.json();' ' return { text: d.choices[0].message.content, inTokens: count(d, \"prompt_tokens\"), outTokens: count(d, \"completion_tokens\"), recorded: false };' ' } catch (error) {' ' console.log(\"記録済みサンプル: モデルが答えませんでした (\" + error.message + \")。\");' ' return { text: sample, inTokens: null, outTokens: null, recorded: true };' ' }' '}' 'module.exports = { ask };' >> model.js"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
リスク評価を書く(1)
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ask } = require(\"./model\");' '' '// 架空の機能。何をするか、だれに対してか、元に戻せるかを持つ。' 'const features = [' ' { name: \"注文の追跡\", people: false, automatic: true, undo: true, users: 500 },' ' { name: \"履歴書の選別\", people: true, automatic: true, undo: false, users: 300 },' ' { name: \"宿題の手伝い\", people: true, automatic: false, undo: true, users: 2000 },' ' { name: \"返金ボット\", people: true, automatic: true, undo: true, users: 800 },' '];' 'const owners = { \"履歴書の選別\": \"田中 美咲\", \"返金ボット\": \"\" };' > risk.js"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
リスク評価を書く(2)
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function score(f) {' ' let s = 0;' ' if (f.people) s = s + 2;' ' if (f.automatic) s = s + 2;' ' if (f.undo === false) s = s + 2;' ' if (f.users > 1000) s = s + 1;' ' return s;' '}' 'function level(s) {' ' if (s >= 5) return \"高\";' ' if (s >= 3) return \"中\";' ' return \"低\";' '}' >> risk.js"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
リスク評価を書く(3)
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' features.forEach(function (f) {' ' const s = score(f);' ' const who = owners[f.name] || \"なし\";' ' console.log(f.name + \": 点数 \" + s + \"、\" + level(s) + \"、責任者: \" + who);' ' });' ' const q = \"二文で答えてください。履歴書の選別機能が人に与えうる害を一つと、その責任をだれが負うべきかを書いてください。\";' ' const r = await ask([{ role: \"user\", content: q }], \"よい応募者を、だれにも気づかれずに誤って落とすおそれがあります。社内の名前のある一人が責任を負う必要があります。\", 80);' ' console.log(\"答えの一例: \" + r.text);' '}' 'main();' >> risk.js"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
リスク評価を実行する
docker exec -w /home/node/project agent node risk.jsここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
出力の例
| 行 | 示していること |
|---|---|
| 注文の追跡: 点数 2、低、責任者: なし | リスクが低いので、責任者がいないのは急ぎではない |
| 履歴書の選別: 点数 6、高、責任者: 田中 美咲 | リスクが高く、責任者がいる |
| 宿題の手伝い: 点数 3、中、責任者: なし | 人が確認しますが、2000 人に届くので中。責任者はいない |
| 返金ボット: 点数 4、中、責任者: なし | 穴がある: リスクが中なのに、だれも答えない |
| 答えの一例: ... | あなた自身の呼び出し。実行ごとに変わるか、記録済みサンプルと出る |
学生が入力するセルは、このプレビューでは空白です。