AWS re:Invent 回顧

建構代理式 AI:Amazon Nova Act 與 Strands Agents 實務應用 (DEV327)

回顧系列

場次筆記

建構代理式 AI:Amazon Nova Act 與 Strands Agents 實務應用

簡介

  • 課程簡介:代理式 AI 已成為當前 AI 領域的關鍵主題
  • 目標對象是超越基礎理解、著眼於實際應用與創新的前瞻開發人員 代理式 AI 的未來趨勢
  • 生成式 AI 演進概觀,強調從低代理能力(規則型、高度人工監督)逐步發展至高代理能力(獨立運作、策略決策)
  • 認知目前代理式 AI 的發展階段,並強調若要提升代理自主程度,便需要先進技術、治理、信任及組織準備度 Sequoia Capital 的預測
  • Sequoia Capital 在 2025 年 AI 主題演講中展望了一個未來:AI 系統將超越工具般的屬性,演進成能自主運作的智慧代理程式。
  • 這些代理程式將具備推理、規劃、協作及高度自主運作的能力。
  • 2030 年代經濟願景
  • Sequoia Capital 預測,2030 年代的經濟,特別是在亞洲,將如同一個由眾多 AI 代理程式運作所組成的全球神經網路,形成彼此互連的網路。
  • 個人成功的可能性
  • 設計出獲得廣泛採用,尤其是在全球普及的 AI 代理程式,可能帶來可觀的個人財務成就,甚至有機會讓一個人變得極其富有。
  • 此預測的重要性
  • 這項預測對於引導開發人員,以及了解未來 AI 發展必須達成的目標至關重要。
  • 一人獨角獸的興起
  • Sequoia Capital 預測「一人獨角獸」將會興起,這類公司由單一個人建立及經營,估值達 10 億美元。
  • 此趨勢將使勞動結構發生轉變,並催生由一個人便能經營整間新創公司的新型組織模式。
  • 隨機性思維的必要性
  • AI 代理程式的世界要求開發人員採取新的思考方式,擺脫傳統對準確性的期待,轉而抱持更具隨機性的思維。
  • 這涉及調整開發人員連結及運用大型語言模型與 AI 技術的方式。
  • 為代理式 AI 新時代做好準備
  • 若要在代理式 AI 時代取得成功,不僅要做好技術準備,也必須調整心態與組織。
  • 開發人員必須準備好面對組織結構及思維框架的變化,才能在這個新時代蓬勃發展。
  • 2025 年代理式 AI 的基礎設施
  • MCP 和 A2A 等通訊協定正在開發中,以實現 AI 代理程式及其工具之間的互通性。
  • AWS 正積極參與 MCP 和 A2A 的標準委員會,貢獻數十年的分散式系統經驗,以強化這些未來的協定。
  • AWS 代理式 AI 產品組合
  • 由完整的架構組成,服務分為三層:
  • 基礎設施
  • AI 與代理程式開發軟體
  • 應用程式層
  • 聚焦於 AI 和代理程式開發軟體與服務,包括 Amazon Nova Act 和 Street Agents 等代理程式的 SDK。

代理式 AI 實務應用:本地天氣資訊

  • 實際 AI 代理程式情境示範:使用 MCP 協定、Amazon Nova Act 及香港天文台網站開發本地天氣資訊應用程式。
  • 本地天氣資訊代理程式
  • 使用 Amazon Bedrock 建置、由 Emerald 提供支援,並配有特定網站 URL(香港天文台)的 AI 代理程式。
  • 使用者可以使用自然語言(英文、西班牙文或中文)與代理程式互動,查詢香港目前的天氣。
  • 代理程式會自主在指定網站上找到資訊,並儲存螢幕擷取畫面供驗證,展現其如同真人網頁抓取工程師般運作的能力。
  • 對網頁抓取工程師的影響
  • 代理式 AI 時代已經來臨,可能衝擊傳統的網頁抓取職務。開發人員可能需要使用 Nova Act 等 AWS 服務,為這項轉變做好準備。
  • AI 代理程式的實作詳細資訊
  • Nova Act 預測函式會引導它應擷取哪些網頁,以及要執行哪些動作。
  • 使用自然語言指派任務,例如從香港天文台網站讀取並擷取 9 天天氣預報資訊。
  • 開發人員的抱負
  • 許多開發人員希望從頭建置自己的代理式 AI 應用程式,並保有原始碼層級的完整控制權。
  • 開放原始碼 strands agents 可協助達成此目標,讓開發人員控制每一行程式碼。
  • 建置自訂代理程式的挑戰
  • 開發人員需要能讓代理程式與各種企業系統互動的連接器。

