AI機能の要件書を書く
要件書とは、機能が何をするべきか、動いているとどう確かめるかを書いた短い文書です。あいまいな要件書のAI機能は、完成して見えても、お客さんの前で失敗することがあるので大切です。
このモジュールでは、架空のひだまり町立図書館が、ヘルプアシスタントを頼みます。最初のメールには「開館時間と延滞料に答えるチャットボットをお願いします。良いものにしてください」とあります。
このレッスンのゴール
メモ
私は、依頼を要件に直し、動いているかを知る方法を決められます。
キーワード
| ことば | いみ | れい |
|---|---|---|
| 要件書 | 何を作るかを書いた短い文書 | |
| 要件 | 機能が満たすべきこと一つ | |
| 上限 | 機能が超えてはいけない数字 | 40 文字まで |
| 指標 | 答えがどれだけ良いかを表す数字 | |
| 代替手段 | 機能が答えられないとき、利用者が受け取るもの |
学生が入力するセルは、このプレビューでは空白です。
依頼は要件書ではない
依頼は、誰かの望みを伝えます。誰が使うのか、してはいけないことは何か、いつ完成なのかは伝えません。
依頼が残した問いを立てると、要件書になります。問いは作る前に立ててください。答えしだいで、作るものが変わるからです。
例: 図書館の依頼
| 依頼の言葉 | 残された問い |
|---|---|
| チャットボット | 誰が、どのページで聞くのか |
| 開館時間と延滞料 | ほかにどんな質問が来るのか |
| 良いものにする | 何件の間違いなら許せるのか |
| 大きさの話がない | 答えはどれだけ長くてよいのか |
| お金の話がない | 1日の利用にいくらまで使えるのか |
学生が入力するセルは、このプレビューでは空白です。
「良い」には数字が要る
「良い」は感想です。「10件中9件の答えに正しい数字がある」は指標です。二人が確かめて、同じ結論になります。
指標には、テスト用の質問と、答えを採点する規則が要ります。次のレッスンで作ります。今は、要件書に数字が何になるかを書くだけです。
上限、費用、個人情報、代替手段
抜けやすい項目が、あと4つあります。上限。たとえば40語です。1日の費用の上限。何を保存しないかを決める個人情報の規則。モデルが答えない日のための代替手段です。
数字が守られないときに判断する責任者も、決めておきます。
よくある間違い
注意
あいまいな要件書も、モデルがはっきりさせてくれると考える人が多いです。そうはなりません。どの答えが間違いか誰も言えなければ、いつ動いているかも誰も言えません。作る前に数字を書きます。
要件書の検査を書く(1)
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' '// 図書館から届いた依頼を、項目に分けたもの。' 'const brief = {' ' users: \"開館時間と延滞料を尋ねる利用者\",' ' tasks: \"ファクトシートをもとに質問に答える\",' ' limits: \"答えは短くしてほしい\",' ' measure: \"答えは良いものにしてほしい\",' ' cost: \"\",' '};' 'fs.writeFileSync(\"brief.json\", JSON.stringify(brief, null, 1));' > brief.js"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
要件書の検査を書く(2)
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const REQUIRED = [\"users\", \"tasks\", \"limits\", \"measure\", \"cost\", \"privacy\", \"fallback\", \"owner\"];' 'const NEEDS_NUMBER = [\"limits\", \"measure\", \"cost\"];' 'const missing = [];' 'const vague = [];' 'for (const part of REQUIRED) {' ' const text = (brief[part] || \"\").trim();' ' if (text === \"\") missing.push(part);' ' else if (NEEDS_NUMBER.includes(part) && /[0-9]/.test(text) === false) vague.push(part);' '}' 'console.log(\"足りない項目:\", missing.join(\", \"));' 'console.log(\"数字のない項目:\", vague.join(\", \"));' 'console.log(missing.length + vague.length === 0 ? \"要件書は完成しています。\" : \"要件書はまだ完成していません。\");' >> brief.js"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
図書館の要件書を検査する
docker exec -w /home/node/project agent node brief.jsここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
Run の表示
| 行 | 意味 |
|---|---|
| 足りない項目 | cost, privacy, fallback, owner |
| 数字のない項目 | limits, measure |
| 最後の行 | 要件書はまだ完成していません。 |
学生が入力するセルは、このプレビューでは空白です。