Integration von Amazon Redshift ML mit Amazon Bedrock - Amazon Redshift

Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting.

Integration von Amazon Redshift ML mit Amazon Bedrock

In diesem Abschnitt wird die Verwendung der Integration von Amazon Redshift ML mit Amazon Bedrock beschrieben. Mit diesem Feature können Sie ein Amazon-Bedrock-Modell unter Verwendung von SQL aufrufen und Ihre Daten aus einem Data Warehouse in Amazon Redshift verwenden, um Anwendungen auf Basis von generativer KI zu erstellen, wie Textgenerierung, Stimmungsanalyse oder Übersetzung.

Erstellen oder Aktualisieren einer IAM-Rolle für die Integration von Amazon Redshift ML mit Amazon Bedrock

In diesem Abschnitt wird gezeigt, wie Sie eine IAM-Rolle erstellen, die Sie für die Integration von Amazon Redshift ML mit Amazon Bedrock verwenden können.

Fügen Sie der IAM-Rolle, die Sie für die Integration von Amazon Redshift ML mit Amazon Bedrock verwenden, die folgende Richtlinie hinzu:

  • AmazonBedrockFullAccess

Fügen Sie der IAM-Rolle die folgende Vertrauensrichtlinie hinzu, damit Amazon Redshift die Rolle zur Interaktion mit anderen Services übernehmen kann.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Wenn sich der Cluster oder Namespace in einer VPC befindet, folgen Sie den Anweisungen unter Einrichtung für die Amazon-Redshift-ML-Administration in Cluster aufteilen und konfigurieren.

Wenn Sie eine restriktivere Richtlinie benötigen, können Sie eine erstellen, die nur die auf den folgenden Seiten angegebenen Amazon-Bedrock-Berechtigungen umfasst:

Weitere Informationen zum Erstellen von IAM-Rollen finden Sie unter Erstellung einer IAM-Rolle im AWS Identity and Access Management-Benutzerhandbuch.

Erstellen eines externen Modells für die Integration von Amazon Redshift ML mit Amazon Bedrock

In diesem Abschnitt wird gezeigt, wie Sie ein externes Modell erstellen, das als Schnittstelle für Amazon Bedrock in Ihrem Data Warehouse in Amazon Redshift verwendet werden kann.

Um ein Amazon-Bedrock-Modell von Amazon Redshift aus aufzurufen, müssen Sie zuerst den Befehl CREATE EXTERNAL MODEL ausführen. Dieser Befehl erstellt ein externes Modellobjekt in der Datenbank und eine zugehörige Benutzerfunktion, die Sie verwenden, um Textinhalte mit Amazon Bedrock zu generieren.

Das folgende Codebeispiel zeigt einen Basisbefehl CREATE EXTERNAL MODEL:

CREATE EXTERNAL MODEL llm_claude FUNCTION llm_claude_func IAM_ROLE '<IAM role arn>' MODEL_TYPE BEDROCK SETTINGS ( MODEL_ID 'anthropic.claude-v2:1', PROMPT 'Summarize the following text:');

Der Befehl CREATE EXTERNAL MODEL verfügt über eine einheitliche und konsistente Schnittstelle zu Amazon Bedrock für alle Basismodelle (FM), die Nachrichten unterstützen. Dies ist die Standardoption, wenn Sie den Befehl CREATE EXTERNAL MODEL verwenden oder explizit den Anforderungstyp UNIFIED angeben. Weitere Informationen finden Sie in der Converse-API-Dokumentation in der Dokumentation zur Amazon-Bedrock-API.

Wenn ein FM keine Nachrichten unterstützt, müssen Sie die Einstellung für request_type auf RAW setzen, wie im folgenden Beispiel zu sehen. Wenn Sie request_type auf RAW setzen, müssen Sie die an Amazon Bedrock gesendete Anforderung erstellen, wenn Sie die Inferenzfunktion auf der Grundlage des ausgewählten FM verwenden. Stellen Sie sicher, dass Sie den Zugriff auf das Modell Titan Text G1 – Express in Amazon Bedrock aktivieren, bevor Sie das folgende Beispiel ausführen.

