

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# So verwenden Sie Ihren Integritätsschutz mit Inferenzoperationen zur Bewertung von Benutzereingaben
<a name="guardrails-input-tagging-base-inference"></a>

Sie können Leitplanken mit den Basisinferenzoperationen [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)und [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html)(Streaming) verwenden. In diesem Abschnitt wird beschrieben, wie Sie Benutzereingaben selektiv auswerten und wie Sie das Verhalten von Streaming-Antworten konfigurieren. Beachten Sie, dass Sie bei Konversationsanwendungen dieselben Ergebnisse mit der [Converse-API](guardrails-use-converse-api.md) erzielen können.

Beispiel: Ein Code, der die Grundlageninferenzoperationen aufruft; siehe [Senden Sie eine einzelne Aufforderung mit InvokeModel](inference-invoke.md). Für Informationen zur Verwendung eines Integritätsschutzes mit den Grundlageninferenzoperationen folgen Sie den Schritten auf der Registerkarte API für [So testen Sie Ihren Integritätsschutz](guardrails-test.md). 

**Topics**
+ [So wenden Sie Tags für die Inhaltsfilterung auf Benutzereingaben an](guardrails-tagging.md)
+ [So konfigurieren Sie das Streaming-Antwortverhalten bei der Inhaltsfilterung](guardrails-streaming.md)
+ [So fügen Sie der Converse-API einen Integritätsschutz hinzu](guardrails-use-converse-api.md)

# So wenden Sie Tags für die Inhaltsfilterung auf Benutzereingaben an
<a name="guardrails-tagging"></a>

Eingabe-Tags ermöglichen Ihnen, bestimmte Inhalte innerhalb des Eingabetextes zu markieren, die vom Integritätsschutz verarbeitet werden sollen. Dies ist nützlich, wenn Sie den Integritätsschutz nur auf bestimmte Teile der Eingabe anwenden möchten, während andere Teile unverarbeitet bleiben sollen.

Beispielsweise kann der Eingabe-Prompt in RAG-Anwendungen System-Prompts, Suchergebnisse aus vertrauenswürdigen Dokumentationsquellen und Benutzeranfragen enthalten. Da System-Prompts vom Entwickler bereitgestellt werden und Suchergebnisse aus vertrauenswürdigen Quellen stammen, benötigen Sie möglicherweise nur die Integritätsschutzbewertung für die Benutzeranfragen.

In einem weiteren Beispiel kann der Eingabe-Prompt in Konversationsanwendungen System-Prompts, Gesprächsverläufe und die aktuelle Benutzereingabe enthalten. System-Prompts sind entwicklerspezifische Anweisungen, und Gesprächsverläufe enthalten historische Benutzereingaben sowie Modellantworten, die möglicherweise bereits vom Integritätsschutz ausgewertet wurden. In einem solchen Szenario möchten Sie möglicherweise nur die aktuelle Benutzereingabe auswerten.

Durch die Verwendung von Eingabe-Tags können Sie besser steuern, welche Teile des Eingabe-Prompts vom Integritätsschutz verarbeitet und ausgewertet werden sollen. So stellen Sie sicher, dass Ihre Schutzmechanismen an Ihre Anwendungsfälle angepasst sind. Dies trägt außerdem zur Leistungsverbesserung und Kostensenkung bei, da Sie die Flexibilität haben, einen relativ kürzeren und relevanten Abschnitt der Eingabe auszuwerten, anstatt den gesamten Eingabe-Prompt.

**Tag-Inhalte für den Integritätsschutz**

Um Inhalte für die Verarbeitung durch den Integritätsschutz zu kennzeichnen, verwenden Sie das XML-Tag, das aus einer Kombination eines reservierten Präfixes und einem benutzerdefinierten `tagSuffix` besteht. Beispiel:

