

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 組み込みのインテント
<a name="built-in-intents"></a>

一般的なアクションに対しては、標準の組み込みインテントライブラリを使用できます。組み込みインテントからインテントを作成するには、コンソールで組み込みインテントを選択し、新しい名前を付けます。新しいインテントは、サンプル発話など、元のインテントの設定を継承します。

現在の実装では、以下の操作は実行できません。
+ 元のインテントのサンプル発話を追加または削除する
+ 組み込みインテントのスロットを設定する

**ボットに組み込みインテントを追加するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/) で Amazon Lex コンソールを開きます。

1. 組み込みインテントを追加するボットを選択します。

1. 左側のメニューで、言語を選択してから、[**インテント**] を選択します。

1. [**インテントの追加**] を選択してから、[**組み込みインテントを使用する**] を選択します。

1. [**組み込みインテント**] で、使用するインテントを選択します。

1. インテントに名前を付けて、[**追加**] を選択します。

1. インテントエディタを使用して、ボットに必要なインテントを構成します。

**Topics**
+ [AMAZON.BedrockAgentIntent](built-in-intent-bedrockagent.md)
+ [AMAZON.CancelIntent](built-in-intent-cancel.md)
+ [AMAZON.FallbackIntent](built-in-intent-fallback.md)
+ [AMAZON.HelpIntent](built-in-intent-help.md)
+ [AMAZON.KendraSearchIntent](built-in-intent-kendra-search.md)
+ [AMAZON.PauseIntent](built-in-intent-pause.md)
+ [AMAZON.QnAIntent](built-in-intent-qna.md)
+ [AMAZON.QnAIntent (multiple use support)](built-in-intent-qna-multi.md)
+ [AMAZON.QinConnectIntent](built-in-intent-qinconnect.md)
+ [AMAZON.RepeatIntent](built-in-intent-repeat.md)
+ [AMAZON.ResumeIntent](built-in-intent-resume.md)
+ [AMAZON.StartOverIntent](built-in-intent-start-over.md)
+ [AMAZON.StopIntent](built-in-intent-stop.md)

# AMAZON.BedrockAgentIntent
<a name="built-in-intent-bedrockagent"></a>

