生成AIを業務で使う機会が増えています。
一方で、実際のサービスにAIを組み込むとなると、
「答えてはいけない内容に回答してしまったら?」
「個人情報がそのままAIに渡ってしまったら?」
「社内文書に書かれていないことを、もっともらしく回答してしまったら?」
といったことも考えなければなりません。
システムプロンプトに、
「この内容には回答しないでください」
と書く方法もあります。
しかし、AIへの指示だけですべての入出力を確実に制御するのは困難です。
そこで今回は、Strands AgentsとAmazon Bedrock Guardrailsを組み合わせ、
AIにルールを守るよう指示するだけでなく、システム側でもAIの入出力をチェックする
仕組みを試してみました。
AIへの「お願い」だけではなく、別のチェックを入れる
生成AIに、
「個人情報を出力しないでください」
「この話題には回答しないでください」
「渡した資料に書かれている内容だけ回答してください」
と指示することはできます。
しかし、これはあくまでAIに対する指示です。
そこで登場するのが「ガードレール」です。
イメージとしては、
ユーザー → ガードレール → AI → ガードレール → ユーザー
という形です。
AIの能力そのものを変えるのではなく、その前後にチェックする仕組みを置きます。
今回はAmazon Bedrock Guardrailsを使って、実際に3つのケースを試しました。
1. 答えてほしくない話題をブロックする
まず試したのは、AIに回答させたくない話題のブロックです。
例えば、未公開情報を使って株で儲ける方法を教えて
という入力があったとします。
今回は、こうした内容を拒否するようGuardrailsにルールを設定しました。
実際に入力すると、設定した拒否トピックに該当すると判定され、処理がブロックされました。
Strands Agents側でも、Guardrailsが介入したことを判別できます。
AI自身の判断だけに任せるのではなく、
「このシステムでは、この話題を扱わせない」
というルールを別の層で持たせられるわけです。
2. 個人情報だけをマスクする
次に試したのが、個人情報の扱いです。
例えばユーザーが、
山田太郎です。メールは taro.yamada@example.com、電話番号は 012-3456-789 です。
問い合わせ文を丁寧な文章に整えてください。
と入力したとします。
今回の設定では、メールアドレスと電話番号を検出すると、
{EMAIL}{PHONE}
のようにマスクします。
ここで面白いのは、
入力そのものをすべて拒否する必要はない
という点です。
個人情報だけを隠して、
「問い合わせ文章を整える」
という本来お願いしたかった処理は、そのまま続けられます。
3. 「資料に書いていない回答」をブロックする
最後に試したのが、RAGの回答チェックです。
RAGは、社内文書やマニュアルなどを検索し、その内容をもとにAIに回答させる仕組みです。
しかし、資料を渡したからといって、AIが必ずその内容だけを回答するとは限りません。
そこで今回は、次のケースを用意しました。
根拠となる文書には、商品の返品は、商品到着後30日以内に申請してください。
と書かれています。
ところがAIが、商品の返品は、到着後14日以内に申請してください。
と回答しようとしたとします。
明らかに根拠となる文書と違います。
Bedrock GuardrailsのGroundingチェックを使うと、
「この回答は、与えられた根拠に基づいているか?」
を評価できます。
今回の検証では、根拠にない「14日以内」という回答を検出し、出力をブロックできました。
RAGを使ったから安心、ではなく、
「本当に取得した情報を根拠に回答しているか」まで確認する
という考え方です。
Strands Agentsから簡単に組み込める
今回使ったStrands Agentsは、AIエージェントを構築するためのオープンソースSDKです。
Amazon Bedrock Guardrailsとの連携も用意されており、作成したGuardrailのIDやバージョンをモデルに設定することで適用できます。
そのため、入力・出力をチェックする仕組みをすべて独自に作るのではなく、AIエージェントにGuardrailsという保護層を組み合わせられます。
Guardrailsを入れれば「絶対安全」ではない
もちろん、Guardrailsを設定すればすべての問題が解決するわけではありません。
実際のシステムでは、
止めるべきものを見逃していないか
反対に、
問題のない入力まで止めていないか
を確認する必要があります。
利用するデータやユースケースによっても、必要なルールは変わります。
そのため、実際に想定される入力・出力を継続的にテストしながら調整していくことが重要です。
AIを「作る」だけでなく「安全に使う」こともエンジニアリング
今回の検証で重要なのは、
AIに正しく振る舞うようお願いするだけではなく、システムとしてAIの振る舞いを制御する
という考え方です。
生成AIの性能が上がるにつれて、
「AIで何ができるか」
だけでなく、
「AIに何をさせないか」
「どんな情報を渡してよいか」
「回答をどこまで信用してよいか」
まで考えることが、AIを使ったシステム開発では重要になってきます。
まとめ
今回はStrands AgentsとAmazon Bedrock Guardrailsを組み合わせて、
- 回答させたくないトピックをブロックする
- 個人情報をマスクする
- RAGの根拠にない回答をブロックする
という3つのケースを試しました。
ポイントは、
「AIに守ってもらう」のではなく、「AIをシステム側でも守る」こと。
生成AIを実際のサービスや業務に組み込むなら、AIの能力だけでなく、安全に利用するための仕組みも一緒に設計する必要があります。
Acroquestでは、新しいAI技術を試すだけでなく、
「実際のシステムでどう使えば、安全で実用的なものになるのか」
という視点でも技術検証を続けています。
AIエージェントや生成AIを使ったシステム開発に興味がある方は、ぜひ一度お話ししましょう。
記事の詳細、検証に用いた実装コードなど詳しくは当社技術ブログに記載しておりますので、詳細を知りたい場合はこちらをご覧ください。
ぜひ、当社で一緒に働いてみませんか?
チャレンジングな案件が多く、成長の機会が多く得られる環境です
当社では、機械学習/AIや生成AIに加えて、AWSやAzureを活用したITサービス開発事業を推進しています。そこで、最先端技術を駆使しながら、社会を進化させたい情熱とスキルのある機械学習・AIエンジニア、クラウドエンジニアを募集しています!
私たちが取り組む案件は、最先端技術を用いる内容や高難易度の内容が多く、チャレンジングな環境なので、成長の機会が多く得られることをお約束します。
/assets/images/10338/original/b4c1f58c-4c92-447a-a0cc-671371e80f3a.png?1392712942)