クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

総仕上げ演習: 安全な制限のあるエージェント

このレッスンのあとで: 許可リスト、上限、人の承認を備えたエージェントを計画できる。

60分のレッスンコマンドなし

アカウントのロックを外すエージェント

AIエージェントは、モデルが1ステップずつ操作を選んで進めるプログラムです。札幌の会社の情報システム部は、問い合わせを読み、社員を探し、アカウントのロックを外すエージェントをほしがっています。

エージェントは実際に操作するので、間違えると本当に害が出ます。別の人のロックを外したり、1時間同じことを繰り返したりします。この演習では、その制限を計画し、記録した実行を見直します。

このレッスンのゴール

メモ

許可リスト、上限、人の承認を備えたエージェントを計画できる。

今日のキーワード

ことばいみれい
エージェントモデルが操作を選び、ステップごとに進めるプログラムです。
ツールエージェントが実行を頼める、ひとつの操作です。unlock_account
許可リストエージェントが使ってよいツールの一覧です。
上限ステップ数や費用の限度です。
人の承認危ない操作の前に、人が許可することです。
実行ログエージェントのすべてのステップの記録です。

学生が入力するセルは、このプレビューでは空白です。

もっと深く学ぶには

メモ

この演習は、制限を計画して実行を見直します。残りは「教材」ページのAIのレッスンで学べます。 エージェントを作る。 エージェントの評価。 エージェントを守る。 エージェントの安全性を詳しく。

許可リストが、使えるツールを決める

モデルは、どんな操作でも頼むことができます。実際に何を実行するかは、あなたのコードが決めます。

許可リストは、エージェントが使ってよいツールの短い一覧です。プログラムは、何かを実行する前に、頼まれたものをすべてこの一覧と比べます。一覧にないものは、どれほどもっともらしくてもブロックします。下のプログラムは、記録した頼みごとを確かめます。

やってみよう: 許可のないものを止める

コード: node
// エージェントが使ってよいツールは、これだけです。
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つです。あるはずのないツール。上限を超えたステップ。承認のない危ないステップ。下のプログラムは、記録した実行を、ステップごとのメモ付きで表示します。

やってみよう: 記録した実行を見直す

コード: python
# ヘルプデスクのエージェントの、記録した実行です。上限は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 に変えて、もう一度実行しましょう。

よくある誤解

注意

多くの人は、プロンプトに「アカウントを消さないこと」とはっきり書けば、エージェントは安全だと考えます。プロンプトはお願いにすぎず、モデルは無視することがあります。制限はすべてコードに書き、ツールを実行する前に毎回確かめましょう。

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。