本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
陳述式的 PROMPT
和 SUFFIX
參數提供它們。這些提示會使用外部模型新增至每個查詢。
下列範例示範如何將字首和尾碼提示新增至外部模型:
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