Amazon Redshift ML 與 Amazon Bedrock 整合 - Amazon Redshift

Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章

Amazon Redshift ML 與 Amazon Bedrock 整合

本節說明如何使用 Amazon Redshift ML 與 Amazon Bedrock 整合。透過此功能即可使用 SQL 調用 Amazon Bedrock 模型,而且您可以使用 Amazon Redshift 資料倉儲中的自有資料來建置生成式 AI 應用程式,例如文字產生、情緒分析或翻譯。

建立或更新 Amazon Redshift ML 與 Amazon Bedrock 整合的 IAM 角色

本節示範如何建立 IAM 角色,以搭配 Amazon Redshift ML 與 Amazon Bedrock 整合使用。

將下列政策新增至您搭配 Amazon Redshift ML 與 Amazon Bedrock 整合使用的 IAM 角色:

  • AmazonBedrockFullAccess

若要允許 Amazon Redshift 擔任與其他服務互動的角色,請將下列信任政策新增至 IAM 角色:

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

如果叢集或命名空間位於 VPC 中,請依照 針對 Amazon Redshift ML 管理進行叢集和組態設定 中的指示進行。

如果您需要更嚴格的政策,您可以建立僅包含以下頁面中所指定 Amazon Bedrock 許可的政策:

如需有關建立 IAM 角色的詳細資訊,請參閱《AWS Identity and Access Management 使用者指南》中的建立 IAM 角色

為 Amazon Redshift ML 與 Amazon Bedrock 整合建立外部模型

本節說明如何建立外部模型,以作為 Amazon Redshift 資料倉儲內 Amazon Bedrock 的介面。

若要從 Amazon Redshift 調用 Amazon Bedrock 模型,您必須先執行 CREATE EXTERNAL MODEL 命令。此命令會在資料庫中建立外部模型物件,以及相關聯的使用者函式,供您使用 Amazon Bedrock 產生文字內容時使用。

下列程式碼範例顯示基本 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:');

CREATE EXTERNAL MODEL 命令與 Amazon Bedrock 之間有整合一致的介面,適用於支援訊息的所有基礎模型 (FM)。這是使用 CREATE EXTERNAL MODEL 命令或明確指定 UNIFIED 為請求類型時的預設選項。如需詳細資訊,請參閱 Amazon Bedrock API 文件中的 Converse API 文件

如果 FM 不支援訊息,則您必須將 request_type 設定設為 RAW,如下列範例所示。當您將 request_type 設定為 RAW 時,您必須在根據選取的 FM 使用推論函式時,建構傳送至 Amazon Bedrock 的請求。執行下列範例之前,請務必在 Amazon Bedrock 中啟用 Titan Text G1 - Express 模型的存取權。

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);

如果您需要輸入請求 (例如字符總數) 的詳細資訊,您可以在建立模型時請求 RESPONSE_TYPEsuper

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);

CREATE EXTERNAL MODEL 命令的 PROMPT 參數是靜態提示。如果您的應用程式需要動態提示,則您必須在使用推論函式時指定提示。如需詳細資訊,請參閱Amazon Redshift ML 與 Amazon Bedrock 整合的提示工程

如需有關 CREATE EXTERNAL MODEL 陳述式及其參數和設定的詳細資訊,請參閱 CREATE EXTERNAL MODEL

針對 Amazon Redshift ML 與 Amazon Bedrock 整合使用外部模型

本節說明如何調用外部模型來產生文字,以回應提供的提示。若要調用外部模型,請使用您透過 CREATE EXTERNAL MODEL 建立的推論函式。

使用 UNIFIED 請求類型模型進行推論

請求類型為 UNIFIED 之模型的推論函式包有下列三個參數,這些參數會依序傳遞至函式:

  • 輸入文字 (必要):此參數指定 Amazon Redshift 傳遞至 Amazon Bedrock 的輸入文字。

  • 推論組態其他模型請求欄位 (選用):Amazon Redshift 會將這些參數傳遞至 Converse 模型 API 的對應參數。

下列程式碼範例示範如何使用 UNIFIED 類型推論函式:

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

使用 RAW 請求類型模型進行推論

請求類型為 RAW 之模型的推論函式只有一個資料類型為 SUPER 的參數。此參數的語法取決於使用的 Amazon Bedrock 模型。

下列程式碼範例示範如何使用 RAW 類型推論函式:

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

推論函式作為僅限領導函式

當使用推論函式的查詢未參考任何資料表時,Amazon Bedrock 模型的推論函式可以作為僅限領導節點函式執行。如果您想要快速向 LLM 提出問題,這種方式會很有幫助。

下列程式碼範例示範如何使用僅限領導推論函式:

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

推論函式使用須知

使用推論函式搭配 Amazon Redshift ML 與 Amazon Bedrock 整合時,請注意下列事項:

  • 所有 Amazon Bedrock 模型的參數名稱均區分大小寫。如果您的參數與模型所需的參數不符,Amazon Bedrock 可能會將其忽略而不顯示任何通知。

  • 推論查詢的輸送量受限於 Amazon Bedrock 在不同區域中所提供不同模型的執行時期配額。如需詳細資訊,請參閱《Amazon Bedrock 使用者指南》中的 Amazon Bedrock 的配額

  • 如果您需要有保證且一致的輸送量,請考慮從 Amazon Bedrock 為所需模型取得佈建輸送量。如需詳細資訊,請參閱《Amazon Bedrock 使用者指南》中的在 Amazon Bedrock 中使用佈建輸送量增加模型調用容量

  • 具有大量資料的推論查詢可能會遇到限流例外狀況。這是因為 Amazon Bedrock 的執行時期配額有限。Amazon Redshift 會多次重試請求,但查詢仍會受到限流,因為非佈建模型的輸送量可能有所不同。

  • 如果即使只有小量資料,您仍遇到來自 Amazon Bedrock 的限流例外狀況 (例如 Too many requests, please wait before trying again.),請在 Amazon Bedrock 帳戶中的 Service Quotas 下查看配額。檢查套用的帳戶層級配額是否至少與您使用之模型的 InvokeModel 請求的 AWS 預設配額值相同。

Amazon Redshift ML 與 Amazon Bedrock 整合的提示工程

本節說明如何搭配外部模型使用靜態提示。

若要在外部模型中使用靜態字首和字尾提示,請使用 CREATE EXTERNAL MODEL 陳述式的 PROMPTSUFFIX 參數提供提示。這些提示會新增至每個使用外部模型的查詢。

下列範例示範如何將字首和字尾提示新增至外部模型:

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');

若要使用動態提示,您可以在使用推論函式時,藉由在函式輸入中串連提示的方式來提供。下列範例示範如何搭配推論函式使用動態提示:

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