**注記**  
生成 AI 機能を活用するには、最初に以下の前提条件を満たす必要があります。  
Amazon Bedrock の使用料金については、「[Amazon Bedrock の料金](https://aws.amazon.com/bedrock/pricing/)」を参照してください。
ボットロケールで生成 AI 機能を有効にします。これを行うには、「[生成 AI を使用した Lex V2 ボットの作成とパフォーマンスの最適化](generative-features.md)」の手順に従います。

顧客のリクエストに応答し、エージェントワークフローをアクティブ化して定義されたタスクを達成するインテントで定義された Amazon Bedrock エージェントをアクティブ化します。この機能は、Amazon Lex V2 がサポートするすべてのロケールと Amazon Lex V2 と Amazon Bedrock エージェントの両方が存在するすべての商用リージョンで使用できます。

このインテントが `FallbackIntent` を上書きしている場合、インテントは、発話がボットに存在する他のインテントのいずれにも分類されていない場合にアクティブ化されます。それ以外の場合は、発話がこのインテントに分類されたときにのみアクティブ化されます。スロット値を引き出す際に発話見逃しがあった場合、このインテントは有効にならないので注意してください。

Amazon Lex V2 ボットによって認識されると、`AMAZON.BedrockAgentIntent` は定義された `BedrockAgent` または `BedrockKnowledgeBase` をアクティブ化して顧客に応答します。Amazon Bedrock エージェントを使用している場合、会話は `BedrockAgentIntent` にとどまり、Amazon Bedrock エージェントが会話が `FINISH` とマークされていると判断するまで、ユーザーリクエストはエージェントに中継されます。その後、Amazon Lex V2 は会話の制御を担い、`AMAZON.BedrockAgentIntent` で定義されている次のステップに従います。

Amazon Bedrock エージェントおよびナレッジベースを使用して顧客の質問に回答し、詳細なレスポンスを提供します。

**警告**  
サンプル発話のない `AMAZON.BedrockAgentIntent`、サンプル発話のない `AMAZON.QnAIntent`、および `AMAZON.KendraSearchIntent` を同じボットロケールで使用することはできません。

このインテントを選択した場合は、以下のフィールドを設定し、[追加] を選択してインテントを追加します。
+ Amazon Bedrock エージェント ID - Amazon Bedrock エージェントの識別子。使用する Bedrock エージェントを選択します。
+ Amazon Bedrock エージェントエイリアス ID - Amazon Bedrock エージェントのエイリアス識別子。

**重要**  
Amazon Lex V2 で使用する Amazon Bedrock エージェントを作成するときは、**[追加設定]** の **[ユーザー入力]** が `ENABLED` であることを確認します。この設定は、エージェントが明確化またはフォローアップの質問をできるようにするために重要です。これにより、Amazon Lex V2 は対応するタスクを完了するためにエージェントに委任し直すことができます。

(オプション) 以下のオプションで BedrockAgentIntent を追加することもできます。
+ Amazon Bedrock モデル — このインテントに使用するプロバイダーと基盤モデルを選択します。現在、一部の Anthropic Claude モデルがサポートされています。
+ Amazon Bedrock ナレッジベース — このオプションを選択する場合は、Amazon Bedrock ナレッジベースの ID を指定します。ID は、コンソールの Amazon Bedrock ナレッジベースの詳細ページで確認できます。`GetKnowledgeBase` リクエストを送信して確認することもできます。

BedrockAgentIntent からのレスポンスは、次に示すようにセッションおよびリクエスト属性に保存されます。
+ `x-amz-lex:bedrock-agent-search-response` – Amazon Bedrock エージェントから質問または発話へのレスポンス。
+ `x-amz-lex:bedrock-knowledge-base-search-response-source` – Amazon Bedrock ナレッジベース設定を使用している場合に、レスポンスを生成するために使用されるドキュメントまたはドキュメントのリストを指します。
+ `x-amz-lex:bedrock-agent-action-group-invocation-input` - エージェントアクショングループによって収集された入力値を含むオブジェクト。エージェントアクショングループの詳細については、「ActionGroupInvocationInput」を参照してください。
+ `x-amz-lex:bedrock-agent-knowledge-base-lookup-input` - Amazon Bedrock ナレッジベースのルックアップに関連する詳細を含むオブジェクト。
+ `x-amz-lex:bedrock-agent-agent-collaborator-details` – マルチエージェントコラボレーション呼び出しの一部として呼び出されたサブエージェントからの入出力の詳細を含むオブジェクト。

詳細については、[BedrockAgentIntent を使用した Amazon Lex での Bedrock エージェントの使用](https://docs.aws.amazon.com/lexv2/latest/dg/bedrock-agent-intent.html)」を参照してください。

# AMAZON.CancelIntent
<a name="built-in-intent-cancel"></a>

ユーザーが現在の対話をキャンセルしたいことを示す単語やフレーズに応答します。アプリケーションはこのインテントを使用して、ユーザーとの対話を終了する前に、スロットタイプの値やその他の属性を削除できます。

一般的な発話:
+ キャンセル
+ 気にしないで
+ 忘れて

# AMAZON.FallbackIntent
<a name="built-in-intent-fallback"></a>

ユーザーのインテントへの入力がボットの想定と異なる場合、Amazon Lex V2 を設定して [*フォールバックインテント*] を呼び出すことができます。例えば、ユーザー入力「キャンディーを注文したいです」が `OrderFlowers` ボットのインテントと一致しない場合、Amazon Lex V2 はフォールバックインテントを呼び出してレスポンスを処理します。

コンソールを使用してボットを作成するか、[CreateBotLocale](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBotLocale.html) オペレーションを使用してボットにロケールを追加すると、組み込み `AMAZON.FallbackIntent` インテントタイプが自動的にボットに追加されます。

フォールバックインテントを呼び出すには、2 つのステップを使用します。最初のステップでは、フォールバックインテントはユーザーからの入力に基づいてマッチングされます。フォールバックインテントが一致した場合、ボットの動作は、プロンプトに設定された再試行回数によって異なります。

Amazon Lex V2 は、次のような状況でフォールバックインテントを一致させます。
+ インテントへのユーザーの入力が、ボットが想定する入力と一致しません
+ オーディオ入力がノイズであるか、テキスト入力が単語として認識されません。
+ ユーザーの入力があいまいで、Amazon Lex V2 が呼び出すインテントを判断できません。

フォールバックインテントは、次の場合に呼び出されます。
+ 設定された試行回数後に、インテントがユーザー入力をスロット値として認識しない場合。
+ 設定された試行回数後に、インテントが確認プロンプトへの応答としてユーザー入力を認識しない場合。

フォールバックインテントに以下を追加することはできません。
+ 発話
+ Slots
+ 確認プロンプト

## フォールバックインテントでの Lambda 関数の使用
<a name="invoke-fallback"></a>

フォールバックインテントが呼び出されると、レスポンスは [CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) オペレーションに対する `fulfillmentCodeHook` パラメータの設定によって異なります。ボットは、次のいずれかを実行します。
+ クライアントアプリケーションにインテント情報を返します。
+ エイリアスの検証とフルフィルメント Lambda 関数を呼び出します。セッションに設定されたセッション変数を使用して関数を呼び出します。

フォールバックインテントが呼び出されたときのレスポンスの設定の詳細については、[CreateIntent](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateIntent.html) オペレーションの `fulfillmentCodeHook` パラメータを参照してください。

フォールバックインテントで Lambda 関数を使用する場合、この関数を使用して、別のインテントを呼び出す、またはコールバック番号の収集やカスタマーサービス担当者とのセッションの開始など、ユーザーとの何らかの通信を行うことができます。

フォールバックインテントは、同じセッションで複数回呼び出すことができます。例えば、Lambda 関数で `ElicitIntent` ダイアログアクションを使用して、ユーザーに別のインテントの入力を求めるとします。設定された試行回数の後に Amazon Lex V2 がユーザーのインテントを推測できない場合、フォールバックインテントを再度呼び出します。また、試行回数設定後にユーザーが有効なスロット値で応答しない場合に、フォールバックインテントを呼び出します。

セッション変数を使用して、フォールバックインテントが呼び出された回数を追跡するように Lambda 関数を設定できます。Lambda 関数で設定したしきい値を超えて呼び出された場合、Lambda 関数は別のアクションを実行できます。セッション変数の詳細については、「[Lex V2 ボットのセッション属性の設定](context-mgmt-session-attribs.md)」を参照してください。

# AMAZON.HelpIntent
<a name="built-in-intent-help"></a>

ボットとのやりとり中にユーザーが助けを必要としていることを示す単語やフレーズに応答します。このインテントが呼び出されると、Lambda 関数またはアプリケーションを設定して、ボットの機能に関する情報を提供したり、ヘルプの領域に関するフォローアップ質問をしたり、インタラクションを人間のエージェントに渡すことができます。

一般的な発話:
+ help
+ 助けて
+ 助けてくれますか

# AMAZON.KendraSearchIntent
<a name="built-in-intent-kendra-search"></a>

Amazon Kendra でインデックス付けしたドキュメントを検索するには、`AMAZON.KendraSearchIntent` インテントを使用します。Amazon Lex V2 がユーザーとの会話の次のアクションを決定できない場合、検索インテントをトリガーします。

`AMAZON.KendraSearchIntent` は、英語 (米国) (en-US)ロケール、および米国東部 (バージニア北部)、米国西部 (オレゴン)、欧州 (アイルランド) のリージョンでのみ使用できます。

Amazon Kendra は、PDF ドキュメントや Microsoft Word ファイルなどの自然言語ドキュメントにインデックス付けする機械学習ベースの検索サービスです。インデックス付けされたドキュメントを検索し、質問に対して以下のタイプのレスポンスを返すことができます。
+ 回答 
+ 質問への回答になる可能性がある FAQ のエントリ
+ 質問に関連するドキュメント

`AMAZON.KendraSearchIntent` の使用例については、「[例: Amazon Kendra インデックスを使用する FAQ ボットを作成する](faq-bot-kendra-search.md)」を参照してください。

ボットに `AMAZON.KendraSearchIntent` インテントを設定した場合、Amazon Lex V2 は、スロットまたはインテントのユーザー発話を判別できないときは常に、そのインテントを呼び出します。Amazon Kendra からのレスポンスがない場合、会話はボットで設定されたとおりに進みます。

**注記**  
 Amazon Lex V2 は現在、スロット誘発中の `AMAZON.KendraSearchIntent` をサポートしていません。Amazon Lex V2 がスロットのユーザー発話を判別できない場合、`AMAZON.FallbackIntent` を呼び出します。

同じボットで `AMAZON.KendraSearchIntent` と `AMAZON.FallbackIntent` の両方を使用する場合、Amazon Lex V2 は以下のようにインテントを使用します。

1. Amazon Lex V2 が `AMAZON.KendraSearchIntent` を呼び出します。インテントは Amazon Kendra `Query` オペレーションを呼び出します。

1. Amazon Kendra がレスポンスを返す場合、Amazon Lex V2 はユーザーに結果を表示します。

1. Amazon Kendra からのレスポンスがない場合、Amazon Lex V2 はユーザーに再度プロンプトを表示します。以下のアクションは、ユーザーからのレスポンスによって異なります。
   + ユーザーからのレスポンスに、スロット値の入力やインテントの確認など、Amazon Lex V2 が認識する発話が含まれている場合、ユーザーとの会話はボットで設定されたとおりに進みます。
   + ユーザーからのレスポンスに Amazon Lex V2 が認識する発話が含まれていない場合、Amazon Lex V2 は `Query` オペレーションを再度呼び出します。

1. 設定された再試行回数の後にレスポンスがない場合、Amazon Lex V2 は `AMAZON.FallbackIntent` を呼び出し、ユーザーとの会話を終了します。

Amazon Kendra を使用して `AMAZON.KendraSearchIntent` へのリクエストを作成するには、3 つの方法があります。
+ 検索インテントにリクエストを作成させます。Amazon Lex V2 は、ユーザーの発話を検索文字列として Amazon Kendra を呼び出します。インテントを作成するときに、Amazon Kendra が返すレスポンスの数を制限するクエリフィルター文字列を定義できます。Amazon Lex V2 は、クエリリクエストでフィルターを使用します。
+ Lambda 関数を使用して検索結果を絞り込むために、リクエストにクエリパラメータを追加します。Amazon Kendra クエリパラメータを含む `kendraQueryFilterString` フィールドを `delegate` ダイアログアクションに追加します。Lambda 関数を使用してクエリパラメータをリクエストに追加すると、それらのパラメータは、インテントを作成したときに定義したクエリフィルタよりも優先されます。
+ Lambda 関数を使用して、新しいクエリを作成します。Amazon Lex V2 によって送信される完全な Amazon Kendra クエリリクエストを作成できます。`delegate` ダイアログアクションの `kendraQueryRequestPayload` フィールドでクエリを指定します。`kendraQueryRequestPayload` フィールドは `kendraQueryFilterString` フィールドよりも優先されます。

ボットを作成するときに `queryFilterString` パラメータを指定したり、ダイアログ Lambda 関数で `delegate` アクションを呼び出すときに `kendraQueryFilterString` フィールドを指定したりするには、Amazon Kendra クエリの属性フィルターとして使用する文字列を指定します。文字列が有効な属性フィルターでないと、実行時に `InvalidBotConfigException` 例外が発生します。属性フィルターの詳細については、[[Amazon Kendra デベロッパーガイド](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering)] の [*ドキュメント属性を使用してクエリをフィルタリングする*] を参照してください。

Amazon Lex V2 が Amazon Kendra に送信するクエリを制御するには、ダイアログ Lambda 関数の `kendraQueryRequestPayload` フィールドでクエリを指定できます。クエリが有効でない場合、Amazon Lex V2 は `InvalidLambdaResponseException` 例外を返します。詳細については、[*Amazon Kendra デベロッパーガイド*] の [[クエリ操作](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html)] を参照してください。

`AMAZON.KendraSearchIntent` の使用方法の例については、「[例: Amazon Kendra インデックスを使用する FAQ ボットを作成する](faq-bot-kendra-search.md)」を参照してください。

## Amazon Kendra 検索の IAM ポリシー
<a name="kendra-search-iam"></a>

`AMAZON.KendraSearchIntent` インテントを使用するには、Amazon Lex V2 が Amazon Kendra イン`Query`テントを呼び出すアクセス許可を持つランタイムロールを引き受けることができる AWS Identity and Access Management (IAM) ポリシーを提供するロールを使用する必要があります。 V2 使用する IAM 設定は、Amazon Lex V2 コンソール`AMAZON.KendraSearchIntent`を使用するか、AWS SDK または AWS Command Line Interface (AWS CLI) を使用するかによって異なります。コンソールを使用する場合、Amazon Lex V2 サービスにリンクされたロールに Amazon Kendra を呼び出すアクセス許可を追加するか、Amazon Kendra `Query` オペレーションを呼び出すための専用のロールを使用するかを選択できます。AWS CLI または SDK を使用してインテントを作成する場合は、 `Query`オペレーションの呼び出し専用のロールを使用する必要があります。

### アクセス許可のアタッチ
<a name="kendra-iam-attach"></a>

コンソールを使用して、Amazon Kendra `Query` オペレーションに対するアクセス許可をデフォルトの Amazon Lex V2 サービスにリンクされたロールにアタッチできます。サービスにリンクされたロールにアクセス許可をアタッチする場合は、Amazon Kendra インデックスに接続するための専用のランタイムロールを作成して管理する必要はありません。

Amazon Lex V2 コンソールへのアクセスに使用するユーザー、ロール、またはグループには、ロールポリシーを管理するアクセス許可が必要です。以下の IAM ポリシーをコンソールのアクセスロールにアタッチします。これらのアクセス許可を付与すると、既存のサービスにリンクされたロールポリシーを変更するアクセス許可がロールに付与されます。

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "iam:AttachRolePolicy",
            "iam:PutRolePolicy",
            "iam:GetRolePolicy"
        ],
        "Resource": "arn:aws:iam::*:role/aws-service-role/lexv2.amazonaws.com/AWSServiceRoleForLexBots*"
    },
    {
        "Effect": "Allow",
        "Action": "iam:ListRoles",
        "Resource": "*"
    }
]
}
```

------

### ロールの指定
<a name="kendra-iam-role"></a>

コンソール、AWS CLI、または API を使用して、Amazon Kendra `Query`オペレーションを呼び出すときに使用するランタイムロールを指定できます。

ランタイムロールの指定に使用するユーザー、ロール、またはグループには、`iam:PassRole` アクセス許可が必要です。以下のポリシーでは、このアクセス許可を定義しています。`iam:AssociatedResourceArn` および `iam:PassedToService` 条件コンテキストキーを使用して、アクセス許可の範囲をさらに制限できます。詳細については、*AWS Identity and Access Management * [ ユーザーガイド AWS STS の「IAM および条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/role"
        }
    ]
}
```