CREATE EXTERNAL MODEL titan_raw FUNCTION func_titan_raw IAM_ROLE '<IAM role arn>' MODEL_TYPE BEDROCK SETTINGS ( MODEL_ID 'amazon.titan-text-express-v1', REQUEST_TYPE RAW, RESPONSE_TYPE SUPER);

Wenn Sie weitere Informationen zu einer Eingabeanforderung benötigen, z. B. die Gesamtzahl der Token, können Sie beim Erstellen des Modells RESPONSE_TYPE auf super setzen.

CREATE EXTERNAL MODEL patient_recommendations_v2 FUNCTION patient_recommendations_func_v2 IAM_ROLE '<IAM role arn>' MODEL_TYPE BEDROCK SETTINGS ( MODEL_ID 'anthropic.claude-v2', PROMPT 'Generate personalized diet plan for following patient:', RESPONSE_TYPE SUPER);

Der PROMPT-Parameter für den Befehl CREATE EXTERNAL MODEL ist ein statischer Prompt. Wenn Sie einen dynamischen Prompt für Ihre Anwendung benötigen, müssen Sie diesen angeben, wenn Sie die Inferenzfunktion verwenden. Weitere Details finden Sie unter . Prompt-Engineering für die Integration von Amazon Redshift ML mit Amazon Bedrock.

Weitere Informationen zur Anweisung CREATE EXTERNAL MODEL, ihren Parametern und Einstellungen finden Sie unter ERSTELLEN EINES EXTERNEN MODELLS.

Verwenden eines externen Modells für die Integration von Amazon Redshift ML mit Amazon Bedrock

In diesem Abschnitt wird gezeigt, wie Sie ein externes Modell aufrufen, um Text als Antwort auf bereitgestellte Prompts zu generieren. Verwenden Sie die Inferenzfunktion, die Sie mit CREATE EXTERNAL MODEL erstellen, um ein externes Modell aufzurufen.

Inferenz mit Modellen des Anforderungstyps UNIFIED

Die Inferenzfunktion für Modelle mit dem Anforderungstyp UNIFIED verfügt über die folgenden drei Parameter, die der Reihe nach an die Funktion übergeben werden:

  • Eingabetext (erforderlich): Dieser Parameter gibt den Eingabetext an, den Amazon Redshift an Amazon Bedrock weitergibt.

  • Inferenzkonfiguration und Zusätzliche Felder für Modellanfragen (optional): Amazon Redshift übergibt diese Parameter an die entsprechenden Parameter für die Converse-Modell-API.

Das folgende Codebeispiel veranschaulicht die Verwendung einer Inferenzfunktion vom Typ UNIFIED.

SELECT llm_claude_func(input_text, object('temperature', 0.7, 'maxtokens', 500)) FROM some_data;

Inferenz mit Modellen des Anforderungstyps RAW

Die Inferenzfunktion für Modelle mit Anforderungstyp RAW verfügt nur über einen Parameter des Datentyps SUPER. Die Syntax dieses Parameters hängt vom verwendeten Amazon-Bedrock-Modell ab.

Das folgende Codebeispiel veranschaulicht die Verwendung einer Inferenzfunktion vom Typ RAW.

SELECT llm_titan_func( object( "inputText", "Summarize the following text: " | input_text, "textGenerationConfig", object("temperature", 0.5, "maxTokenCount", 500) ) ) FROM some_data;

Inferenzfunktionen als reine Leader-Funktionen

Inferenzfunktionen für Amazon-Bedrock-Modelle können als reine Leader-Knotenfunktionen ausgeführt werden, wenn die Abfrage, die sie verwendet, keine Tabellen referenziert. Dies kann hilfreich sein, wenn Sie einem LLM schnell eine Frage stellen möchten.

