# Amazon Bedrock Workshop for FSI (5. Flows) ## 目錄 - [實驗環境準備](https://hackmd.io/@6g-86IJuRWiQ17aprBneGQ/HkjF3MBcge) - [1. Amazon Bedrock Foundation Model 使用概覽](https://hackmd.io/@6g-86IJuRWiQ17aprBneGQ/B1PFXXHcex) - [2. Amazon Bedrock Knowledge Bases (Vector Store) for RAG](https://hackmd.io/@6g-86IJuRWiQ17aprBneGQ/ByyeB7r5eg) - [3. Amazon Bedrock Knowledge Bases (Vector Store) for GraphRag](https://hackmd.io/@6g-86IJuRWiQ17aprBneGQ/HJmVw7S9gl) - [4. Amazon Bedrock Agents](https://hackmd.io/@6g-86IJuRWiQ17aprBneGQ/HJe4D7Bcxl) - [5. Amazon Bedrock Flows](#5-Amazon-Bedrock-Flows) - [5-1. 建立 Flow](#5-1-建立-Flow) - [5-2. 設計 Flow](#5-2-設計-Flow) - [5-3. 測試 Flow](#5-3-測試-Flow) - [6. Amazon Bedrock Guardrails](https://hackmd.io/@6g-86IJuRWiQ17aprBneGQ/SJ0XvmH5lx) - [其他相關參考資料](https://hackmd.io/@6g-86IJuRWiQ17aprBneGQ/B1Dw5XBclg) --- ## 5. Amazon Bedrock Flows ### 5-1. 建立 Flow 1. 進入 **Amazon Bedrock** 服務 ![圖片](https://hackmd.io/_uploads/S1YeGJiJyl.png) 2. 點擊 **流程 (Flow)** ![image](https://hackmd.io/_uploads/BkH6YDLcee.png =100x) 3. 點擊 **建立流程** ![圖片](https://hackmd.io/_uploads/BJmpU3dhyg.png) 4. 輸入以下參數,完成後點擊 **建立流程** - 名稱:`chatbot-flow` - 服務角色名稱: `建立並使用新的服務角色` ![image](https://hackmd.io/_uploads/SJEZ9v85xl.png =500x) [**[ ⤴️ 回到目錄]**](#目錄) --- ### 5-2. 設計 Flow 接下來,我們將進行 Chatbot 的流程建立,流程設計將利用大語言模型辨別客戶發問的問題,來評估是否要幫助客戶重新定義問題: ![圖片](https://hackmd.io/_uploads/ryYp92dnyg.png) 成品預計呈現如下: ![圖片](https://hackmd.io/_uploads/rJnHO2O3yg.png) 1. 移除 **Prompts** 與 **Flow output** 之間的線 ![image](https://hackmd.io/_uploads/HyXE2DL9gx.png =600x) 2. 設定該 **提示 (Prompts)** 節點的設定如下: - 節點名稱: `rewrite_evalution` - 選擇 `在節點中定義` - 選取模型 `Anthropic > Claude Sonnet 4 v1` - 訊息: ``` 你是一位金融上雲諮詢助手,專門為用戶提供以下服務: <services> - 解答有關金融上雲法規的問題 - 處理上雲遷移申請 - 查詢上雲遷移申請狀態 </services> 你將仔細理解問題,並按照所提供的服務進行問題完整度的評估,並選擇該問題最合適的定義 (只選一個),回應時只需要回應定義,禁止提供任何評論 <question> {{user_question}} </question> <definition> more_info_required: 問題相當模糊或與服務範圍無關,建議用戶提供更完整的資訊 rewrite_required: 問題在服務範圍內,但不夠清晰與明確,需要近一步修飾成更具體的問題 qualified_question: 問題很明確,且符合在服務範圍 </definition> <response> [ONE of definition] </response> ``` - 完成示意 ![image](https://hackmd.io/_uploads/B1ckaPU9ex.png =500x) 3. 加入 **條件 (Condition)** 節點於畫布中,並調整以下設定: - 節點名稱:`rewrite_condition` - 輸入名稱:`definition` - 條件1: - 名稱: `qualified_question` - 條件:`definition == "qualified_question"` - 條件2: - 名稱: `rewrite_required` - 條件:`definition == "rewrite_required"` - 完成後將 **Prompts** *rewrite_evalution* 接上 **Condition** *rewrite_condition* ![圖片](https://hackmd.io/_uploads/rJnp1TOnJg.png =500x) 4. 加入 **代理程式 (Agent)** 節點於畫布中,並調整以下設定: - 節點名稱:`cloud_advisor` - 代理程式:`cloud-advisor` - 代理程式別名:`AgentTestAlias` - 關閉 *promptAttributes* 及 *sessionAttributes* 的 `啟用選用輸入` - 完成後將 **Condition** *rewrite_condition* 中 *qualified_question* 接上 **Agents** *cloud_advisor*,並且將 **Flow input** 接入 **Agents** *cloud_advisor* 的 input: ![圖片](https://hackmd.io/_uploads/H1O4d6unkg.png =500x) 5. 將 **Agents** *cloud_advisor* 接入 **Flow output**,並調整 **Flow output** 設定: - 節點名稱:`agent_reply` ![圖片](https://hackmd.io/_uploads/Bk_UdpO3kl.png =500x) 6. 加入 **提示 (Prompt)** 節點於畫布中,並調整以下設定: - 節點名稱:`rewrite_generation` - 選擇 `在節點中定義` - 選取模型 `Anthropic > Claude Sonnet 4 v1` - 訊息: ``` 你將仔細理解及評估用戶提出的問題,並依循服務範圍及規則評估,並進行用戶問題的優化及重寫,回應時只需要重寫問題,禁止提供任何評論 <question> {{user_question}} </question> <services> - 解答有關金融上雲法規的問題 - 處理上雲遷移申請 - 查詢上雲遷移申請狀態 </services> <rules> - 仔細理解客戶的問題,並思考調整策略及做法,並協助重新撰寫更清晰具體且完整的問題 - 所有的對話內容都必須使用台灣中文 </rules> <response> [重寫問題] </response> ``` - 完成後將 **Condition** *rewrite_condition* 中 *rewrite_generation* 接上 **Prompt** *rewrite_generation*,並且將 **Flow input** 接入 **Prompts** *rewrite_generation* 的 input: ![圖片](https://hackmd.io/_uploads/rJgqOTdhkx.png =500x) 7. 加入 **代理程式 (Agent)** 節點於畫布中,並調整以下設定: - 節點名稱:`rewrite_cloud_advisor` - 代理程式:`cloud-advisor` - 代理程式別名:`AgentTestAlias` - 關閉 *promptAttributes* 及 *sessionAttributes* 的 `啟用選用輸入` - 完成後將 **Prompts** *rewrite_generation* 接上 **Agents** *rewrite_cloud_advisor*,並且將 **Prompts** 接入 **Agents** *cloud_advisor* 的 input: ![圖片](https://hackmd.io/_uploads/Hk3pO6O2Jg.png =500x) 8. 加入 **流程輸出 (Flow output)** 節點於畫布中,並調整以下設定: - 節點名稱:`agent_reply_with_rewrite` - 將 **Agents** *rewrite_cloud_advisor* 接入 **Flow output** *agent_reply_with_rewrite* ![圖片](https://hackmd.io/_uploads/rybgK6dhJe.png =500x) 9. 加入 **流程輸出 (Flow output)** 節點於畫布中,並調整以下設定: - 節點名稱:`unknown_question` - 將 **Condition** *rewrite_condition* 接入 **Flow output** *unknown_question*,並且將 **Prompts** 接入 **Flow output** *unknown_question* 的 input: ![圖片](https://hackmd.io/_uploads/rkUMKpdnJe.png =500x) 10. 以上步驟完成後,按下上方的 ![圖片](https://hackmd.io/_uploads/SkCtUaO31x.png =50x) [**[ ⤴️ 回到目錄]**](#目錄) --- ### 5-3. 測試 Flow 1. 於右方測試框進行 Flow 測試 ![圖片](https://hackmd.io/_uploads/BJL_vad3kx.png) ``` 嗨 金融上雲的法規? 保險業者上雲需要注意哪些事項? ``` :::spoiler **回應結果示範** 嗨 ![圖片](https://hackmd.io/_uploads/S1cDK6O2Jg.png) 金融上雲的法規? ![image](https://hackmd.io/_uploads/BkKNlOUcex.png) 保險業者上雲需要注意哪些事項? ![圖片](https://hackmd.io/_uploads/BJDY9pOnJg.png) ::: ---