------

Amazon Lex V2 が Amazon Kendra の呼び出しに使用する必要があるランタイムロールには、`kendra:Query` アクセス許可が必要です。Amazon Kendra `Query` オペレーションを呼び出すアクセス許可に既存の IAM ロールを使用する場合、そのロールには以下のポリシーがアタッチされている必要があります。

IAM コンソール、IAM API、または AWS CLI を使用してポリシーを作成し、ロールにアタッチできます。以下の手順では、AWS CLI を使用してロールとポリシーを作成します。

**注記**  
次のコードは、Linux と MacOS 用にフォーマットされています。Windows の場合、Linux 行連結記号 (\$1) をキャレット (^) に置き換えます。

**Query オペレーションのアクセス許可をロールに追加するには**

1. 現在のディレクトリに **KendraQueryPolicy.json** という名前でドキュメントを作成し、以下のコードを追加して保存します。

1. AWS CLI で次のコマンドを実行して、Amazon Kendra `Query`オペレーションを実行するための IAM ポリシーを作成します。

   ```
   aws iam create-policy \
   --policy-name query-policy-name \
   --policy-document file://KendraQueryPolicy.json
   ```

1. `Query` オペレーションの呼び出しに使用している IAM ロールに、そのポリシーをアタッチします。

   ```
   aws iam attach-role-policy \
   --policy-arn arn:aws:iam::account-id:policy/query-policy-name
   --role-name role-name
   ```

Amazon Lex V2 サービスにリンクされたロールを更新するか、ボット用に `AMAZON.KendraSearchIntent` を作成したときに作成したロールを使用するかを選択できます。以下の手順は、使用する IAM ロール を選択する方法を示しています。

**AMAZON.KendraSearchIntent のランタイムロールを指定するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/) で Amazon Lex コンソールを開きます。

1. `AMAZON.KendraSearchIntent` を追加するボットを選択します。

1. [**インテント**] の横のプラス (\$1) を選択します。

1. [**インテントの追加**] で、[**既存のインテントの検索**] を選択します。

1. [**インテントの検索**] に「**AMAZON.KendraSearchIntent**」と入力し、[**追加**] を選択します。

1. [**組み込みインテントのコピー**] にインテントの名前 (「**KendraSearchIntent**」など) を入力し、[**追加**] を選択します。

1. [**Amazon Kendra クエリ**] セクションを開きます。

1. [**IAM ロール**] で、以下のいずれかのオプションを選択します。
   + ボットが Amazon Kendra インデックスをクエリできるように Amazon Lex V2 サービスにリンクされたロールを更新するには、[**Amazon Kendra アクセス許可の追加**] を選択します。
   + Amazon Kendra `Query` オペレーションを呼び出すアクセス許可を持つロールを使用するには、[**既存のロールを使用**] を選択します。

## フィルタとしてのリクエスト属性とセッション属性の使用
<a name="kendra-search-filter"></a>