```
{
    "text": """
        You are a helpful assistant.
        Here is some information about my account:
          - There are 10,543 objects in an S3 bucket.
          - There are no active EC2 instances.
        Based on the above, answer the following question:
        Question: 
        <amazon-bedrock-guardrails-guardContent_xyz>
        How many objects do I have in my S3 bucket? 
        </amazon-bedrock-guardrails-guardContent_xyz>
         ...
        Here are other user queries:
        <amazon-bedrock-guardrails-guardContent_xyz>
        How do I download files from my S3 bucket?
        </amazon-bedrock-guardrails-guardContent_xyz>    
    """,
    "amazon-bedrock-guardrailConfig": {
        "tagSuffix": "xyz"
    }
}
```

Im vorherigen Beispiel ist der Inhalt *„Wie viele Objekte habe ich in meinem S3-Bucket?“* und *„Wie lade ich Dateien aus meinem S3-Bucket herunter?“* mit dem Tag `<amazon-bedrock-guardrails-guardContent_xyz>` für die Verarbeitung durch den Integritätsschutz markiert. Beachten Sie, dass das Präfix `amazon-bedrock-guardrails-guardContent` für den Integritätsschutz reserviert ist.

**Tag-Suffix**

Das Tag-Suffix (`xyz` im obigen Beispiel) ist ein dynamischer Wert, den Sie in das `tagSuffix`-Feld unter `amazon-bedrock-guardrailConfig` eingeben müssen, um Eingabe-Tagging verwenden zu können. Es wird empfohlen, für jede Anfrage eine neue, zufällige Zeichenfolge als `tagSuffix` zu verwenden. So werden potenzielle Promptinjektions-Angriffe eingedämmt, da die Tag-Struktur unvorhersehbar wird. Ein statisches Tag kann dazu führen, dass ein bösartiger Benutzer das XML-Tag schließt und nach dem Tag-Abschluss schädlichen Inhalt anhängt, was zu einem *Injektionsangriff* führen würde. Es können lediglich alphanumerische Zeichenfolgen mit einer Länge zwischen 1 und 20 Zeichen (insgesamt) angegeben werden. Mit dem Beispielsuffix müssen Sie den gesamten Inhalt`xyz`, der geschützt werden soll, mithilfe der XML-Tags mit Ihrem Suffix einschließen:. `<amazon-bedrock-guardrails-guardContent_xyz>` *your content* `</amazon-bedrock-guardrails-guardContent_xyz>` Es empfiehlt sich, für jede Anfrage eine eindeutige dynamische ID als Tag-Suffix zu verwenden.

**Mehrere Tags**

Sie können dieselbe Tag-Struktur im Eingabetext mehrmals verwenden, um verschiedene Teile des Inhalts für die Integritätsschutzverarbeitung zu markieren. Eine Verschachtelung von Tags ist nicht zulässig.

**Unmarkierte Inhalte**

Inhalte außerhalb der Eingabe-Tags werden nicht vom Integritätsschutz verarbeitet. Auf diese Weise können Sie Anweisungen, Beispielkonversationen, Wissensdatenbanken oder andere Inhalte hinzufügen, die Sie für sicher halten und die nicht vom Integritätsschutz verarbeitet werden sollen. Wenn der Prompt keine Tags enthält, wird der gesamte Prompt vom Integritätsschutz verarbeitet. Die einzige Ausnahme sind [So erkennen Sie Prompt-Angriffe im Integritätsschutz für Amazon Bedrock](guardrails-prompt-attack.md)-Filter, für die Eingabe-Tags vorhanden sein müssen.

# So konfigurieren Sie das Streaming-Antwortverhalten bei der Inhaltsfilterung
<a name="guardrails-streaming"></a>

Die [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html)API gibt Daten in einem Streaming-Format zurück. Auf diese Weise können Sie blockweise auf Antworten, ohne auf das gesamte Ergebnis warten zu müssen. Bei der Verwendung des Integritätsschutzes für eine Streaming-Antwort gibt es zwei Betriebsmodi: synchron und asynchron.

**Synchroner Modus**

