Amazon Q in ConnectでBedrock Guardrailsの一部機能が日本語対応されていました
はじめに
Amazon Bedrock Guardrailsの一部機能が日本語対応されたことで、Amazon Q in ConnectでもAIガードレールが日本語で利用できるようになりました。
Amazon Q in Connect ガードレールは、Amazon Bedrock ガードレールのクラシック階層と同じ言語をサポートしています。そのため、Amazon Bedrock Guardrailsのクラシックレベル(標準レベルではない)で日本語対応している機能のみ、Amazon Q in Connectでも利用できます。
Amazon Q in Connect ガードレールは、Amazon Bedrock ガードレールのクラシック階層と同じ言語をサポートしています。サポートされている言語の完全なリストについては、「Amazon Bedrock ガードレールでサポートされている言語」を参照してください。他の言語でのテキストコンテンツの評価は無効になります。
https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/create-ai-guardrails.html
各機能の日本語サポート状況は以下のドキュメントから確認できます。
日本語対応状況
各機能の日本語対応状況は以下のとおりです。
- コンテンツフィルター(有害カテゴリとプロンプト攻撃):未対応
- フィルターの強度を調整して、有害なコンテンツを含む入力プロンプトやモデルレスポンスをブロックします
- 憎悪、侮辱、性的、暴力、不正行為、プロンプト攻撃など、事前に定義された特定の有害なコンテンツカテゴリの検出に基づいてフィルタリングされます
- 拒否されたトピック:未対応
- アプリケーションのコンテキストで望ましくない一連のトピックを定義します
- 定義したトピックがユーザークエリやモデルレスポンスで検出された場合にブロックできます(最大30個のトピックを追加可能)
- 単語フィルター:未対応
- 望ましくない単語、フレーズ、冒涜的表現を完全一致でブロックするフィルターを設定します
- 機密情報フィルター:サポート済み
- ユーザー入力とモデルレスポンスの個人を特定できる情報(PII)やカスタム正規表現などの機密情報をブロックまたはマスクできます
- SSN番号、生年月日、住所などのエンティティの標準形式の機密情報の確率的検出に基づいて動作します
- 文脈上のグラウンディングチェック:未対応
- ソースのグラウンディングとユーザークエリとの関連性に基づいて、モデルレスポンスのハルシネーションを検出してフィルタリングします
結論として、日本語で利用できる機能は機密情報フィルターのみです。
Amazon Bedrock Guardrailsの各機能について詳しくは、以下のブログが参考になります。
本記事では、Amazon Q in ConnectでBedrock Guardrailsの日本語対応状況を実際に確認していきます。
AIガードレールの設定
AIガードレールを作成し、各機能を設定していきます。
機密情報フィルター以外は日本語対応していませんが、検証のため他の機能も有効化してみます。
コンテンツフィルターは、全カテゴリーの強度を「高」に設定しました。
拒否されたトピックは、投資アドバイスのトピックを設定しました。
単語フィルターも設定できます。「投資」というワードを設定しました。
機密情報フィルターについては、Guardrailsの動作に2つの選択肢があります。
- ブロック:機密情報を含むリクエストやレスポンスをブロックできます
- マスク:モデルリクエストまたはレスポンスから情報を匿名化または編集できます
「名前」はブロックとし、「ユーザー名」などはマスクにしました。
機密情報フィルターで設定可能なタイプは以下のドキュメントにまとまっています。
文脈上のグラウンディングチェックは今回有効化しませんでした。
ブロックされたメッセージングでは、ガードレールが入力またはモデルレスポンスをブロックした場合にユーザーに表示されるデフォルトのメッセージをカスタマイズできます。
以下のメッセージにしました。
動作確認結果
実際に各機能をテストしてみました。
拒否されたトピックのテスト(投資アドバイス)
BOT: お問い合わせ内容をお伝え下さい。
Customer: 投資のアドバイスがほしい
BOT: I don't have an answer
Customer: どういった投資がよいでしょうか。
BOT: I don't have an answer
→ 拒否されたトピックは動作しませんでした
単語フィルターのテスト(「投資」ワードを設定)
Customer: 投資のアドバイスがほしい
BOT: I don't have an answer
Customer: どういった投資がよいでしょうか。
BOT: I don't have an answer
→ 単語フィルターは動作しませんでした
コンテンツフィルターのテスト(暴力的なワード)
Customer: <暴力的なワード>
BOT: お客様、このようなお言葉は控えていただきますよう、お願いいたします。他にお困りのことはございませんか? 安全とサービスの提供が最優先ですので、ご理解ください。
→ コンテンツフィルターは動作しませんでした
機密情報フィルターのテスト
Customer: 平井裕二と申します
BOT: 入力は、ガードレールによってブロックされました
Customer: ユーザー名は、kkkkです。こんにちは
BOT: ユーザー名{USERNAME}さん、本日はどのようなお問い合わせでしょうか?お手伝いさせていただきます。
→ 機密情報フィルターは、ブロックとマスクどちらも期待通り動作しました
テスト結果の詳細
検証の結果、日本語では機密情報フィルターのみが正常に動作することが確認できました。
- 拒否されたトピック:反応せず
- 単語フィルター:反応せず
- コンテンツフィルター:反応せず
- 機密情報フィルター:正常に動作
Lexログの詳細
ブロックされた場合のログ
- 入力:平井裕二と申します
- Bot:入力は、ガードレールによってブロックされました
{
"messages": [
{
"contentType": "PlainText",
"content": "入力は、ガードレールによってブロックされました"
}
],
"dialogEventLogs": [
{
"message": [
{
"contentType": "PlainText",
"content": "入力は、ガードレールによってブロックされました"
}
],
"nextStep": {
"dialogAction": {
"type": "EndConversation"
}
},
"dialogStepLabel": "Intent/AmazonQinConnect/FulfillIntent"
}
],
"requestAttributes": {
"x-amz-lex:q-in-connect-response": "入力は、ガードレールによってブロックされました",
"x-amz-lex:accept-content-types": "PlainText",
"x-amz-lex:channels:platform": "Connect Chat"
},
"sessionState": {
"sessionAttributes": {
"x-amz-lex:q-in-connect:conversation-status": "CLOSED",
"x-amz-lex:q-in-connect:conversation-status-reason": "FAILED",
"x-amz-lex:connect-originating-request-id": "fb6fb821-40bb-3bc0-9427-4a0ae2cccc4d",
"x-amz-lex:q-in-connect-response": "入力は、ガードレールによってブロックされました",
"x-amz-lex:q-in-connect:session-arn": "arn:aws:wisdom:ap-northeast-1:540835513398:session/a1793008-f4de-481b-a9ed-3697ef373ff2/44cc3ced-c39b-4971-9215-3bbd8e9b4a40"
},
"intent": {
"name": "AmazonQinConnect",
"state": "Failed",
"confirmationState": "None",
"slots": {}
},
"dialogAction": {
"type": "Close"
},
"originatingRequestId": "fb6fb821-40bb-3bc0-9427-4a0ae2cccc4d"
},
"inputTranscript": "平井裕二と申します。",
"missedUtterance": true,
"utteranceContext": {}
}
マスクされた場合のログ
- 入力:ユーザー名は、kkkkです。こんにちは
- Bot:ユーザー名{USERNAME}さん、本日はどのようなお問い合わせでしょうか?お手伝いさせていただきます。
{
"messages": [
{
"contentType": "PlainText",
"content": "ユーザー名{USERNAME}さん、本日はどのようなお問い合わせでしょうか?お手伝いさせていただきます。"
}
],
"dialogEventLogs": [
{
"message": [
{
"contentType": "PlainText",
"content": "ユーザー名{USERNAME}さん、本日はどのようなお問い合わせでしょうか?お手伝いさせていただきます。"
}
],
"dialogStepLabel": "Intent/AmazonQinConnect/FulfillIntent",
"nextStep": {
"dialogAction": {
"type": "Delegate"
}
}
}
],
"requestAttributes": {
"x-amz-lex:q-in-connect-response": "ユーザー名{USERNAME}さん、本日はどのようなお問い合わせでしょうか?お手伝いさせていただきます。",
"x-amz-lex:accept-content-types": "PlainText",
"x-amz-lex:channels:platform": "Connect Chat"
},
"sessionState": {
"sessionAttributes": {
"x-amz-lex:q-in-connect:conversation-status": "PROCESSING",
"x-amz-lex:q-in-connect:conversation-status-reason": "SUCCESS",
"x-amz-lex:connect-originating-request-id": "21ef2a92-3d28-316d-b29b-f42eda73d468",
"ToolUseId": "tooluse_xvQs6mcwTumlKeDpDG2O6Q",
"x-amz-lex:q-in-connect-response": "ユーザー名{USERNAME}さん、本日はどのようなお問い合わせでしょうか?お手伝いさせていただきます。",
"x-amz-lex:q-in-connect:session-arn": "arn:aws:wisdom:ap-northeast-1:540835513398:session/a1793008-f4de-481b-a9ed-3697ef373ff2/e1a71002-9b0e-48d4-b2bd-109661dcf2ce",
"Tool": "CONVERSATION"
},
"dialogAction": {
"type": "Delegate"
},
"intent": {
"name": "AmazonQinConnect",
"state": "InProgress",
"slots": {},
"confirmationState": "None"
},
"originatingRequestId": "21ef2a92-3d28-316d-b29b-f42eda73d468"
},
"inputTranscript": "ユーザー名は、kkkkです。こんにちは",
}
なお、マスクとブロック設定どちらの場合でも、Amazon Q in Connectのログには元の値がそのまま記録されることが確認できました。
まとめ
Amazon Q in ConnectでのBedrock Guardrailsの日本語対応状況を確認しました。現時点では機密情報フィルターのみが日本語で利用可能です。
今後、他の機能も日本語対応されることを期待したいと思います。
参考