Amazon Kendra から現在の会話に関連するアイテムへのレスポンスをフィルター処理するには、ボットの作成時に `queryFilterString` パラメータを追加して、セッション属性とリクエスト属性をフィルターとして使用します。インテントを作成するときに属性のプレースホルダーを指定します。それにより、Amazon Lex V2 が Amazon Kendra を呼び出す前にプレースホルダーを値に置き換えます。リクエスト属性の詳細については、「[Lex V2 ボットのリクエスト属性の設定](context-mgmt-request-attribs.md)」を参照してください。セッション属性の詳細については、「[Lex V2 ボットのセッション属性の設定](context-mgmt-session-attribs.md)」を参照してください。

以下に示しているのは、文字列を使用して Amazon Kendra クエリをフィルター処理する `queryFilterString` パラメータの例です。

```
"{"equalsTo": {"key": "City", "value": {"stringValue": "Seattle"}}}"
```

以下に示しているのは、`"SourceURI"` というセッション属性を使用して Amazon Kendra クエリをフィルター処理する `queryFilterString` パラメータの例です。

```
"{"equalsTo": {"key": "SourceURI","value": {"stringValue": "[FileURL]"}}}"
```

以下に示しているのは、`"DepartmentName"` というリクエスト属性を使用して Amazon Kendra クエリをフィルター処理する `queryFilterString` パラメータの例です。

```
"{"equalsTo": {"key": "Department","value": {"stringValue": "((DepartmentName))"}}}"
```

`AMAZON.KendraSearchInteng` フィルターは Amazon Kendra 検索フィルターと同じ形式を使用します。詳細については、[*Amazon Kendra デベロッパーガイド*] の [[ドキュメント属性を使用して検索結果をフィルターする](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering)] を参照してください。

`AMAZON.KendraSearchIntent` で使用されるクエリフィルタ文字列は、各フィルターの最初の文字には小文字を使用する必要があります。例えば、次は `AMAZON.KendraSearchIntent` の有効なクエリフィルターです。

```
{
"andAllFilters": [
    {
        "equalsTo": {
            "key": "City",
            "value": {
                "stringValue": "Seattle"
            }
        }
    },
    {
        "equalsTo": {
            "key": "State",
            "value": {
                "stringValue": "Washington"
            }
        }
    }
]
}
```

## 検索レスポンスの使用
<a name="kendra-search-response"></a>

Amazon Kendra は、インテントの `IntentClosingSetting` ステートメントから、検索に対するレスポンスを返します。Lambda 関数が終了応答メッセージを生成しない限り、インテントには `closingResponse` ステートメントが必要です。

Amazon Kendra には 5 タイプのレスポンスがあります。
+ 次の 2 つの応答では、Amazon Kendra インデックスに関するよくある質問を設定する必要があります。詳細については、「[質問と回答をインデックスに直接追加する](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html)」を参照してください。
  +  `x-amz-lex:kendra-search-response-question_answer-question-<N>` - 検索に一致する FAQ からの質問。
  +  `x-amz-lex:kendra-search-response-question_answer-answer-<N>` - 検索に一致する FAQ からの回答。