Im synchronen Standardmodus puffert der Integritätsschutz die konfigurierten Richtlinien und wendet sie auf einen oder mehrere Antwortblöcke an, bevor die Antwort an den Benutzer zurückgesendet wird. Der synchrone Verarbeitungsmodus führt zu einer gewissen Latenz bei den Antwortblöcken, da die Antwort verzögert wird, bis der Integritätsschutz-Scan abgeschlossen ist. Er bietet jedoch eine höhere Genauigkeit, da jeder Antwortblock vom Integritätsschutz gescannt wird, bevor er an den Benutzer gesendet wird.

**Asynchroner Modus**

Im asynchronen Modus sendet der Integritätsschutz die Antwortblöcke an den Benutzer, sobald sie verfügbar sind, und wendet gleichzeitig die konfigurierten Richtlinien asynchron im Hintergrund an. Der Vorteil besteht darin, dass Antwortblöcke sofort und ohne Auswirkungen auf die Latenz bereitgestellt werden. Antwortblöcke können jedoch unangemessene Inhalte aufweisen, bis der Integritätsschutz-Scan abgeschlossen ist. Sobald unangemessene Inhalte erkannt werden, werden nachfolgende Blöcke durch den Integritätsschutz blockiert.

**Warnung**  
Integritätsschutz für Amazon Bedrock unterstützt nicht die Maskierung sensibler Informationen im asynchronen Modus.

**Aktivieren des asynchronen Modus**

Um den asynchronen Modus zu aktivieren, müssen Sie den `streamProcessingMode`-Parameter in das `amazon-bedrock-guardrailConfig`-Objekt Ihrer `InvokeModelWithResponseStream`-Anfrage aufnehmen:

```
{
   "amazon-bedrock-guardrailConfig": {
   "streamProcessingMode": "ASYNCHRONOUS"
   }
}
```

Wenn Sie die Abwägungen zwischen den synchronen und asynchronen Modi verstehen, können Sie den geeigneten Modus entsprechend den Anforderungen Ihrer Anwendung an Latenz und Genauigkeit der Inhaltsmoderation auswählen.

# So fügen Sie der Converse-API einen Integritätsschutz hinzu
<a name="guardrails-use-converse-api"></a>

Sie können einen Integritätsschutz verwenden, um Konversations-Apps zu schützen, die Sie mit der Converse-API erstellen. Wenn Sie beispielsweise eine Chat-Anwendung mit der Converse-API erstellen, können Sie einen Integritätsschutz verwenden, um vom Benutzer eingegebene unangemessene Inhalte und vom Modell generierte unangemessene Inhalte zu blockieren. Informationen über die Converse-API finden Sie unter [Führen einer Konversation mit den Converse-API-Operationen](conversation-inference.md). 

