

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.

# Aufbau eines benutzerdefinierten RAG-Systems mit Amazon Nova
Aufbau eines RAG-Systems

**Anmerkung**  
Amazon Nova Premier ist noch nicht über die [RetrieveAndGenerate](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)API verfügbar. Um die [RetrieveAndGenerate](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)API mit Amazon Nova Premier zu verwenden, müssen Sie beim Aufrufen der [RetrieveAndGenerate](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)API eine benutzerdefinierte Aufforderung angeben. Dies geschieht, indem Sie `promptTemplate` im `generationConfiguration` Argument des [RetrieveAndGenerate](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)API-Aufrufs das angeben, wie unten gezeigt:  

```
'generationConfiguration': {
                        'promptTemplate': {
                            'textPromptTemplate': promptTemplate
                        }
                    }
```
Informationen zum Erstellen einer benutzerdefinierten Prompt-Vorlage finden Sie in der [Anleitung zu Prompts für RAG](https://docs.aws.amazon.com/nova/latest/userguide/prompting-tools-rag.html).

Sie können Amazon-Nova-Modelle als LLM innerhalb eines benutzerdefinierten Text-RAG-Systems verwenden. Um Ihr eigenes RAG-System mit Amazon Nova zu erstellen, können Sie Ihr RAG-System entweder so konfigurieren, dass es eine Wissensdatenbank direkt abfragt, oder Sie können eine Wissensdatenbank mit einem Agenten verknüpfen (weitere Informationen finden Sie unter [KI-Agenten mit Amazon Nova erstellen](agents.md)).

Bei der Verwendung von Amazon Nova in einem beliebigen RAG-System gibt es zwei allgemeine Ansätze.
+ **Verwendung eines Retrievers als Tool** (empfohlen): Sie können Ihren Retriever für die Verwendung als Tool in der Converse-API oder ToolParameter der Invokemodel-API definieren. Sie können beispielsweise die Bedrock [Retrieve API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) oder einen anderen Retriever als „Tool“ definieren.
+ **Verwenden von benutzerdefinierten Anweisungen für RAG-Systeme:** Sie können Ihre eigenen benutzerdefinierten Anweisungen definieren, um ein benutzerdefiniertes RAG-System zu erstellen.

**Einen Retriever als Tool verwenden**

Definieren Sie ein Tool, mit dem das Modell einen Retriever aufrufen kann. Die Definition des Tools ist ein JSON-Schema, das Sie im Anforderungsparameter `toolConfig` ([ToolConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolConfiguration.html)) an die Operation übergeben. `Converse`

```
{
    "tools": [
        {
            "toolSpec": {
                "name": "Retrieve information tool",
                "description": "This tool retrieves information from a custom database",
                "inputSchema": {
                    "json": {
                        "type": "object",
                        "properties": {
                            "query": {
                                "type": "string",
                                "description": "This is the description of the query parameter"
                            }
                        },
                        "required": [
                            "query"
                        ]
                    }
                }
            }
        }
    ]
}
```

Nachdem das Tool definiert wurde, können Sie die Tool-Konfiguration als Parameter in der Converse-API übergeben.

**Interpretieren der Antwortelemente**

Sie erhalten eine Antwort vom Modell als eine JSON-Datei unter der „Rolle” des Assistenten mit dem Inhaltstyp „toolUse” oder als einen Kontext vom Typ „text”, falls das Modell das Retriever-Tool nicht verwendet. Wenn das Modell das Retriever-Tool verwendet, identifiziert die Antwort das Tool (tool\$1name). Informationen darüber, wie das angeforderte Tool verwendet werden sollte, finden Sie in der Meldung, die das Modell im Feld `output` ([ConverseOutput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseOutput.html)) zurückgibt. Insbesondere das Feld `toolUse` ([ToolUseBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolUseBlock.html)). Sie verwenden das Feld `toolUseId`, um die Tool-Anforderung bei späteren Aufrufen zu identifizieren.

```
{
    "output": {
        "message": {
            "role": "assistant",
            "content": [
                {
                    "toolUse": {
                        "toolUseId": "tooluse_1234567",
                        "name": "Retrieve information tool",
                        "input": {
                            "query": "Reformatted user query" #various arguments needed by the chosen tool
                        }
                    }
                }
            ]
        }
    },
    "stopReason": "tool_use"
}
```

Verwenden Sie das Feld `name` aus dem Feld `toolUse` in der Modellantwort, um den Namen des Tools zu identifizieren zu können. Rufen Sie dann Ihre Implementierung des Tools auf und übergeben Sie die Eingabeparameter aus dem Feld `input`.

**Abgerufenen Inhalt wieder in die Converse-API eingeben**

Um die abgerufenen Ergebnisse erneut an Amazon Nova weiterzuleiten, können Sie jetzt eine Tool Block-Nachricht erstellen, die einen Inhaltsblock `toolResult` ([ToolResultBlock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolResultBlock.html)) innerhalb der Benutzerrolle enthält. Fügen Sie in den Inhaltsblock die Antwort des Tools und die ID für die Tool-Anforderung ein, welche Sie im vorherigen Schritt erhalten haben.

```
{
    "role": "user",
    "content": [
        {
            "toolResult": {
                "toolUseId": "tooluse_1234567",
                "content": [
                    {
                        "json": {
                            "Text chunk 1": "retrieved information chunk 1",
                            "Text chunk 2": "retrieved information chunk 2"
                        }
                    }
                ],
                "status": "success | error"
            }
        }
    ]
}
```

Das [ToolResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ToolResultBlock.html) kann „Inhalt“ enthalten, der „Text“, „JSON“ und „Bild“ enthalten kann (abhängig vom verwendeten Modell). Sollte ein Fehler im Tool auftreten, beispielsweise eine Anforderung für nicht vorhandene oder falsche Argumente, können Sie die Fehlerinformationen an das Modell im `toolResult`-Feld senden. Um auf einen Fehler hinzuweisen, geben Sie `error` in das Feld `status` ein.