+ 次の 3 つの応答では、Amazon Kendra インデックスに対してデータソースを設定する必要があります。詳細については、「[データソースの作成](https://docs.aws.amazon.com/kendra/latest/dg/data-source.html)」を参照してください。
  + `x-amz-lex:kendra-search-response-document-<N>` - 発話のテキストに関連するインデックス内のドキュメントからの抜粋。
  + `x-amz-lex:kendra-search-response-document-link-<N>` - 発話のテキストに関連するインデックス内のドキュメントからの抜粋。
  + `x-amz-lex:kendra-search-response-answer-<N>` - 質問への回答があるインデックス内のドキュメントからの抜粋。

レスポンスは `request` 属性で返されます。各属性には、最大 5 つのレスポンスがあり 1～5 の番号が付けられます。レスポンスの詳細については、[*Amazon Kendra デベロッパーガイド*] の [[レスポンスのタイプ](https://docs.aws.amazon.com/kendra/latest/dg/response-types.html)] を参照してください。

`closingResponse` ステートメントには、1 つ以上のメッセージグループが必要です。各メッセージグループには、1 つ以上のメッセージが含まれます。各メッセージには、Amazon Kendra からのレスポンスでリクエスト属性によって置き換えられる 1 つ以上のプレースホルダー変数を含めることができます。メッセージ内のすべての変数がランタイムレスポンスのリクエスト属性値で置き換えられるメッセージグループには、1 つ以上のメッセージが必要です。プレースホルダー変数のないメッセージグループには、1 つのメッセージが必要です。リクエスト属性は二重かっこ (( )) で囲みます。以下のメッセージグループのメッセージは Amazon Kendra からのレスポンスに一致します。
+ 「FAQ の質問 ((x-amz-lex:kendra-search-response-question\$1answer-question-1)) を見つけました。回答は ((x-amz-lex:kendra-search-response-question\$1answer -answer-1)) です」
+ 「参考になるドキュメント ((x-amz-lex:kendra-search-response-document-1)) からの抜粋を見つけました」
+ 「質問への回答はおそらく ((x-amz-lex:kendra-search-response-answer-1)) です」

## Lambda 関数を使用したリクエストとレスポンスの管理
<a name="kendra-search-lambda"></a>

`AMAZON.KendraSearchIntent` インテントでは、ダイアログコードフックとフルフィルメントコードフックを使用して、Amazon Kendra へのリクエストとレスポンスを管理できます。Amazon Kendra に送信するクエリを変更する場合はダイアログコードフック Lambda 関数を使用し、レスポンスを変更する場合はフルフィルメントコードフック Lambda 関数を使用します。

### ダイアログコードフックを使用したクエリの作成
<a name="kendra-search-lambda-dialog"></a>

ダイアログコードフックを使用して、Amazon Kendra に送信するクエリを作成できます。ダイアログコードフックを使用するかどうかはオプションです。ダイアログコードフックを指定しない場合、Amazon Lex V2 によってユーザー発話からクエリが作成され、`queryFilterString` が使用されます (インテントの設定時に指定した場合)。

ダイアログコードフックレスポンスで 2 つのフィールドを使用して、Amazon Kendra へのリクエストを変更できます。
+ `kendraQueryFilterString` - この文字列を使用して、Amazon Kendra リクエストの属性フィルタを指定します。インデックスで定義されたインデックスフィールドのいずれかを使用して、クエリをフィルタ処理できます。フィルター文字列の構造については、*「Amazon Kendra Developer Guide」*(Amazon Kendra デベロッパーガイド) の[「Using document attributes to filter queries」](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering)(ドキュメント属性を使用してクエリをフィルタリングする) を参照してください。指定したフィルタ文字列が有効でないと、`InvalidLambdaResponseException` 例外が発生します。`kendraQueryFilterString` 文字列は、インテント用に設定された `queryFilterString` で指定されたクエリ文字列を上書きします。
+ `kendraQueryRequestPayload` - この文字列を使用して、Amazon Kendra クエリを指定します。クエリでは、Amazon Kendra の任意の機能を使用できます。有効なクエリを指定しないと、`InvalidLambdaResponseException` 例外が発生します。これらの制限の詳細については、「*Amazon Kendra デベロッパーガイド*」の「[クエリ](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html)」を参照してください。

フィルターまたはクエリ文字列を作成したら、レスポンスの `dialogAction` フィールドを `delegate` に設定してAmazon Lex V2 にレスポンスを送信します。Amazon Lex V2 は、クエリを Amazon Kendra に送信し、クエリレスポンスをフルフィルメントコードフックに返します。

### レスポンスでのフルフィルメントコードフックの使用
<a name="kendra-search-lambda-fulfillment"></a>

Amazon Lex V2 がクエリを Amazon Kendra に送信した後、クエリレスポンスが `AMAZON.KendraSearchIntent` フルフィルメント Lambda 関数に返されます。コードフックへの入力イベントには、Amazon Kendra からの完全なレスポンスが含まれます。クエリデータは、Amazon Kendra `Query` オペレーションによって返されるものと同じ構造になります。詳細については、[*Amazon Kendra デベロッパーガイド*] の [[クエリレスポンス構文](https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax)] を参照してください。

フルフィルメントコードフックはオプションです。フルフィルメントコードフックがない場合、またはレスポンスでメッセージを返さない場合、Amazon Lex V2 はレスポンスに `closingResponse` ステートメントを使用します。

# 例: Amazon Kendra インデックスを使用する FAQ ボットを作成する
<a name="faq-bot-kendra-search"></a>

この例では、Amazon Kendra インデックスを使用してユーザーの質問への回答を返す Amazon Lex V2 ボットを作成します。FAQ ボットはユーザーのダイアログを管理します。`AMAZON.KendraSearchIntent` インテントを使用して、インデックスをクエリし、ユーザーにレスポンスを返します。Amazon Kendra インデックスを使用して FAQ ボットを作成する方法の概要は次のとおりです。

1. 顧客と対話して回答を返すボットを作成します。

1. カスタムインテントを作成します。`AMAZON.KendraSearchIntent` および `AMAZON.FallbackIntent` とはバックアップインテントなので、ボットには少なくとも 1 つの発話を含むインテントがもう 1 つ必要です。このインテントはボットのビルドに使用されるだけで、それ以外には使用されません。そのため、以下の画像のように、FAQ ボットには少なくとも 3 つのインテントが含まれます。  
![\[3 つのインテントを持つ Kendra FAQ ボット\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/kendra-faqbot/kendra-intents.png)

1. ボットに `AMAZON.KendraSearchIntent` インテントを追加し、[Amazon Kendra インデックス](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html)で使用されるように設定します。

1. クエリを実行し、Amazon Kendra インデックスの結果がクエリに答えるドキュメントであることを確認して、ボットをテストします。

**前提条件**

この例を使用する前に、Amazon Kendra インデックスを作成する必要があります。詳細については、「**Amazon Kendra デベロッパーガイド」の「[Amazon Kendra コンソールの使用を開始する](https://docs.aws.amazon.com/kendra/latest/dg/gs-console.html)」を参照してください。この例では、データソースとしてサンプルデータセット (**サンプル AWS ドキュメント**) を選択します。

**FAQ ボットを作成するには:**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/) で Amazon Lex コンソールを開きます。

1. ナビゲーションペインで、[**ボット**] を選択します。

1. [**ボットの作成**] を選択します。

   1.  **作成方法**について、「**空白のボットを作成**」を選択します。

   1.  **[ボット設定]** セクションで、ボットに **KendraTestBot** など、目的を示す名前とオプションの説明を与えます。新しい名前は アカウント内で一意である必要があります。

   1.  **[IAM アクセス許可]** セクションで、**[基本的な Amazon Lex アクセス許可でロールを作成する]** を選択します。これにより、Amazon Lex V2 がボットを実行するために必要なアクセス許可を持つ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ロールが作成されます。

   1.  **[Children's Online Privacy Protection Act (COPPA)]** セクションで、**[いいえ]** を選択します。

   1.  **[アイドルセッションタイムアウト]** および **[詳細設定]** セクションで、デフォルト設定のままにして、**[次へ]** を選択します。

   1.  これで **[ボットに言語を追加]** セクションに移動しました。**[音声インタラクション]** の下のメニューで、**[なし] を選択します。これは単なるテキストベースのアプリケーションです**。残りのフィールドをデフォルト値のままにします。

   1.  **[Done]** (完了) をクリックします。Amazon Lex V2 はボットと **NewIntent** というデフォルトインテントを作成し、このインテントを設定するページに移動します。

ボットを正常にビルドするには、`AMAZON.FallbackIntent` および `AMAZON.KendraSearchIntent` とは別のインテントを少なくとも 1 つ以上の作成します。このインテントは Amazon Lex V2 ボットのビルドに必要ですが、FAQ のレスポンスには使用されません。このインテントには少なくとも 1 つのサンプル発話が含まれている必要があり、その発話は顧客が尋ねるどの質問にも当てはまらないようにする必要があります。

**必要なインテントを作成するには:**

1.  **[インテント詳細]** セクションで、インテントに名前 (**RequiredIntent** など) を付けます。

1.  **[サンプル発話]** セクションで、**[発話を追加]** の横にあるボックスに、**Required utterance** などの発話を入力します。次に **[発話を追加]** を選択します。

1. [**インテントの保存**] を選択します。

Amazon Kendra インデックスを検索するインテント、および返すレスポンスメッセージを作成します。

**AMAZON.KendraSearchIntent インテントとレスポンスメッセージを作成するには**

1.  ナビゲーションペインの **[インテントリストに戻る]** を選択すると、ボットの **[インテント]** ページに戻ります。**[インテントを追加]** を選択し、ドロップダウンメニューから **[組み込みインテントを使用する]** を選択します。

1.  表示されるボックスで、**[組み込みインテント]** の下にあるメニューを選択します。検索バーに「**AMAZON.KendraSearchIntent**」と入力し、リストからそれを選択します。

1.  インテントに **KendraSearchIntent** のような名前を付けます。

1.  **[Amazon Kendra インデックス]** ドロップダウンメニューから、検索するインデックスを選択します。**[前提条件]** セクションで作成した索引が使用可能になっているはずです。

1.  **[追加]** を選択します。

1. インテントエディターで **[フルフィルメント]** セクションまでスクロールし、右矢印を選択してセクションを展開し、**[フルフィルメントが成功した場合]** の下のボックスに次のメッセージを追加します。

   ```
   I found a link to a document that could help you: ((x-amz-lex:kendra-search-response-document-link-1)).
   ```  
![\[フルフィルメントレスポンスの追加\]](http://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/images/kendra-faqbot/kendra-fulfillment-response.gif)

    Amazon Kendra 検索レスポンスの詳細については、[[検索レスポンスの使用]](https://docs.aws.amazon.com/lexv2/latest/dg/built-in-intent-kendra-search.html#kendra-search-response) を参照してください。

1. [**インテントの保存**] を選択してから、[**ビルド**] を選択してボットをビルドします。ボットの準備が整うと、画面上部のバナーが緑色に変わり、成功メッセージが表示されます。

最後に、コンソールテストウィンドウを使用して、ボットからのレスポンスをテストします。

**FAQ ボットをテストするには:**

1.  ボットが正常に構築されたら、**[テスト]** を選択します。

1.  コンソールのテストウィンドウに「**What is Amazon Kendra?**」と入力します。ボットがリンクを返すことを確認します。

1.  `AMAZON.KendraSearchIntent` の設定の詳細については、「[https://docs.aws.amazon.com/lexv2/latest/dg/built-in-intent-kendra-search.html](https://docs.aws.amazon.com/lexv2/latest/dg/built-in-intent-kendra-search.html)」と「[KendraConfiguration](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_KendraConfiguration.html)」を参照してください。

# AMAZON.PauseIntent
<a name="built-in-intent-pause"></a>

ユーザーがボットとの対話を一時停止して、後で再開できるようにするための単語やフレーズに応答します。Lambda 関数やアプリケーションでは、セッション変数にインテントデータを保存したり、現在のインテントを再開する際に [GetSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_GetSession.html) オペレーションでインテントデータを取得したりする必要があります。

一般的な発話:
+ 一時停止
+ 一時停止します

# AMAZON.QnAIntent
<a name="built-in-intent-qna"></a>

**注記**  
生成 AI 機能を活用するには、最初に以下の前提条件を満たす必要があります。  
Amazon Bedrock の使用料金については、「[Amazon Bedrock の料金](https://aws.amazon.com/bedrock/pricing/)」を参照してください。
ボットロケールで生成 AI 機能を有効にします。これを行うには、「[生成 AI を使用した Lex V2 ボットの作成とパフォーマンスの最適化](generative-features.md)」の手順に従います。

Amazon Bedrock FM を使用してよくある質問の回答を検索して要約することにより、お客様の質問に回答します。このインテントが有効になるのは、発話がボット内に存在する他のインテントのいずれにも分類されない場合です。スロット値を引き出す際に発話見逃しがあった場合、このインテントは有効にならないので注意してください。認識された場合、`AMAZON.QnAIntent` は指定された Amazon Bedrock モデルを使用して設定済みの Amazon Bedrock ナレッジベースを検索し、顧客の質問に回答します。

**警告**  
`AMAZON.QnAIntent` と `AMAZON.KendraSearchIntent` を同じボットロケールで使用することはできません。

以下のナレッジストアオプションが利用できます。ナレッジストアが作成済みで、その中のドキュメントがインデックス化されている必要があります。
+ OpenSearch サービスドメイン — インデックス化されたドキュメントが含まれています。ドメインを作成するには、「[Amazon OpenSearch Service ドメインの作成と管理](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html)」の手順に従ってください。
+ Amazon Kendra インデックス — インデックス化されたよくある質問ドキュメントが含まれています。Amazon Kendra インデックスを作成するには、「[インデックスの作成](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html)」の手順に従ってください。
+ Amazon Bedrock ナレッジベース — インデックス付けされたデータソースが含まれています。Amazon Bedrock ナレッジベースを設定するには、「[ナレッジベースの構築](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html)」の手順に従ってください。

このインテントを選択した場合は、以下のフィールドを設定し、**[追加]** を選択してインテントを追加します。
+ **Bedrock モデル** — このインテントで使用するプロバイダーと基盤モデルを選択します。利用可能な最新のモデルと廃止スケジュールを確認し、それに応じて移行を計画してください。詳細については、「[モデルのライフサイクル](https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle.html#versions-for-eol)」を参照してください。
+ **ナレッジストア** — お客様の質問に回答するためにモデルで情報を取得するソースを選択します。以下のステータスがあります。
  + **OpenSearch** — 以下のフィールドを設定します。
    + **ドメインエンドポイント** — ドメイン用に作成したドメインエンドポイント、またはドメイン作成後に提供されたドメインエンドポイントを指定します。
    + **インデックス名** – 検索するインデックスを指定します。詳細については、「[Amazon OpenSearch Service でのデータのインデックス作成](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/indexing.html)」を参照してください。
    + お客様に応答を返す方法を選択します。
      + **正確な応答** — このオプションを有効にすると、[回答] フィールドの値がそのままボットの応答に使用されます。設定済みの Amazon Bedrock 基盤モデルを使用して、内容の合成や要約を行わずに、正確な回答内容をそのまま選択します。OpenSearch データベースで設定した質問フィールドと回答フィールドの名前を指定します。
      + **フィールドを含める** — 指定したフィールドを使用してモデルが生成した回答を返します。OpenSearch データベースで設定したフィールドの名前を最大 5 つまで指定します。セミコロン (;) を使用してフィールド間を区切ります。
  + **Amazon Kendra** — 以下のフィールドを設定します。
    + **Amazon Kendra インデックス** – ボットを使用して検索する Amazon Kendra インデックスを選択します。
    + **Amazon Kendra フィルター** — フィルターを作成するには、このチェックボックスをオンにします。Amazon Kendra 検索フィルター JSON 形式の詳細については、「[ドキュメント属性を使用した検索結果のフィルタリング](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html#search-filtering)」を参照してください。
    + **正確な応答** — Amazon Kendra から返された正確な応答をボットが返すようにするには、このチェックボックスをオンにします。それ以外の場合は、選択した Amazon Bedrock モデルが、結果に基づいて応答を生成します。
**注記**  
この機能を使用するには、まず「[よくある質問 (FAQ) のインデックスへの追加](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html)」の手順に従って、FAQ の質問をインデックスに追加する必要があります。
  + **Amazon Bedrock ナレッジベース** — このオプションを選択する場合は、Amazon Bedrock ナレッジベースの ID を指定します。ID は、コンソールの Amazon Bedrock ナレッジベースの詳細ページで確認できます。[GetKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetKnowledgeBase.html) リクエストを送信して確認することもできます。
    + **正確な応答** — このオプションを有効にすると、[回答] フィールドの値がそのままボットの応答に使用されます。設定済みの Amazon Bedrock 基盤モデルを使用して、内容の合成や要約を行わずに、正確な回答内容をそのまま選択します。Amazon Bedrock ナレッジベースの正確な応答を使用するには、次の手順を実行する必要があります。
      + 各ファイルにエンドユーザーに返す必要がある正確な応答を含む回答フィールドを含めた、個別の JSON ファイルを作成します。
      + Bedrock ナレッジベースでこれらのドキュメントのインデックスを作成するときは、**[チャンキング戦略]** に **[チャンキングなし]** を選択します。
      + Amazon Lex V2 の回答フィールドを Bedrock ナレッジベースの回答フィールドとして定義します。

QnAIntent からの応答は、次に示すようにリクエスト属性に保存されます。
+ `x-amz-lex:qnA-search-response` — 質問または発話に対する QnAIntent からの応答。
+ `x-amz-lex:qnA-search-response-source` — 応答の生成に使用されたドキュメントまたはドキュメントのリストを指します。
+ `x-amz-lex:qna-additional-context` – レスポンスを生成するために QnAIntent で使用される追加のコンテキスト。

**追加のモデル設定**

AMAZON.QnAIntent が呼び出されると、デフォルトのプロンプトテンプレートを使用し、指示とコンテキストをユーザーのクエリと組み合わせて、応答生成のためにモデルに送信されるプロンプトを作成します。カスタムプロンプトを指定したり、要件に合わせてデフォルトのプロンプトを更新したりすることもできます。

プロンプトテンプレートは、次のツールを使用して作成できます。

**プロンプトプレースホルダー** – AMAZON.QnAIntent for Amazon Bedrock で事前に定義された変数。これは、Bedrock 呼び出し中のランタイムに動的に入力されます。システムプロンプトでは、これらのプレースホルダーが `$` 記号で囲まれていることを確認できます。次のリストは、使用できるプレースホルダーを示しています。


| 変数 | 置換後の値 | モデル | 必須? | 
| --- | --- | --- | --- | 
| \$1query\$1results\$1 | ナレッジストアから取得したユーザークエリの結果 | 選択した Bedrock モデル | はい | 
| \$1output\$1instruction\$1 | 応答の生成と引用をフォーマット化するための基本手順。モデルによって異なります。独自のフォーマット指示を定義する場合は、このプレースホルダーを削除することをお勧めします。 | 選択した Bedrock モデル | いいえ | 
| \$1additional\$1context\$1 | QnAIntent がレスポンスを生成するために使用する追加のコンテキスト | 選択した Bedrock モデル | いいえ | 
| \$1locale\$1 | ボットが顧客のクエリに応答する言語 | 選択した Bedrock モデル | いいえ | 

使用されている**デフォルトのプロンプト**は次のとおりです。

```
$query_results$

$additional_context$

Please only follow the instructions in <instruction> tags below.
<instruction>
Given the conversation history, <additional_context> and <Context>:
(1) first, identify the user query intent and classify it as one of the categories: FAQ_QUERY, OTHER_QUERY, GIBBERISH, GREETINGS, AFFIRMATION, CHITCHAT, or MISC;
(2) second, if the intent is FAQ_QUERY, predict the most relevant grounding passage(s) by providing the passage id(s) or output CANNOTANSWER;
(3) then, generate a concise, to-the-point FAQ-style response in $locale$ locale ONLY USING the grounding content in <Context> and <additional_context>; or output CANNOTANSWER if the user query/request cannot be directly answered with the grounding content. DO NOT mention about the grounding passages such as ids or other meta data; do not create new content not presented in <Context>. Do NOT respond to query that is ill-intented or off-topic;
(4) lastly, provide the confidence level of the above prediction as LOW, MID or HIGH.
</instruction>

$output_instruction$
```

**\$1output\$1instruction\$1** は次のように置き換えられます。

```
Give your final response in the following form:
<answer>
<intent>FAQ_QUERY or OTHER_QUERY or GIBBERISH or GREETINGS or AFFIRMATION or CHITCHAT or MISC</intent>
<text>a concise FAQ-style response or CANNOTANSWER</text>
<passage_id>passage_id or CANNOTANSWER</passage_id>
<confidence>LOW or MID or HIGH</confidence>
</answer>
```

**注記**  
デフォルトの手順を使用しない場合、LLM が提供する出力はそのままエンドユーザーに返されます。  
出力指示には <text></text> タグと <passageId></passageId> タグを含める必要があり、LLM が応答とソースの帰属を提供するために passageId を返す指示を含める必要があります。

**セッション属性による追加のコンテキストサポート**

セッション属性 を使用して、実行`AMAZON.QnAIntent`時に追加のコンテキストを に渡すことができます`x-amz-lex:qna-additional-context`。これにより、レスポンスの生成時にモデルがナレッジストアの結果とともに使用できる補足情報を提供できます。追加のコンテキストは、`$additional_context$`プレースホルダーを介してプロンプトテンプレートに挿入されます。

**例**:

```
{"sessionAttributes": {"x-amz-lex:qna-additional-context":"Our support hours are Monday through Friday, 8AM-8PM EST"}}
```

**セッション属性による Amazon Bedrock ナレッジベースのメタデータフィルタリングのサポート**

Amazon Bedrock ナレッジベースのメタデータフィルターは、セッション属性 `x-amz-lex:bkb-retrieval-filter` の一部として渡すことができます。

```
             {"sessionAttributes":{"x-amz-lex:bkb-retrieval-filter":"{\"equals\":{\"key\":\"insurancetype\",\"value\":\"farmers\"}}      
```

**注記**  
このフィルターを使用するには、QnAIntent のデータストアとして Amazon Bedrock ナレッジベースを使用する必要があります。詳細については、[https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html#:~:text=Metadata%20and%20filtering](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html#:~:text=Metadata%20and%20filtering)を参照してください。

**推論の設定**

セッション属性を使用して LLM を呼び出すときに使用する推論の設定を定義できます。
+ 温度: 整数型
+ topP
+ maxTokens

**例**:

```
         {"sessionAttributes":{"x-amz-lex:llm-text-inference-config":"{\"temperature\":0,\"topP\":1,\"maxTokens\":200}"}}      
```

**Bedrock のガードレール機能は、ビルドタイム属性とセッション属性によってサポートします。**
+ ビルド時にコンソールを使用 – GuardrailsIdentifier と GuardrailsVersion を指定します。詳細については、「追加のモデル設定」セクションを参照してください。
+ セッション属性を使用 – セッション属性 `x-amz-lex:bedrock-guardrails-identifier` および `x-amz-lex:bedrock-guardrails-version` を使用してガードレール機能設定を定義することもできます。

Bedrock のガードレール機能使用の詳細については、「[ガードレール](https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html)」を参照してください。

# AMAZON.QnAIntent (multiple use support)
<a name="built-in-intent-qna-multi"></a>

ロケール内に複数の AMAZON.QnAIntents を含めることを選択できます。Amazon Lex V2 は、ボットロケール内に最大 5 つの AMAZON.QnAIntents をサポートします。

AMAZON.QnAIntent は、次のいずれかのケースが true の場合にトリガーできます。
+ ボットロケールに含まれる AMAZON.QnAIntent が 1 つだけで、そのインテントにサンプル発話が含まれていない場合、発話がボットに存在する他のインテントのいずれにも分類されていない場合にアクティブ化されます。このインテントが有効になるのは、発話がボット内に存在する他のインテントのいずれにも分類されない場合です。スロット値を引き出す際に発話見逃しがあった場合、このインテントは有効にならないので注意してください。
**注記**  
FM からの応答が不十分だったり、FM への呼び出しが失敗したりすると、Amazon Lex V2 は `AMAZON.FallbackIntent` を呼び出します。
+ AMAZON.QnAIntent にサンプル発話が含まれている場合、ユーザー入力に基づいて、ユーザーがそのインテントを開始したいと考えていると Amazon Lex V2 が認識したときにのみアクティブ化されます。
**注記**  
FM からの応答が不十分だったり、FM への呼び出しが失敗したりすると、Amazon Lex V2 はフルフィルメントブロックで定義された失敗時の次のステップを呼び出します。

**注記**  
`botLocale` に複数の AMAZON.QnAIntent がある場合、各 AMAZON.QnAIntent には少なくとも 1 つのサンプル発話が必要です。

# AMAZON.QinConnectIntent
<a name="built-in-intent-qinconnect"></a>

**注記**  
Amazon Q In Connect を使用して生成 AI 機能を使用するには、次の前提条件を満たす必要があります。  
Amazon Connect コンソールに移動してインスタンスを作成します。まだインスタンスがない場合は、「[Amazon Connect の使用を開始する](https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-get-started.html)」を参照してください。
インスタンスの Amazon Q in Connect を有効にします。「[インスタンスで Amazon Q in Connect を有効にする](https://docs.aws.amazon.com/connect/latest/adminguide/enable-q.html)」を参照してください。

AMAZON.QinConnectIntent は、LLM が強化した Amazon Connect Wisdom の進化形を使用して顧客の質問に応答します。この進化形は、コンタクトセンターの顧客とエージェントが顧客の問題を迅速かつ正確に解決できるようにリアルタイムの推奨事項を提供します。このインテントが有効になるのは、発話がボット内に存在する他のインテントのいずれにも分類されない場合です。スロット値を引き出す際に発話見逃しがあった場合、このインテントは有効にならないので注意してください。認識された場合、AMAZON.QinConnectIntent は指定された Q in Connect ドメインを使用して、設定済みの Amazon Bedrock ナレッジベースを検索し、顧客の質問に回答します。

**注記**  
同じボットロケールで、AMAZON.QinConnectIntent を AMAZON.QnAIntent と共に使用することはできません。
米国英語以外の言語を選択した場合は、指定された言語で応答するようにセルフサービスプロンプト (`SELF_SERVICE_PRE_PROCESSING` および `SELF_SERVICE_ANSWER_GENERATION`) をカスタマイズする必要があります。プロンプトをカスタマイズする方法の詳細については、「[Amazon Q in Connect をカスタマイズする](https://docs.aws.amazon.com/connect/latest/adminguide/customize-q.html#ai-prompts-customize-q)」を参照してください。

このインテントを選択した場合は、以下のフィールドを設定し、**[インテントを保存]** を選択してインテントをボットに追加します。
+ Amazon Q In Connect の設定 - Amazon Q in Connect アシスタントの Amazon リソースネーム (ARN) を指定します。アシスタントの ARN パターン: `^arn:[a-z-]*?:wisdom:[a-z0-9-]*?:[0-9]{12}:[a-z-]*?/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}(?:/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}){0,2}$>`。

QinConnectIntent からのレスポンスは、以下に示すようにリクエスト属性に保存されます。
+ `x-amz-lex:q-in-connect-response` – 質問または発話に対する QinConnectIntent からのレスポンス。

**QinConnectIntent から返されるセッション属性**

QinConnect インテントとのやり取りは、セッション属性を介した会話に関する追加データを提供します。

1. `x-amz-lex:q-in-connect:session-arn` – 会話中に Amazon Q In Connect で作成されたセッションの一意の識別子。

1. `x-amz-lex:q-in-connect:conversation-status` – QinConnect アシスタントまたはドメインとの会話の現在のステータス。このステータスに可能な値は以下の 3 つです。
   + `CLOSED`
   + `READY`
   + `PROCESSING`

1. `x-amz-lex:q-in-connect:conversation-status-reason` – 上記の属性で報告された現在のステータスの理由を提供します。考えられる理由は次のとおりです。
   + `SUCCESS` – 顧客がもう質問することがなく、質問への回答が成功したことを示します。
   + `FAILED` – 顧客の質問に回答する際の失敗を示します。これらは主に、顧客の質問を理解できないことが原因です。
   + `REJECTED` – アシスタントが顧客の質問に答えることを拒否し、ユーザーやエージェントと話すなど、ボットとのやり取りの外で質問を処理して詳細情報を取得することを推奨していることを示します。

**注記**  
Amazon Connect インスタンスによって生じた顧客とのやり取り中に QinConnectIntent を持つボットが呼び出された場合、セッション ARN を作成して Amazon Connect インスタンスから渡す必要があります。セッションを作成するには、Amazon Connect フローを Amazon Q in Connect ステップで設定できます。

**制限事項**
+ 同じボットロケールで、AMAZON.QinConnectIntent を特定の発話のないインテント (AMAZON.QnAIntent、AMAZON.BedrockAgentIntent など) と共に使用することはできません。
+ Amazon Connect インスタンスによって生じた顧客とのやり取り中に QinConnectIntent を持つボットが呼び出された場合、セッション ARN を作成して Amazon Connect インスタンスから渡す必要があります。セッションを作成するには、Amazon Connect フローを Amazon Q In Connect ステップで設定できます。
+ ボットロケールごとに 2 つ以上の AMAZON.QinConnectIntent を含めることはできません。
+ AMAZON.QinConnectIntent で使用する Amazon Q in Connect ドメインは、Amazon Lex V2 ボットと同じ AWS リージョンに存在する必要があります。

**アクセス許可**

QinConnect Intent が Amazon Lex V2 ボットで使用され、ボットがサービスリンクロール (SLR) を使用している場合、Amazon Lex V2 サービスには、ロールの適切なポリシーを更新して Q in Connect アシスタントと統合するためのアクセス許可があります。ボットがカスタム IAM ロールを使用している場合、ユーザーはこれらのアクセス許可を IAM ロールに手動で追加する必要があります。

QinConnect インテントが追加された場合、サービスリンクロールは次のアクセス許可で更新されます。QinConnect アクセス用に新しいポリシーが追加されます。

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "QInConnectAssistantPolicy",
            "Action": [
                "wisdom:CreateSession",
                "wisdom:GetAssistant"
            ],
            "Resource": [
                "arn:aws:wisdom:*:accountId:assistant/assistantId",
                "arn:aws:wisdom:*:accountId:assistant/assistantId/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "QInConnectSessionsPolicy",
            "Action": [
                "wisdom:SendMessage",
                "wisdom:GetNextMessage"
            ],
            "Resource": [
                "arn:aws:wisdom:*:accountId:session/assistantId/*"
            ]
        },
        {
            "Sid": "QInConnectKmsCMKPolicy",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:region:accountId:key/keyId"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "accountId",
                    "kms:ViaService": "wisdom.region.amazonaws.com",
                    "kms:EncryptionContext:aws:wisdom:assistant:arn": ["arn:aws:wisdom:region:accountId:assistant/assistantId"]
                }
            }
        }
    ]
}
```

**注記**  
`QInConnectKmsCMKPolicy` ステートメントは、Amazon Q in Connect アシスタントでカスタマーマネージド KMS キーを使用している場合にのみ必要です。

**信頼ポリシー**

```
{
    "Effect": "Allow",
    "Sid": "LexV2InternalTrustPolicy",
    "Principal": {
        "Service": "lexv2.aws.internal"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "accountId"
        },
        "ArnLike": {
            "aws:SourceArn": "arn:aws:lex:*:accountId:bot-alias/botId/*"
        }
    }
}
```

# AMAZON.RepeatIntent
<a name="built-in-intent-repeat"></a>

ユーザーが前のメッセージを繰り返すことができる単語やフレーズに応答します。お客様のアプリケーションでは、Lambda 関数を使用して前回のインテント情報をセッション変数に保存するか、[GetSession](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_GetSession.html) オペレーションを使用して前回のインテント情報を取得する必要があります。

一般的な発話:
+ 繰り返し
+ もう一回言う
+ 繰り返す

# AMAZON.ResumeIntent
<a name="built-in-intent-resume"></a>

単語や語句に応答して、ユーザーが以前一時停止したインテントを再開できるようにします。Lambda 関数またはアプリケーションは、前のインテントを再開するために必要な情報を管理する必要があります。

一般的な発話:
+ 再開する
+ 継続する
+ 続ける

# AMAZON.StartOverIntent
<a name="built-in-intent-start-over"></a>

ユーザーが現在のインテントの処理を停止し、最初からやり直しを有効にする単語やフレーズに応答します。Lambda 関数または `PutSession` オペレーションを使用して、最初のスロット値を再び取得できます。

一般的な発話:
+ 最初からやり直す
+ 再起動
+ 再開

# AMAZON.StopIntent
<a name="built-in-intent-stop"></a>

ユーザーが現在のインテントの処理を停止し、ボットとの対話を終了したいことを示す単語やフレーズに応答します。Lambda 関数またはアプリケーションは、既存の属性とスロットタイプの値をクリアしてから、対話を終了する必要があります。

一般的な発話:
+ 停止
+ オフ
+ 黙って