自訂 AI 代理程式系統所需的元件

  • 工具和 MCP(訊息控制協定)對於讓代理程式執行預訂飯店、更新資訊或觸發程序等工作流程至關重要。
  • 記憶體:代理程式需要短期與長期記憶體。短期記憶體會維持工作階段內的情境,而長期記憶體則讓代理程式能隨時間學習及改善。
  • 大腦(大型語言模型):可使用 ReACT(推理、行動及共同溝通)、反思及思維鏈等技術,將 LLM 擴展至更複雜的框架,讓模型能夠逐步規劃、反思及推理。
  • 人格:每個代理程式都有一種人格,也就是一組定義其身分與行為的規則或指示,使它有別於其他類型的代理程式(例如 HR 代理程式與 DevOps 代理程式)。
  • 可觀測性與防護機制:自訂 AI 代理程式以提供可觀測性與防護機制,可確保它們維持安全、可討論,並與目標一致。
  • 建置功能完備之 AI 代理程式的挑戰
  • 建置真正功能完備的 AI 代理程式需要大量工作,其中可能有 80-90% 的心力與獨特的商業邏輯及流程無關。

AWS 解決方案:strands Agents

  • Strands Agents:由 AWS 貢獻的開放原始碼 SDK,讓開發人員能以極少的程式碼建置 AI 代理程式。它運用最先進的大型語言模型進行規劃、思維鏈,從而簡化開發。
  • 示範:使用 strands Agents 建立數學動畫
  • 使用 Manim 程式庫進行數學視覺化,並結合 Strands Agents 和 Python 程式庫。
  • 核心實作程式碼:
  • 從 Strands 模組匯入 Agent 類別,並匯入 MCPClient 類別,以建立在框架內使用代理程式和 MCP 所需的基本元件。
  • 使用 send_input 和 output 作為傳輸機制,設定與 Manim MCP 伺服器的連線。
  • 建立與 Manim MCP 伺服器互動的連線、擷取可用工具,並使用這些工具初始化代理程式。
  • 使用代理程式處理要求數學動畫的自然語言提示,具體而言是將 X 等於 -3 到 X 等於 3 的三次函數圖形視覺化。
  • 使用 Strands Agents SDK 進行數學視覺化
  • 在 Visual Studio 中,會使用兩個終端機視窗:
  • 左側視窗會執行 MCP(訊息控制協定)伺服器,透過 STDIO 傳輸連線至 Manim MCP 伺服器。
  • 右側視窗會執行 MCP 用戶端程式,啟動影片生成聊天介面。
  • 使用者可以透過介面輸入自然語言命令,例如建立一個場景,在 9 秒內繪製指定範圍的三次函數。
  • 代理程式會處理自然語言要求,並在發生問題時建立簡化版本來完成任務,展現適應性的問題解決能力。

多代理程式協作的優點

  • 專業化:專業代理程式在特定領域工作,可提高精準度並提供更準確的答案。結合這些代理程式可取得更優異的成果。
  • 擴展能力:系統可以新增或移除代理程式,而不影響整個系統,因此具備擴展能力。
  • 可維護性:與大型單體程式碼庫相比,較小的代理程式更容易控制、監控、偵錯及測試。
  • 成本效益:多代理程式系統可針對特定任務選擇適當的模型,兼顧智慧程度、速度及成本效益。
  • 類比:單一代理程式與多代理程式系統
  • 單一代理程式:如同一項獨自作業的專門技能。
  • 多代理程式系統:如同一支協調良好的團隊,由不同角色(分析師、量化分析師、交易員、風險經理、IT)共同合作,以取得更優異的績效。
  • 成功條件:協作
  • 若要讓多代理程式系統成功,代理程式必須有效地共同合作。
  • 多代理程式協作模式
  • 代理程式即工具:一個代理程式可以將另一個代理程式當成工具使用。
  • 圖形工作流程:代理程式可以連接成圖形結構,以執行複雜任務。
  • 協調器代理程式:協調器代理程式會接收使用者需求、了解意圖,並呼叫專業代理程式來執行特定任務。
  • 範例:旅遊規劃
  • 協調器代理程式:接收使用者的旅遊需求(例如前往 Las Vegas 旅遊)。
  • 研究代理程式:搜尋景點及活動(例如 antelope canyon)。
  • 產品推薦代理程式:根據研究代理程式的輸出提供建議。
  • 代理程式工作流程:一個代理程式的輸出會成為下一個代理程式的輸入,建立順暢的工作流程。