Das folgende Codebeispiel veranschaulicht die Verwendung einer reinen Leader-Inferenzfunktion:

SELECT general_titan_llm_func('Summarize the benefits of LLM on data analytics in 100 words');

Nutzungshinweise für die Inferenzfunktion

Beachten Sie Folgendes, wenn Sie Inferenzfunktionen mit der Integration von Amazon Redshift ML mit Amazon Bedrock verwenden:

  • Bei den Namen der Parameter für alle Amazon-Bedrock-Modelle wird zwischen Groß- und Kleinschreibung unterschieden. Wenn Ihre Parameter nicht den vom Modell geforderten Parametern entsprechen, werden sie von Amazon Bedrock möglicherweise stillschweigend ignoriert.

  • Der Durchsatz von Inferenzabfragen wird durch die Laufzeitkontingente der verschiedenen Modelle begrenzt, die von Amazon Bedrock in verschiedenen Regionen angeboten werden. Weitere Informationen finden Sie unter Kontingente für Amazon Bedrock im Amazon-Bedrock-Benutzerhandbuch.

  • Wenn Sie einen garantierten und konsistenten Durchsatz benötigen, sollten Sie in Betracht ziehen, für das von Ihnen benötigte Modell bereitgestellten Durchsatz von Amazon Bedrock zu nutzen. Weitere Informationen finden Sie unter Erhöhen der Modellaufruf-Kapazität mit bereitgestelltem Durchsatz in Amazon Bedrock im Amazon-Bedrock-Benutzerhandbuch.

  • Bei Inferenzabfragen mit großen Datenmengen kann es zu Drosselungsausnahmen kommen. Dies liegt an den begrenzten Laufzeitkontingenten für Amazon Bedrock. Amazon Redshift versucht Anforderungen mehrmals erneut, doch Abfragen können dennoch gedrosselt werden, da der Durchsatz für nicht bereitgestellte Modelle variabel sein kann.

  • Wenn Sie auf Drosselungsausnahmen von Amazon Bedrock, wie z. B. Too many requests, please wait before trying again., auch bei kleinen Datenmengen stoßen, überprüfen Sie die Kontingente unter Service Quotas in Ihrem Amazon-Bedrock-Konto. Vergewissern Sie sich, dass das angewendete Kontingent auf Kontoebene mindestens dem AWS-Standardkontingentwert für die InvokeModel-Anfragen für das von Ihnen verwendete Modell entspricht.

Prompt-Engineering für die Integration von Amazon Redshift ML mit Amazon Bedrock

In diesem Abschnitt wird die Verwendung von statischen Prompts mit einem externen Modell erläutert.

Um statische Präfix- und Suffix-Prompts für Ihr externes Modell zu verwenden, geben Sie diese über die Parameter PROMPT und SUFFIX der Anweisung CREATE EXTERNAL MODEL an. Diese Prompts werden jeder Abfrage hinzugefügt, die das externe Modell verwendet.

Im folgenden Beispiel wird gezeigt, wie Sie einem externen Modell Präfix- und Suffix-Prompts hinzufügen:

CREATE EXTERNAL MODEL llm_claude FUNCTION llm_claude_func IAM_ROLE '<IAM role arn>' MODEL_TYPE BEDROCK SETTINGS ( MODEL_ID 'anthropic.claude-v2:1', PROMPT 'Summarize the following text:', SUFFIX 'Respond in an analytic tone');

Um dynamische Prompts zu verwenden, können Sie diese bei der Verwendung der Inferenzfunktion angeben, indem Sie sie in der Funktionseingabe verketten. Das folgende Beispiel veranschaulicht die Verwendung von dynamischen Prompts mit einer Inferenzfunktion:

SELECT llm_claude_func('Summarize the following review:' | input_text | 'The review should have formal tone.') FROM some_data