# AWS 生成式 AI 應用工作坊:Amazon Bedrock Workshop for FSI (金融服務行業) ## Workshop Lab Link >[!Tip] 提醒 >**建議瀏覽器:Firefox、Chrome** - workshop link: https://catalog.us-east-1.prod.workshops.aws/join?access-code=24d1-071f93-db ### [Option 1] 使用 AWS 練習環境 :::spoiler **操作步驟** 1. 進入課程提供的 AWS Workshop Studio 網址,並點擊 **「Email one-time password (OTP)」**,以獲得一次性臨時密碼。  2. 輸入**自己的 Email** 以用於接收一次性臨時密碼 ,並點擊 **「傳送密碼」**。  >[!Tip] 提醒 >**活動期間使用相同 Email 進行登入將會使用相同的練習環境** 3. 進入自己的 Email 以取得 **9 碼 Passcode**。  4. 將 9 碼 Passcode 填入,並點擊 **「登入」**。  5. 登入並進行環境使用要求條款後,請勾選 **「I agree with the Terms and Conditions」**,並點擊 **「Join event」**。  ==中間省略==  6. 點擊 **「Open AWS console」**,以開啟 AWS Management Console。  >[!Tip] 提醒 >**練習過程中,若 AWS Management Console 逾時登出,可再次點擊此連結以重新登入並更新憑證** 7. 進入 AWS Management Console 後,即完成登入。  ::: ### [Option 2] 通過 AWS Management Console Signin Console 登入 :::spoiler **操作步驟** 1. 進入 [AWS Management Console](https://console.aws.amazon.com/),並輸入 **Account ID / Alias** 及 Admin 的 **User Name** 及 **Password** 後,點擊 **「Sign in」** 登入。  2. 進入 AWS Management Console 後,即完成登入。  ::: ### [Option 3] 通過 AWS Identity Center 登入 (Optional) :::spoiler **操作步驟** 1. 進入 AWS Identity Center 登入網址,並輸入 **Username** 及 **Password**,完成後點擊 **「Sign in」**。  2. 登入後,選擇**對應 AWS Account 的 Admin 權限**後,點擊連結以登入。  3. 進入 AWS Management Console 後,即完成登入。  ::: --- ## 1. Anthropic Claude foundation model 的 prompt engineering 技巧分享 1. 確認區域為 **奧勒岡 (Oregon)**  2. 點擊 **齒輪** 可以更換為您習慣的語言  3. 進入 **Amazon Bedrock** 服務  4. 點擊 **模型存取權 (Model access)** 來啟用欲存取的 Foundation Models (FM)  5. 您可點擊 **Enable all models** 來啟用所有的 FMs 存取權限  >[!Tip] 提醒 >**此處選擇 Enable all models 為在 Workshop 中簡化操作目的,在您自己的 AWS 環境時,請按照您的實際需求選擇所需的 FMs** 6. 點擊 **範例 (Examples)** 可測試各種生成式應用情境  7. 選擇 **遊樂場 (Playground)** 可針對 FMs 進行快速的測試  - System Prompt: `你是專業的資深程式開發人員,你將協助使用者生成程式碼,並依據專業提供合適的程式碼及修改建議,所有對話都必須使用台灣中文進行對話。` - User Prompt: `請寫出一支 Python 程式,運作於 Lambda,當中須包含 putObject 及 getObject 的程式及示範呼叫。` - 參考資料: - Anthropic Claude Prompt Engineering: https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview - Mapping the Mind of a Large Language Model: https://www.anthropic.com/research/mapping-mind-language-model --- ## 2. Amazon Bedrock 的 RAG 實作:Knowledge Bases - Agents for Amazon Bedrock ### 2-1. 建立 S3 Bucket 以存放用於 RAG 的資料 1. 下載資料 (以法規文件為例),並將其解壓縮:https://aws.bardlan.com/a7w  2. 進入 **Amazon S3** 服務  3. 點擊 **建立儲存貯體 (Create bucket)**  4. 輸入 `genai-rag-documents-[Account_ID]` 作為儲存貯體名稱 (Bucket name),當中 `[Account_ID]` 請覆蓋成您所使用的 AWS Account ID。完成後請點擊 **建立儲存貯體 (Create bucket)**  >[!Tip] 提醒 >**S3 為物件儲存服務 (Object Storage),Bucket Name 亦可作為 URL,因此需全球唯一命名,不能與任何其他 S3 Bucket Name 重疊,此外 S3 需為全為小寫英文字及連字號組成。** 5. 將下載的檔案及目錄上傳至建立的 S3 Bucket 中。  >[!Tip] 提醒 >**請注意 Amazon Bedrock Knowledge Bases 尚不支援非英文組成的目錄,請勿使用非英文的目錄。檔名則不在此限 (可使用中文)。** --- ### 2-2. 建立 Knowledge Base 1. 進入 **Amazon Bedrock** 服務  2. 在左方導覽列 (如果沒有出現導覽列,可點擊右上方的漢堡圖示  展開),點擊 **知識庫 (Knowledge bases)** 來快速建立 RAG 應用  3. 在右方主視窗中,點擊 **建立知識庫 (Create knowledge base)**,並完成以下步驟 (未提及的參數設定可保留預設):  - *步驟 (1/4):* 提供知識庫詳細資訊 (Provide knowledge base details) - 知識庫名稱 (Knowledge base name):`regulation-document-semantic` - Data Source: `Amazon S3` - Log deliveries - Application logs: `可評估啟用以利 Troubleshooting` - *步驟 (2/4):* 設定資料來源 (Configure data source) - 資料來源名稱 (Data source name):`data-source-fsc` - S3 URI: `s3://genai-rag-documents-[Account-ID]` - Chunking and parsing configurations: `Custom` - Chunking and parsing configurations: `Claude 3 Sonnet v1` - Chunking strategy: `Semantic chunking` - Max token size for a chunk: `8192` - 進階設定 - Data deletion Policy: `Delete` - *步驟 (3/4):* 選取內嵌項目模型並設定向量存放區 (Select embeddings model and configure vector store) - 內嵌項目模型 (Embedding model): `Titan Text Embeddings v2` - 向量資料庫 (Vector database): `OpenSearch Serverless - recommend` - *步驟 (4/4)*: 檢閱並建立 (Review and create) - 點擊 **建立知識庫 (Create knowledge base)** >[!Tip] 提醒 >**此處約需 5~10 分鐘進行 Knowledge Base 環境部署** 4. 當環境建置完成,前往 **資料來源 (Data source)** 選擇 `data-source-fsc` 並點擊 **同步 (Sync)**  >[!Tip] 提醒 >**此處約需 10~15 分鐘進行資料向量處理** 5. 資料完成同步後,即可在右方聊天視窗進行知識庫測試 (在 **選取模型 (Select model)** 選擇 `Anthropic > Claude 3.5 Sonnet`): ``` 金融業上雲需要注意哪些事項? 保險業上雲需要注意哪些事項? 針對金融資安,主管機關有哪些要求? ``` :::spoiler **回應結果示範** - `金融業上雲需要注意哪些事項?`  - `保險業上雲需要注意哪些事項?`  >[!Tip] 提醒 > **此處回應若包含金融機構上雲應注意事項相關資料是合理的,因為大語言模型在訓練過程中,「保險業」與「金融機構」的是相近的詞彙**。 > **可通過 Prompt Engineering 來優化,或是結合篩選條件機制來利用標籤控制文件搜尋範圍。** - `針對金融資安,主管機關有哪些要求?`  ::: 6. 點擊以展開組態設定,來進行不同的嘗試:  - 篩選條件:`target = insurance` - `保險業上雲需要注意哪些事項?` - Break down queries: `checked` - `金融業上雲應該注意哪些事項?還有資安有哪些面向需要注意?並請提供這些事項具體在哪些條款 (第幾條第幾項第幾款)?` :::spoiler **回應結果示範** - `保險業上雲需要注意哪些事項?`  - `金融業上雲應該注意哪些事項?還有資安有哪些面向需要注意?並請提供這些事項具體在哪些條款 (第幾條第幾項第幾款)?`   ::: --- ### 2-3. 建立 Agent 1. 進入 **Amazon Bedrock** 服務  2. 點擊 **代理程式 (Agents)** 來快速建立 RAG 與 API 整合應用  3. 點擊 **建立代理程式 (Create Agent)**  - 名稱 (Name): `cloud-advisor` - 代理程式指示 (Agent Prompt): `你是金融上雲的諮詢專家,你將依據問題決定要查詢內部資料還是呼叫 API。除了上雲法規及諮詢問題、遷移申請及查詢申請狀態外,其他無關的問題請回答:「抱歉,我沒有這方面的知識」。所有的對答都需要使用台灣中文。` - 其他設定 (Additional settings) - 使用者輸入 (User input):`Enabled` - 上述完成後,先點擊 **儲存 (Save)** 以建立 Agent 4. 前往 **動作群組 (Action groups)** 並點擊 **新增 (Add)**  - 輸入動作群組名稱 (Enter Action group name):`cloud-application` - 描述 (Description):`處理上雲相關申請作業` - 動作群組類型 (Action group type): `使用函數詳細資訊進行定義` - 動作群組調用 (Action group invocation): `快速建立一個新的 Lambda 函數 - 建議值` - 動作群組函數 (Action group function) 1: - 名稱 (Name): `apply-cloud-migration` - 描述 (Description): `提供上雲遷移申請` - 參數 (Parameters): - 名稱 (Name): `cloud_provider` - 描述 (Description): `Cloud Provider` - 類型 (Type): `String` - 必要 (Required): `True` - 名稱 (Name): `department_name` - 描述 (Description): `Department Name` - 類型 (Type): `String` - 必要 (Required): `True` - 名稱 (Name): `service_required` - 描述 (Description): `Service Required` - 類型 (Type): `Array` - 必要 (Required): `True` - 名稱 (Name): `application_name` - 描述 (Description): `Application Name` - 類型 (Type): `String` - 必要 (Required): `True` - 名稱 (Name): `kickoff_date` - 描述 (Description): `Kickoff Date (YYYYMMDD)` - 類型 (Type): `String` - 必要 (Required): `True` - 動作群組函數 (Action group function) 2: - 名稱 (Name): `check-approval-status` - 描述 (Description): `查詢上雲遷移申請的核准狀態` - 參數 (Parameters): - 名稱 (Name): `department_name` - 描述 (Description): `Department Name` - 類型 (Type): `String` - 必要(Required): `True` - 名稱 (Name): `workload_name` - 描述 (Description): `Workload Name` - 類型 (Type): `String` - 必要(Required): `True` - 上述完成後請點擊 **建立 (Create)** 5. 前往 **知識庫 (Knowledge bases)** 並點擊 **新增 (Add)**  - 選取知識庫 (Select knowledge base):`regulation-document-semantic` - 代理程式的知識庫指示 (Knowledge base instructions for Agent):`查詢及回應有關金融業上雲的相關法規` - 完成後點擊 **Add** 6. 點擊 **儲存 (Save)** 以保存 Agent 相關設定 7. 前往 **Amazon Lambda** 服務  8. 點擊產生出的 Lambda function (函數): `函數名稱為 cloud-application 開頭`  9. 取代程式碼 **dummy_lambda.py** ``` import json def lambda_handler(event, context): agent = event['agent'] actionGroup = event['actionGroup'] function = event['function'] parameters = event.get('parameters', []) print(json.dumps(event)) responseText = "" match function: case "apply-cloud-migration": responseText = "The function {} was called successfully!".format(function) case "check-approval-status": responseText = "Your request is still under process." case _: pass # Execute your business logic here. For more information, refer to: https://docs.aws.amazon.com/bedrock/latest/userguide/agents-lambda.html responseBody = { "TEXT": { "body": responseText } } action_response = { 'actionGroup': actionGroup, 'function': function, 'functionResponse': { 'responseBody': responseBody } } dummy_function_response = {'response': action_response, 'messageVersion': event['messageVersion']} print("Response: {}".format(dummy_function_response)) return dummy_function_response ```  10. 完成後點擊  11. 回到 **Amazon Bedrock** 服務  12. 點擊 **代理程式 (Agent)**,並進入 `cloud-advisor`   13. 點擊 **在代理程式建置器中編輯 (Edit in Agent Builder)** > **準備 (Prepare)** 以進行 Agent 測試以下問題:  ``` 金融業上雲需要注意哪些事項? 我要申請系統上雲 我要查詢系統上雲申請狀態 我要請假 ``` :::spoiler **回應結果示範** - `金融業上雲需要注意哪些事項?`  - 點擊 **顯示追蹤 (Show trace)** 可查看推理細節  - `我要申請系統上雲`   - `我要請假`  ::: --- ## 3. AWS Sample: Bedrock Claude Chat - Reference Link: https://github.com/aws-samples/bedrock-claude-chat - Steps: https://hackmd.io/@dennisc/Sk3FCxdJkg ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up