Amazon Redshift ML 與 Amazon Bedrock 整合 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon Redshift ML 與 Amazon Bedrock 整合

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

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

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

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

  • AmazonBedrockFullAccess

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

{ "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 的請求。

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

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

使用外部模型與 Amazon Bedrock 進行 Amazon Redshift ML 整合

本節說明如何叫用外部模型來產生文字以回應提供的提示。若要叫用外部模型,請使用您透過 建立的推論函數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 使用者指南 中的 Quotas for Amazon Bedrock

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

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

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