在第一篇 ADK 完整指南的文章中,我們介紹 Travel Concierge 的多代理架構,包括 Root Agent 的控制轉移機制、專職子代理的職責劃分,以及最下層代理的職責限制與輸出控制。這篇文章將著重探討 Travel Concierge 的核心技術特色,並且聚焦於自定義工具的實現和狀態管理系統。
Contact Us
Proven Experience Across Diverse Industries
Jul 02
在第一篇 ADK 完整指南的文章中,我們介紹 Travel Concierge 的多代理架構,包括 Root Agent 的控制轉移機制、專職子代理的職責劃分,以及最下層代理的職責限制與輸出控制。這篇文章將著重探討 Travel Concierge 的核心技術特色,並且聚焦於自定義工具的實現和狀態管理系統。
ADK 內建多項實用工具,可直接應用於各類常見情境。例如透過內建的驗證工具,簡化與外部 API 的串接流程,方便與外部 API 整合:
透過這些內建工具,開發者能更輕鬆處理常見功能,專注於核心業務邏輯的開發。
當 ADK 提供的工具不足以滿足特定需求時,開發者可以透過 google.adk.tools 的 ToolContext 製作符合需求的工具。Travel Concierge 的記憶系統就是自定義工具的一個典型應用。
ToolContext 是 ADK 中用於自定義工具的關鍵類別,它賦予工具存取系統狀態的能力。在 Travel Concierge 中,記憶系統正是透過 ToolContext 自行實現狀態的讀寫功能:
在這個例子中,tool_context.state 提供對系統共享狀態的存取能力,使工具能夠:
甚至實現更進階的記憶操作,例如列表型記憶:
以及記憶刪除:
這些操作展示了如何透過 ToolContext 實現靈活的狀態管理,以支援系統的長期記憶需求。
Travel Concierge 的 Root Agent 可以自定義一個 _load_precreated_itinerary 回調函數。在每次 agent callback 之前執行,這個 callback 函數必須為 CallbackContext 類別。
CallbackContext 是一個重要的上下文類別,允許開發者在代理生命週期的關鍵節點執行自定義邏輯。以下將詳細說明 _load_precreated_itinerary 回調函數的實作內容:
這個回調函數在 Root Agent 啟動前執行,透過 callback_context.state 初始化系統狀態。進一步觀察 _set_initial_states 函數:
這個函數展示了如何:
透過 CallbackContext,開發者可以在代理執行前後插入自定義邏輯,實現更靈活的控制。
在 Travel Concierge 中,狀態共享是實現代理協作的關鍵機制。狀態的讀寫透過 ToolContext 和 CallbackContext 來完成,並且可以透過自定義常量對狀態鍵進行統一管理。
Travel Concierge 使用專門的常量檔案來集中管理所有狀態鍵,提升程式碼的可維護性與一致性。以下為 travel_concierge/shared_librabies/constants.py 的實作範例:
以上這些常數,在 root agent 的 before_agent_callback 中時常被 load_precreated_itinerary 作為鍵值使用。
記憶系統的真正價值體現在與 prompt 的緊密結合。在 planning_agent 的 prompt 中,我們可以看到記憶系統是如何被用來協助完成任務的:
這個 prompt 指導代理:
這種配合使得記憶系統能夠有效支持代理的任務執行,確保必要的資訊被正確存儲和使用。
在設計和實現類似 Travel Concierge 的記憶系統時,有幾點值得注意:
在 Travel Concierge 的記憶函數中,包含基本的錯誤處理:
這種防禦性編程避免了可能的運行時錯誤,提高系統的穩定性。
對於生產系統,狀態的持久化是一個重要考慮。Travel Concierge 的示例提到可能的擴展方向:
在這個例子中,我們使用 session states 作為 concierge 的記憶,儲存行程、中介代理/工具/使用者偏好回應。在現實應用情境中,使用者設定檔的來源應為外部資料庫,且工具寫入 session states 的對應寫入也應作為寫透(write-through)儲存至專用於使用者設定檔和行程的外部資料庫中。
這種方法可以確保系統狀態在不同會話間保持,提供更連續的用戶體驗。
Travel Concierge 的記憶系統展示 Google ADK 中自定義工具與狀態管理的強大能力。這篇文章我們主要介紹五大核心技術:
這些技術讓 Travel Concierge 能夠在多代理架構中完成複雜的狀態管理,從旅行靈感到行程規劃,從機票預訂到旅途中的智能服務,都能一手包辦。透過掌握這些技術,開發者可以構建更複雜、更智能的代理系統,為用戶提供更貼心、更高效的服務體驗。
Contact CloudMile
Contact Us
Proven Experience Across Diverse Industries
Phone Number
Reason for Inquiry
Electrum Advisory
MileInfra - Cloud Infrastructure Modernization
Enterprise Technical Training
MileSec - Multi-Cloud Security and Operations
MileData - Cloud Data Management and Automation
MileOps - Hybrid and Multi-Cloud Operations
MileAI - Generative AI Applications and Innovation
LumiTure.ai AI-Powered FinOps Platform
Other
Confirm and Return
If you wish to unsubscribe, please click: Unsubscribe from Newsletter
Confirm and Return
Confirm and Return