アカウントのロックを外すエージェント
AIエージェントは、モデルが1ステップずつ操作を選んで進めるプログラムです。札幌の会社の情報システム部は、問い合わせを読み、社員を探し、アカウントのロックを外すエージェントをほしがっています。
エージェントは実際に操作するので、間違えると本当に害が出ます。別の人のロックを外したり、1時間同じことを繰り返したりします。この演習では、その制限を計画し、記録した実行を見直します。
このレッスンのゴール
メモ
許可リスト、上限、人の承認を備えたエージェントを計画できる。
今日のキーワード
| ことば | いみ | れい |
|---|---|---|
| エージェント | モデルが操作を選び、ステップごとに進めるプログラムです。 | |
| ツール | エージェントが実行を頼める、ひとつの操作です。 | unlock_account |
| 許可リスト | エージェントが使ってよいツールの一覧です。 | |
| 上限 | ステップ数や費用の限度です。 | |
| 人の承認 | 危ない操作の前に、人が許可することです。 | |
| 実行ログ | エージェントのすべてのステップの記録です。 |
学生が入力するセルは、このプレビューでは空白です。
もっと深く学ぶには
メモ
この演習は、制限を計画して実行を見直します。残りは「教材」ページのAIのレッスンで学べます。 エージェントを作る。 エージェントの評価。 エージェントを守る。 エージェントの安全性を詳しく。
許可リストが、使えるツールを決める
モデルは、どんな操作でも頼むことができます。実際に何を実行するかは、あなたのコードが決めます。
許可リストは、エージェントが使ってよいツールの短い一覧です。プログラムは、何かを実行する前に、頼まれたものをすべてこの一覧と比べます。一覧にないものは、どれほどもっともらしくてもブロックします。下のプログラムは、記録した頼みごとを確かめます。
やってみよう: 許可のないものを止める
// エージェントが使ってよいツールは、これだけです。
const allowed = ["read_ticket", "look_up_user", "unlock_account", "reply"];
// 記録したサンプル: モデルが頼んだツールを、順に並べたものです。
const asked = ["read_ticket", "look_up_user", "delete_user", "unlock_account", "reply"];
for (const tool of asked) {
if (allowed.includes(tool)) {
console.log("実行 ", tool);
} else {
console.log("ブロック", tool);
}
}
// asked に "reset_password" を足して、実行しましょう。
// 実行されますか、ブロックされますか。許可リストに入れるべきでしょうか。
上限と人が、限度を決める
上限は、同じことを繰り返すエージェントを止めます。アカウント1つのロックを外すなら、5ステップで十分です。それを超えたら、エージェントは止まり、問い合わせを人に渡します。
人の承認は、元に戻しにくい操作のためのものです。ロックを外すと、だれが入れるかが変わるので、先に人が許可します。問い合わせを読むのは安全なので、すぐに実行します。
ログから実行を見直す
どのステップも実行ログに残ります。ツール、その入力、その結果です。テストで実行した後は、ログを1行ずつ読みます。
見るのは3つです。あるはずのないツール。上限を超えたステップ。承認のない危ないステップ。下のプログラムは、記録した実行を、ステップごとのメモ付きで表示します。
やってみよう: 記録した実行を見直す
# ヘルプデスクのエージェントの、記録した実行です。上限は5ステップ。
run = ["read_ticket", "look_up_user", "unlock_account",
"look_up_user", "unlock_account", "reply"]
BUDGET = 5
RISKY = ["unlock_account"]
step = 1
for tool in run:
note = ""
if tool in RISKY:
note = "人の承認が必要"
if step > BUDGET:
note = "上限を超えた"
print(step, tool, note)
step = step + 1
# BUDGET を 6 に変えて、もう一度実行しましょう。
よくある誤解
注意
多くの人は、プロンプトに「アカウントを消さないこと」とはっきり書けば、エージェントは安全だと考えます。プロンプトはお願いにすぎず、モデルは無視することがあります。制限はすべてコードに書き、ツールを実行する前に毎回確かめましょう。