真實案例:量化避險基金

  • 量化方法對量化研究人員至關重要,可協助他們快速驗證交易構想,更快找到適當的交易策略。
  • 範例:使用移動平均線交叉策略時,研究人員可以輸入股票詳細資料(例如 Amazon)與回測時段,並取得損益及夏普比率等指標。
  • 系統會提供買進和賣出條件、回測結果,以及改善交易策略的建議,包括風險評估與警示。
  • 移動平均線交叉策略
  • 移動平均線 (MA) 交叉策略會在圖表上使用兩條 MA(一條快速短期線及一條慢速長期線)來產生買進與賣出訊號:當快速 MA 向上穿越慢速 MA(多頭趨勢)時,會出現買進訊號;當快速 MA 向下穿越慢速 MA(空頭趨勢)時,則會出現賣出訊號。
  • 運作方式
  • 設定:在價格圖表上繪製兩條週期不同的移動平均線(例如簡單移動平均線 (SMA) 或指數移動平均線 (EMA))。
  • 買進訊號(多頭):較短週期的 MA 向上穿越較長週期的 MA 時。
  • 賣出訊號(空頭):較短週期的 MA 向下穿越較長週期的 MA 時。
  • 常見 MA 組合
  • 短期:9 期 EMA/SMA。
  • 中期:21 期 EMA/SMA。
  • 長期:50 日、100 日或 200 日 MA(常用於主要趨勢)。
  • 主要交叉型態
  • 黃金交叉:50 日 MA 向上穿越 200 日 MA 的多頭訊號,表示可能出現強勁的上升趨勢。
  • 死亡交叉:50 日 MA 向下穿越 200 日 MA 的空頭訊號,表示可能出現下降趨勢。
  • 限制與改良
  • 落後指標:MA 以過去價格為基礎,因此交叉通常會在價格走勢已經開始後才發生,導致進場或出場過晚。
  • 震盪市場:在橫向或盤整市場中,此策略會產生許多錯誤訊號(反覆受挫)。
  • 架構圖
  • 協調代理程式(量化研究代理程式)會呼叫不同的工具和子代理程式。
  • 工具:市場資料工具及回測工具。
  • 子代理程式:策略生成代理程式及結果摘要代理程式。
  • Bedrock Core Agent Gateway
  • 將 API、Lambda 函數或現有服務封裝成與 MCP 相容的工具,為開發人員提供安全的代理程式工具建置方式。
  • 步驟
  • 使用 Lambda 函數將歷史市場資料儲存在 S3 table 中,並將其定義為閘道的目標。
  • 使用稱為 gateway create MCP gateway command 的代理程式建立閘道。
  • 將 Lambda 函數定義為閘道的目標。
  • 使用 Cognito 進行身分驗證,以確保安全存取。
  • 定義工具的輸入和輸出參數(例如 get market data)。

用於建置工具的 Agent Gateway

  • 使用 Agent RAM 託管策略生成代理程式,並讓它成為量化研究代理程式的工具。
  • 將 Gateway 整合為工具
  • 建立閘道後,可將它做成目前研究代理程式的工具。
  • 步驟:
  • 指定引數與回傳類型。
  • 使用 Cognito 進行身分驗證。
  • 使用 HTTP 用戶端呼叫閘道,以擷取用於回測的歷史市場資料。
  • 定義及部署策略生成代理程式
  • 部署策略生成代理程式,以提供安全且快速的代理程式託管方式。
  • 步驟:
  • 使用 strengths import agent 定義代理程式。
  • 指定使用 backtrader 框架生成交易策略程式碼的指示。
  • 將代理程式部署至執行階段。
  • 指定進入點,並在連接埠 8080 上執行代理程式。
  • 使用 agent call config 指定檔案和相依性。
  • 使用 agent call launch 啟動執行階段代理程式
  • 使用 agent get status 檢查其狀態
  • 將代理程式做成工具
  • 定義工具(市場資料工具)和策略生成代理程式後,將代理程式做成工具。
  • 步驟:
  • 生成交易策略。
  • 指定引數(例如買進和賣出條件)。
  • 叫用代理程式。
  • 協調器代理程式(量化研究代理程式)
  • 協調器代理程式會協調工具和代理程式。
  • 步驟:
  • 匯入代理程式。
  • 定義量化研究代理程式的系統提示,使其取得歷史市場資料、生成策略、執行回測並分析結果。
  • 使用「代理程式即工具」模式整合四項工具:
  • 市場資料、
  • 生成策略、
  • 執行回測、
  • 建立結果摘要。
  • 如果發生問題,量化研究代理程式將重新學習結果。

Kiro CLI

  • 使用 Kiro CLI 執行命令,這對偵錯很有幫助,因為它能快速驗證輸出。
  • 使用 Kiro CLI 執行 Quant Agent
  • Kiro CLI 用於執行 quant agent,並運用 tool execute patch,以及指定 10 天期簡單移動平均線交叉 30 天期簡單移動平均線策略的 JSON 檔案。
  • 代理程式約在 6 秒內生成交易策略。
  • 接著,代理程式會透過 HTTP 要求從閘道擷取市場資料。
  • 會擷取約 200 個資料點以進行回測。
  • 使用 backtrader 框架執行回測。
  • 輸出包含初始價值、利潤、總報酬,以及改善交易策略的建議。
  • 回測結果會儲存在稱為 memory 的代理程式中,並在最後一步從該處擷取。

