翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Converse API にガードレールを含める
ガードレールを使用して、Converse API で作成した会話型アプリを保護できます。例えば、Converse API でチャットアプリを作成する場合、ガードレールを使用して、ユーザーが入力した不適切なコンテンツと、モデルが生成した不適切なコンテンツをブロックできます。Converse API, の詳細については、「Converse API オペレーションを使用して会話を実行する」を参照してください。
ガードレールを使用して Converse API を呼び出す
ガードレールを使用するには、Converse または ConverseStream (ストリーミングレスポンスの場合) オペレーションの呼び出しにガードレールの設定情報を含めます。必要に応じて、メッセージ内の特定のコンテンツをガードレールによる評価対象として選択できます。ガードレールと Converse API で使用できるモデルの詳細については、「サポートされているモデルとモデルの機能」を参照してください。
トピック
Converse API を使用するようにガードレールを設定する
guardrailConfig 入力パラメータでガードレール設定情報を指定します。設定情報には、使用するガードレールの ID やバージョンなどが該当します。また、ガードレールのトレースを有効にして、ガードレールがブロックしたコンテンツに関する情報を得ることもできます。
Converse オペレーションでは、次の例に示すとおり、guardrailConfig は GuardrailConfiguration オブジェクトです。
{ "guardrailIdentifier": "Guardrail ID", "guardrailVersion": "Guardrail version", "trace": "enabled" }
ConverseStream を使用する場合は、GuardrailStreamConfiguration オブジェクトを渡します。必要に応じて streamProcessingMode フィールドを使用して、ガードレールの評価が完了してから、モデルがストリーミングレスポンスのチャンクを返すように指定できます。または、ガードレールの評価がバックグラウンドで継続している間に、モデルに非同期的に応答させることも可能です。詳細については、「ストリーミングレスポンスの動作を設定してコンテンツをフィルタリングする」を参照してください。
メッセージ内の特定のコンテンツのみを評価する
メッセージをモデルに渡すと、ガードレールがそのメッセージの内容を評価します。guardContent (GuardrailConverseContentBlock) フィールドを使用して、メッセージの特定の部分を評価することもできます。
ヒント
guardContent フィールドを使用することは、InvokeModel と InvokeModelWithResponseStream で入力タグを使用することと似ています。詳細については、「ユーザー入力にタグを適用してコンテンツをフィルタリングする」を参照してください。
例えば、guardContent フィールドの内容のみがガードレールで評価され、メッセージの他の部分は評価されません。これは、次の例で示すように、会話の最新のメッセージのみをガードレールで評価する場合に便利です。
[ { "role": "user", "content": [ { "text": "Create a playlist of 2 pop songs." } ] }, { "role": "assistant", "content": [ { "text": "Sure! Here are two pop songs:\n1. \"Bad Habits\" by Ed Sheeran\n2. \"All Of The Lights\" by Kanye West\n\nWould you like to add any more songs to this playlist?" } ] }, { "role": "user", "content": [ { "guardContent": { "text": { "text": "Create a playlist of 2 heavy metal songs." } } } ] } ]
guardContent のもう 1 つのユースケースは、ガードレールがメッセージの追加コンテキストを評価せずに、そのコンテキストを提供することです。次の例では、ガードレールは "Create a playlist of heavy metal songs" のみを評価し、"Only answer with a list of songs" を無視します。
messages = [ { "role": "user", "content": [ { "text": "Only answer with a list of songs." }, { "guardContent": { "text": { "text": "Create a playlist of heavy metal songs." } } } ] } ]
コンテンツが guardContent ブロックにない場合、必ずしも評価されないとは限りません。この動作は、ガードレールが使用するフィルタリングポリシーによって異なります。
次の例は、コンテキストグラウンディングチェック (qualifiers フィールドに基づく) を含む 2 つの guardContent ブロックを示しています。ガードレールのコンテキストグラウンディングチェックでは、これらのブロックの内容のみが評価されます。ただし、ガードレールに「バックグラウンド」という単語をブロックするワードフィルターもある場合、「一部の追加の背景情報」というテキストは、guardContent ブロックにない場合でも評価されます。
[{ "role": "user", "content": [{ "guardContent": { "text": { "text": "London is the capital of UK. Tokyo is the capital of Japan.", "qualifiers": ["grounding_source"] } } }, { "text": "Some additional background information." }, { "guardContent": { "text": { "text": "What is the capital of Japan?", "qualifiers": ["query"] } } } ] }]
Converse API に送信されるシステムプロンプトの保護
Converse API に送信されるシステムプロンプトでガードレールを使用できます。システムプロンプトを保護するには、次の例に示すように、API に渡すシステムプロンプトで guardContent (SystemContentBlock) フィールドを指定します。
[ { "guardContent": { "text": { "text": "Only respond with Welsh heavy metal songs." } } } ]
guardContent フィールドが指定されていない場合、ガードレールはシステムプロンプトのメッセージを評価しません。
メッセージとシステムプロンプトに対するガードレールの動作
ガードレールが guardContent フィールドをどのように評価するかは、メッセージで渡されたシステムプロンプトとメッセージに応じて異なります。
| システムプロンプトにガードレールブロックがある | システムプロンプトにガードレールブロックがない | |
|---|---|---|
|
メッセージにガードレールブロックがある |
システム: ガードレールがガードレールブロック内のコンテンツを調べる メッセージ: ガードレールがガードレールブロック内のコンテンツを調べる |
システム: ガードレールは何も調べない メッセージ: ガードレールがガードレールブロック内のコンテンツを調べる |
|
メッセージにガードレールブロックがない |
システム: ガードレールがガードレールブロック内のコンテンツを調べる メッセージ: ガードレールがすべてを調べる |
システム: ガードレールは何も調べない メッセージ: ガードレールがすべてを調べる |
Converse API 使用時の応答の処理
Converse オペレーションを呼び出すと、送信したメッセージをガードレールが評価します。コンテンツがブロックされたことが検出された場合は、次のように処理されます。
レスポンスの
stopReasonフィールドがguardrail_intervenedに設定されます。-
トレースが有効になっている場合、
trace(ConverseTrace) フィールドでトレースを確認できます。ConverseStreamの場合、トレースは、オペレーションが返すメタデータ (ConverseStreamMetadataEvent) にあります。 -
ガードレールで設定しておいた、コンテンツがブロックされたことを知らせるテキストが、
output(ConverseOutput) フィールドで返されます。ConverseStreamの場合、コンテンツがブロックされた旨のテキストは、ストリーミングされるメッセージ内にあります。
以下は、レスポンスの一部分です。コンテンツがブロックされたことを知らせるテキストと、ガードレール評価のトレースが表示されています。ガードレールは、メッセージ内の Heavy metal という用語をブロックしています。
{ "output": { "message": { "role": "assistant", "content": [ { "text": "Sorry, I can't answer questions about heavy metal music." } ] } }, "stopReason": "guardrail_intervened", "usage": { "inputTokens": 0, "outputTokens": 0, "totalTokens": 0 }, "metrics": { "latencyMs": 721 }, "trace": { "guardrail": { "inputAssessment": { "3o06191495ze": { "topicPolicy": { "topics": [ { "name": "Heavy metal", "type": "DENY", "action": "BLOCKED" } ] }, "invocationMetrics": { "guardrailProcessingLatency": 240, "usage": { "topicPolicyUnits": 1, "contentPolicyUnits": 0, "wordPolicyUnits": 0, "sensitiveInformationPolicyUnits": 0, "sensitiveInformationPolicyFreeUnits": 0, "contextualGroundingPolicyUnits": 0 }, "guardrailCoverage": { "textCharacters": { "guarded": 39, "total": 72 } } } } } } } }
ガードレールで Converse API を使用する場合のコード例
この例では、Converse および ConverseStream オペレーションで会話を保護する方法を紹介します。この例は、ヘビーメタルジャンルの曲を含むプレイリストをモデルに作成させない方法を示しています。
会話を保護するには
-
「ガードレールを作成する 」の手順に従ってガードレールを作成します。
-
名前 – 「Heavy metal」と入力します。
-
トピックの定義 – 「Avoid mentioning songs that are from the heavy metal genre of music」と入力します。
-
サンプルフレーズを追加 – 「Create a playlist of heavy metal songs」と入力します。
手順 9 では、次のように入力します。
-
ブロックされたプロンプトについて表示されるメッセージ – 「Sorry, I can't answer questions about heavy metal music」と入力します。
-
ブロックされたレスポンスへのメッセージ – 「Sorry, the model generated an answer that mentioned heavy metal music」と入力します。
他のガードレールオプションも設定できますが、この例では必須ではありません。
-
-
「ガードレールのバージョンを作成する」の手順に従って、ガードレールのバージョンを作成します。
-
以下のコード例 (Converse および ConverseStream) で、次の変数を設定します。
guardrail_id– 手順 1 で作成したガードレールの ID。guardrail_version– 手順 2 で作成したガードレールのバージョン。text-Create a playlist of heavy metal songs.を使用します。
-
サンプルコードを実行します。出力には、ガードレールの評価と出力メッセージ
Text: Sorry, I can't answer questions about heavy metal music.が表示されるはずです。ガードレールによる入力の評価から、モデルが入力メッセージ内で heavy metal という用語を検出したことがわかります。 -
(オプション)
textの値を List all genres of rock music に変更して、モデルが生成する不適切なテキストがガードレールでブロックされるかテストします。サンプルを再び実行します。レスポンスに出力の評価が表示されるはずです。