**Topics**
+ [Rufen Sie die Converse-API mit dem Integritätsschutz auf](#guardrails-use-converse-api-call)
+ [So verarbeiten Sie die Antwort bei Verwendung der Converse-API](#guardrails-use-converse-api-response)
+ [Codebeispiel für die Verwendung der Converse-API mit dem Integritätsschutz](#converse-api-guardrail-example)

## Rufen Sie die Converse-API mit dem Integritätsschutz auf
<a name="guardrails-use-converse-api-call"></a>

Um eine Guardrail zu verwenden, fügen Sie Konfigurationsinformationen für die Guardrail in Aufrufe der [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) oder [ConverseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseStream.html)(für Streaming-Antworten) Operationen ein. Optional können Sie bestimmte Inhalte in der Nachricht auswählen, die vom Integritätsschutz ausgewertet werden sollen. Informationen zu den Modellen, die Sie mit dem Integritätsschutz und der Converse-API verwenden können, finden Sie unter [Unterstützte Modelle und Modellfeatures](conversation-inference-supported-models-features.md). 

**Topics**
+ [So konfigurieren Sie einen Integritätsschutz so, dass er mit der Converse-API funktioniert](#guardrails-use-converse-api-call-configure)
+ [So werten Sie nur bestimmte Inhalte in einer Nachricht aus](#guardrails-use-converse-api-call-message)
+ [So schützen Sie einen an die Converse-API gesendeten System-Prompt](#guardrails-use-converse-api-call-message-system-guard)
+ [Verhalten des Integritätsschutzes in der Meldung und im System-Prompt](#guardrails-use-converse-api-call-message-system-message-guard)

### So konfigurieren Sie einen Integritätsschutz so, dass er mit der Converse-API funktioniert
<a name="guardrails-use-converse-api-call-configure"></a>

Sie geben Informationen zur Konfiguration des Integritätsschutzes im Eingabeparameter `guardrailConfig` an. Die Konfiguration umfasst die ID und die Version des Integritätsschutzes, den Sie verwenden möchten. Sie können die Ablaufverfolgung auch für den Integritätsschutz aktivieren, wodurch Informationen über den Inhalt bereitgestellt werden, den der Integritätsschutz blockiert hat. 

Bei der `Converse` Operation `guardrailConfig` handelt es sich um ein [GuardrailConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailConfiguration.html)Objekt, wie im folgenden Beispiel gezeigt.

```
{
        "guardrailIdentifier": "Guardrail ID",
        "guardrailVersion": "Guardrail version",
        "trace": "enabled"
}
```

Wenn Sie verwenden`ConverseStream`, übergeben Sie ein [GuardrailStreamConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailStreamConfiguration.html)Objekt. Optional können Sie das `streamProcessingMode`-Feld verwenden, um anzugeben, dass das Modell die Integritätsschutzbewertung abschließen soll, bevor Streaming-Antwortblöcke zurückgegeben werden. Oder Sie können das Modell asynchron antworten lassen, während der Integritätsschutz die Bewertung im Hintergrund fortsetzt. Weitere Informationen finden Sie unter [So konfigurieren Sie das Streaming-Antwortverhalten bei der Inhaltsfilterung](guardrails-streaming.md).

### So werten Sie nur bestimmte Inhalte in einer Nachricht aus
<a name="guardrails-use-converse-api-call-message"></a>

Wenn Sie eine [Nachricht](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Message.html) an ein Model weitergeben, wertet Ihr Integritätsschutz den Inhalt der Nachricht aus. Sie können auch bestimmte Teile einer Nachricht bewerten, indem Sie das Feld `guardContent` ([GuardrailConverseContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_GuardrailConverseContentBlock.html)) verwenden.

**Tipp**  
Die Verwendung des `guardContent` Felds ähnelt der Verwendung von Eingabe-Tags mit [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)und [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html). Weitere Informationen finden Sie unter [So wenden Sie Tags für die Inhaltsfilterung auf Benutzereingaben an](guardrails-tagging.md). 

Beispielsweise wertet der folgende Integritätsschutz nur der Inhalt im Feld `guardContent` und nicht den Rest der Nachricht aus. Dies ist nützlich, wenn der Integritätsschutz nur die neueste Nachricht einer Konversation auswerten soll, wie im folgenden Beispiel gezeigt.

```
[
    {
        "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."
                    }
                }
            }
        ]
    }
]
```

Ein weiterer Anwendungsfall für `guardContent` ist die Bereitstellung von zusätzlichem Kontext für eine Nachricht, ohne dass Ihr Integritätsschutz diesen Kontext auswertet. Im folgenden Beispiel wertet der Integritätsschutz lediglich `"Create a playlist of heavy metal songs"` aus und ignoriert `"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."
                    }
                }
            }
        ]
    }
]
```

Wenn sich der Inhalt nicht in einem `guardContent`-Block befindet, bedeutet das nicht unbedingt, dass er nicht ausgewertet wird. Dieses Verhalten hängt davon ab, welche Filterrichtlinien der Integritätsschutz verwendet. 

Das folgende Beispiel zeigt zwei `guardContent`-Blöcke mit [kontextuellen Begründungsprüfungen](guardrails-contextual-grounding-check.md) (auf Basis der `qualifiers`-Felder). Bei den kontextuellen Begründungsprüfungen im Integritätsschutz wird nur der Inhalt dieser Blöcke ausgewertet. Wenn der Integritätsschutz jedoch auch über einen [Wortfilter](guardrails-content-filters.md) verfügt, der das Wort „Hintergrund“ blockiert, dann wird der Text „Einige zusätzliche Hintergrundinformationen.“ trotzdem ausgewertet, auch wenn er sich nicht in einem `guardContent`-Block befindet.

```
[{
    "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"]
                }
            }
        }
    ]
}]
```

### So schützen Sie einen an die Converse-API gesendeten System-Prompt
<a name="guardrails-use-converse-api-call-message-system-guard"></a>

Sie können den Integritätsschutz mit System-Prompts verwenden, die Sie an die Converse-API senden. Um eine Systemaufforderung zu schützen, geben Sie das Feld `guardContent` ([SystemContentBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_SystemContentBlock.html)) in der Systemaufforderung an, die Sie an die API übergeben, wie im folgenden Beispiel gezeigt.

```
[
    {
        "guardContent": {
            "text": {
                "text": "Only respond with Welsh heavy metal songs."
            }
        }
    }
]
```

Wenn Sie das `guardContent`-Feld nicht angeben, bewertet der Integritätsschutz den System-Prompt nicht. 

### Verhalten des Integritätsschutzes in der Meldung und im System-Prompt
<a name="guardrails-use-converse-api-call-message-system-message-guard"></a>

Das Verhalten des Integritätsschutzes bei der Bewertung des Felds `guardContent` ist bei System-Prompts und Nachrichten, die Sie in der Nachricht weitergeben, unterschiedlich.


|  | Der System-Prompt wird vom Integritätsschutz blockiert | Der System-Prompt wird nicht vom Integritätsschutz blockiert | 
| --- | --- | --- | 
|  **Nachrichten mit einer Integritätsschutzblockierung**  |  System: Der Integritätsschutz untersucht Inhalte im Integritätsschutzblock Nachrichten: Der Integritätsschutz untersucht Inhalte im Integritätsschutzblock  | System: Der Integritätsschutz stellt keine Untersuchung an Nachrichten: Der Integritätsschutz untersucht Inhalte im Integritätsschutzblock | 
|  **Nachrichten mit keiner Integritätsschutzblockierung**  |  System: Der Integritätsschutz untersucht Inhalte im Integritätsschutzblock Nachrichten: Der Integritätsschutz untersucht alles  |  System: Der Integritätsschutz stellt keine Untersuchung an Nachrichten: Der Integritätsschutz untersucht alles  | 

## So verarbeiten Sie die Antwort bei Verwendung der Converse-API
<a name="guardrails-use-converse-api-response"></a>

Wenn Sie die Converse-Operation aufrufen, wertet der Integritätsschutz die von Ihnen gesendete Nachricht aus. Wenn der Integritätsschutz blockierte Inhalte erkennt, passiert Folgendes:
+ Das `stopReason`-Feld in der Antwort ist auf `guardrail_intervened` gesetzt.
+ Wenn Sie die Ablaufverfolgung aktiviert haben, ist die Ablaufverfolgung im Feld `trace` ([ConverseTrace](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseTrace.html)) verfügbar. Mit`ConverseStream`, die Ablaufverfolgung befindet sich in den Metadaten ([ConverseStreamMetadataEvent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseStreamMetadataEvent.html)), die von der Operation zurückgegeben werden. 
+ Der Text für blockierte Inhalte, den Sie in der Leitplanke konfiguriert haben, wird im Feld `output` ([ConverseOutput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseOutput.html)) zurückgegeben. Bei `ConverseStream` ist der blockierte Inhaltstext in der gestreamten Nachricht.

Die folgende Teilantwort zeigt den blockierten Inhaltstext und die Ablaufverfolgung aus der Integritätsschutzbewertung. Der Integritätsschutz hat den Begriff *Heavy Metal* in der Nachricht blockiert. 

```
{
    "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
                            }
                        }
                    }
                }
            }
        }
    }
}
```

## Codebeispiel für die Verwendung der Converse-API mit dem Integritätsschutz
<a name="converse-api-guardrail-example"></a>

Dieses Beispiel zeigt, wie eine Konversation mit den Operationen `ConverseStream` und `Converse` geschützt wird. Das Beispiel zeigt, wie verhindert werden kann, dass ein Modell eine Playlist erstellt, die Songs aus dem Genre Heavy Metal enthält. 

**So schützen Sie eine Konversation**

1. Erstellen Sie einen Integritätsschutz, indem Sie den Anweisungen unter [So erstellen Sie Ihren Integritätsschutz](guardrails-components.md) folgen. 
   + **Name** – Geben Sie *Heavy Metal* ein. 
   + **Themendefinition** – Geben Sie ein: *Das Erwähnen von Songs aus dem Musikgenre Heavy Metal vermeiden.* 
   + **Beispielwortgruppen hinzufügen** – Geben Sie ein: *Erstellen einer Playlist mit Heavy-Metal-Songs.*

   Geben Sie in Schritt 9 Folgendes ein:
   + **Bei blockierten Prompts angezeigte Meldungen** – Geben Sie ein: *Tut mir leid, ich kann keine Fragen zu Heavy-Metal-Musik beantworten*. 
   + **Bei blockierten Antworten angezeigte Meldungen** – Geben Sie ein: *Tut mir leid, das Modell hat eine Antwort generiert, in der Heavy-Metal-Musik erwähnt wurde*.

   Sie können noch weitere Integritätsschutzoptionen konfigurieren, jedoch sind diese bei diesem Beispiel nicht erforderlich.

1. Erstellen Sie eine Integritätsschutzversion, indem Sie den Anweisungen unter [So erstellen Sie eine Integritätsschutzversion](guardrails-versions-create.md) folgen.

1. Legen Sie in den folgenden Codebeispielen ([Converse](#converse-api-guardrail-example-converse) und [ConverseStream](#converse-api-guardrail-example-converse-stream)) die folgenden Variablen fest:
   + `guardrail_id` – Die ID des Integritätsschutzes, den Sie in Schritt 1 erstellt haben.
   + `guardrail_version` – Die Version des Integritätsschutzes, den Sie in Schritt 2 erstellt haben.
   + `text` – Verwenden Sie `Create a playlist of heavy metal songs.` 

1. Führen Sie die Codebeispiele aus. Die Ausgabe sollte die Integritätsschutzbewertung und die Ausgabemeldung `Text: Sorry, I can't answer questions about heavy metal music.` enthalten. Die Bewertung der Integritätsschutzeingabe zeigt, dass das Modell den Begriff *Heavy Metal* in der Eingabemeldung erkannt hat.

1. (Optional) Testen Sie, ob der Integritätsschutz unangemessenen Text blockiert, den das Modell generiert, indem Sie den Wert von `text` auf *Alle Genres der Rockmusik auflisten* ändern. Führen Sie die Beispiele erneut aus. In der Antwort sollte eine Leistungsbeurteilung angezeigt werden. 

------
#### [ Converse ]

Der folgende Code verwendet Ihren Integritätsschutz bei der `Converse`-Operation.

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to use a guardrail with the <noloc>Converse</noloc> API.
"""

import logging
import json
import boto3


from botocore.exceptions import ClientError


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def generate_conversation(bedrock_client,
                          model_id,
                          messages,
                          guardrail_config):
    """
    Sends a message to a model.
    Args:
        bedrock_client: The Boto3 Bedrock runtime client.
        model_id (str): The model ID to use.
        messages JSON): The message to send to the model.
        guardrail_config : Configuration for the guardrail.

    Returns:
        response (JSON): The conversation that the model generated.

    """

    logger.info("Generating message with model %s", model_id)

    # Send the message.
    response = bedrock_client.converse(
        modelId=model_id,
        messages=messages,
        guardrailConfig=guardrail_config
    )

    return response


def main():
    """
    Entrypoint for example.
    """

    logging.basicConfig(level=logging.INFO,
                        format="%(levelname)s: %(message)s")

    # The model to use.
    model_id="meta.llama3-8b-instruct-v1:0"

    # The ID and version of the guardrail.
    guardrail_id = "Your guardrail ID"
    guardrail_version = "DRAFT"

    # Configuration for the guardrail.
    guardrail_config = {
        "guardrailIdentifier": guardrail_id,
        "guardrailVersion": guardrail_version,
        "trace": "enabled"
    }

    text = "Create a playlist of 2 heavy metal songs."
    context_text = "Only answer with a list of songs."

    # The message for the model and the content that you want the guardrail to assess.
    messages = [
        {
            "role": "user",
            "content": [
                {
                    "text": context_text,
                },
                {
                    "guardContent": {
                        "text": {
                            "text": text
                        }
                    }
                }
            ]
        }
    ]

    try:

        print(json.dumps(messages, indent=4))

        bedrock_client = boto3.client(service_name='bedrock-runtime')

        response = generate_conversation(
            bedrock_client, model_id, messages, guardrail_config)

        output_message = response['output']['message']

        if response['stopReason'] == "guardrail_intervened":
            trace = response['trace']
            print("Guardrail trace:")
            print(json.dumps(trace['guardrail'], indent=4))

        for content in output_message['content']:
            print(f"Text: {content['text']}")

    except ClientError as err:
        message = err.response['Error']['Message']
        logger.error("A client error occurred: %s", message)
        print(f"A client error occured: {message}")

    else:
        print(
            f"Finished generating text with model {model_id}.")


if __name__ == "__main__":
    main()
```

------
#### [ ConverseStream ]

Der folgende Code verwendet Ihren Integritätsschutz bei der `ConverseStream`-Operation.

```
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to use a guardrail with the ConverseStream operation.
"""

import logging
import json
import boto3


from botocore.exceptions import ClientError


logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)


def stream_conversation(bedrock_client,
                    model_id,
                    messages,
                    guardrail_config):
    """
    Sends messages to a model and streams the response.
    Args:
        bedrock_client: The Boto3 Bedrock runtime client.
        model_id (str): The model ID to use.
        messages (JSON) : The messages to send.
        guardrail_config : Configuration for the guardrail.


    Returns:
        Nothing.

    """

    logger.info("Streaming messages with model %s", model_id)

    response = bedrock_client.converse_stream(
        modelId=model_id,
        messages=messages,
        guardrailConfig=guardrail_config
    )

    stream = response.get('stream')
    if stream:
        for event in stream:

            if 'messageStart' in event:
                print(f"\nRole: {event['messageStart']['role']}")

            if 'contentBlockDelta' in event:
                print(event['contentBlockDelta']['delta']['text'], end="")

            if 'messageStop' in event:
                print(f"\nStop reason: {event['messageStop']['stopReason']}")

            if 'metadata' in event:
                metadata = event['metadata']
                if 'trace' in metadata:
                    print("\nAssessment")
                    print(json.dumps(metadata['trace'], indent=4))


def main():
    """
    Entrypoint for streaming message API response example.
    """

    logging.basicConfig(level=logging.INFO,
                        format="%(levelname)s: %(message)s")

    # The model to use.
    model_id = "amazon.titan-text-express-v1"

    # The ID and version of the guardrail.
    guardrail_id = "Change to your guardrail ID"
    guardrail_version = "DRAFT"

    # Configuration for the guardrail.
    guardrail_config = {
        "guardrailIdentifier": guardrail_id,
        "guardrailVersion": guardrail_version,
        "trace": "enabled",
        "streamProcessingMode" : "sync"
    }

    text = "Create a playlist of heavy metal songs."
  
    # The message for the model and the content that you want the guardrail to assess.
    messages = [
        {
            "role": "user",
            "content": [
                {
                    "text": text,
                },
                {
                    "guardContent": {
                        "text": {
                            "text": text
                        }
                    }
                }
            ]
        }
    ]

    try:
        bedrock_client = boto3.client(service_name='bedrock-runtime')

        stream_conversation(bedrock_client, model_id, messages,
                        guardrail_config)

    except ClientError as err:
        message = err.response['Error']['Message']
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))

    else:
        print(
            f"Finished streaming messages with model {model_id}.")


if __name__ == "__main__":
    main()
```

------