群集模式

  • 與「代理程式即工具」模式不同,群集模式涉及代理程式在沒有單一協調器的情況下,動態地溝通及協作。
  • 群集會維護所有代理程式皆可存取的共用情境,其中包括其他代理程式、輸入、輸出及歷史互動的相關資訊。
  • 匯入 Swarm 類別,並以交接次數上限及重複交接偵測來定義四個代理程式,以防止無限迴圈。
  • 「重複交接」是指在不同個人、團隊、系統或網路存取點之間,頻繁且不必要地轉移任務或責任。
  • 範例:
  • 使用四個代理程式撰寫部落格:
  • 研究代理程式:進行研究。
  • 創意代理程式:建立內容。
  • 批判代理程式:質疑所建立的內容。
  • 摘要代理程式:彙整最終結果。
  • 群集模式的主要元件
  • 共用情境:所有代理程式皆可存取共用情境。
  • 動態協作:代理程式在沒有中央協調器的情況下進行溝通及協作。
  • 交接限制:設定互動次數上限和重複交接偵測,以防止無限迴圈。
  • 不同代理程式的參與:確保最後一次交接至少有三個不同的代理程式參與,以維持多樣性並避免重複互動。
  • 群集模式實際運作
  • 任務:建立一篇說明代理式 AI 的部落格文章,以及社群媒體貼文摘要。
  • 工作流程:
  • 研究代理程式:收集必要的資訊和事實。
  • 創意代理程式:建立引人入勝的部落格文章。
  • 摘要代理程式:生成社群媒體摘要。
  • 反覆程序:摘要代理程式會向創意代理程式要求更多詳細資訊,以建立有效的摘要。
  • 最終輸出:摘要代理程式在 5 次互動後,成功建立部落格文章和社群媒體摘要。
  • 將群集作為工具
  • 群集模式可用作較大型框架中的工具。
  • 範例:匯入群集工具,使用一組代理程式分析或執行任務。

圖形模式

  • 將代理程式關係定義為圖形網路,其中每個代理程式都是節點,邊則定義關係及資訊流。
  • 主要優點:
  • 可預測性:明確定義代理程式之間的通訊路徑。
  • 控制:完整控制資訊流。
  • 示範
  • 先定義代理程式,以確立其在圖形中的角色和互動。
  • 範例:代理式基金經理
  • 定義投資組合架構師代理程式將如何建構投資組合。
  • 定義基金經理代理程式將如何根據建構出的投資組合管理基金。
  • 投資組合架構師代理程式:建構投資組合以滿足客戶需求。根據投資組合架構師代理程式建構的投資組合管理基金。
  • 在圖形模式中定義節點與邊
  • 在圖形中,會定義節點以觸發特定動作或部署代理程式。
  • 範例:
  • 定義將呼叫代理程式的投資組合節點。
  • 步驟:
  • 定義狀態圖形,然後輸入狀態圖形。
  • 新增財務、投資組合及風險節點。
  • 定義從財務到投資組合、從投資組合到風險的邊,並以風險作為終點節點。

工作流程模式

  • 工作流程是定義明確的任務順序或模式。
  • 範例:定義研究代理程式、分析代理程式及報告代理程式的順序。
  • 步驟:
  • 匯入工作流程工具。
  • 定義任務及其相依性(例如,報告生成相依於趨勢分析)。
  • 設定優先順序,以決定平行子代理程式的執行順序。
  • 工作流程模式使用案例
  • 適用於需要封裝成單一可靠工具的複雜且可重複程序。
  • 範例:
  • 涉及資料擷取、轉換 (ETL) 及載入資料倉儲的自動化資料管線。

多代理程式協作模式的使用案例範例

代理程式即工具

  • 客戶服務聊天機器人:協調式代理程式呼叫技術客戶經理、競標代理程式及摘要代理程式,為客戶提供輸出。
  • 群集模式:
  • 多領域事件回應:代理程式在本地互動,無須集中控制即可產生複雜的突現行為。範例:網路問題會傳遞給網路代理程式,若有必要,再傳遞給資料庫代理程式。
  • 圖形模式:
  • 具錯誤路徑的資料驗證:定義一個圖形,讓代理程式判斷是否存在錯誤,接著傳遞至無錯誤的資料驗證,或具有錯誤路徑的資料代理程式。
  • 工作流程模式:
  • 定義明確且具有相依性和優先順序的任務順序,以維持受控的資訊流及執行順序。