阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

63 個專案實戰,寫出作品集,讓面試官眼前一亮!

立即開始免費試讀!

人工智慧領域正迅速從單一用途模式轉向智慧、自主的多智能體系統。然而,建構這些多智能體系統面臨新的挑戰。正因如此,我們在Google Cloud NEXT 2025推出了代理開發套件(ADK),這是 Google 推出的全新開源框架,旨在簡化智能體和多智能體系統的全端到端開發。 ADK 協助像您這樣的開發者建立具有更高靈活性和精確控制的生產級代理應用程式。

ADK 與 Google 產品(例如 Agentspace 和 Google 客戶互動套件 (CES))中的代理框架相同。透過開源 ADK,我們旨在為開發者提供強大且靈活的工具,幫助他們在快速發展的代理領域中進行建置。 ADK 的設計旨在實現靈活性,能夠使用不同的模型,並針對不同的部署環境建立可用於生產的代理程式。

ADK 的核心支柱:建置、互動、評估、部署

ADK 提供整個代理開發生命週期的功能:

  • 多代理設計:透過分層結構組合多個專用代理,建構模組化、可擴展的應用程式。支援複雜的協調和委託。

  • 豐富的模型生態系統:選擇最適合您需求的模型。 ADK 可與您選擇的模型相容——無論是 Gemini 還是任何可透過 Vertex AI Model Garden 存取的模型。該框架還提供 LiteLLM 集成,讓您可以從 Anthropic、Meta、Mistral AI、AI21 Labs 等眾多供應商的眾多模型中進行選擇!

  • 豐富的工俱生態系統:為代理程式配備多樣化的功能:使用預先建置的工具(搜尋、程式碼執行)、模型上下文協定 (MCP) 工具、整合第三方程式庫(LangChain、LlamaIndex),甚至使用其他代理程式作為工具(LangGraph、CrewAI 等)。

  • 內建串流:借助 ADK 獨特的雙向音訊和視訊串流功能,您可以與座席進行類似人類的對話。只需幾行程式碼,即可建立自然的交互,徹底改變您與座席的協作方式,超越文本,實現豐富的多模式對話。

  • 靈活的編排:使用工作流程代理( SequentialParallelLoop )定義可預測管道的工作流程,或利用 LLM 驅動的動態路由( LlmAgent傳輸)實現自適應行為。

  • 整合的開發者體驗:使用強大的 CLI 和視覺化的 Web UI 在本地進行開發、測試和偵錯。逐步檢查事件、狀態和代理執行情況。

  • 內建評估:透過評估最終響應品質和針對預定義測試案例的逐步執行軌跡,系統地評估代理效能。

  • 輕鬆部署:將您的代理程式容器化並部署到任何地方。

開始使用您的第一個代理

雖然我們鼓勵您探索文件中的範例,但其核心理念是 Python 式的簡潔。您可以定義代理的邏輯、可以使用的工具以及它應該如何處理資訊。 ADK 提供了用於管理狀態、協調工具呼叫以及與底層 LLM 互動的結構。以下是一個基本代理的說明性範例。

程式碼可以在快速入門指南中找到。

from google.adk.agents import LlmAgent
from google.adk.tools import google_Search

dice_agent = LlmAgent(
    model="gemini-2.0-flash-exp", # Required: Specify the LLM
    name="question_answer_agent", # Required: Unique agent name
    description="A helpful assistant agent that can answer questions.",
    instruction="""Respond to the query using google search""",
    tools=[google_search], # Provide an instance of the tool
)
# you can run this by using adk web

這個簡單的例子展示了基本結構。 ADK 在建立涉及多個代理、複雜工具使用和動態編排的更複雜應用程式時真正表現出色,同時保持控制力。

ADK 為您提供與代理程式互動的靈活性:CLI、Web UI、API 伺服器和 API (Python)。無論您選擇如何與代理交互,定義代理的方式( agent.py中的核心邏輯)都是相同的。差別在於您如何發起和管理互動。所有範例均可在ADK 文件中找到。

ADK 架構

使用 ADK 建立多代理應用程式

當您超越單代理模式,建立利用工具的協作式多代理系統時,ADK 的真正優勢就顯現出來了。想像一下,建立一個由專業代理組成的團隊,其中主要代理可以根據對話內容委派任務。 ADK 透過層級結構和智慧路由,讓這一切變得輕而易舉。

讓我們來看一個說明性範例WeatherAgent負責處理天氣查詢,但將問候委託給專門的 GreetingAgent。

1. 定義工具:代理程式使用工具來執行操作。例如,我們的WeatherAgent需要一個工具來取得天氣資料。我們定義一個 Python 函數;ADK 會使用其docstring來了解何時以及如何使用它。

def get_weather(city: str) -> Dict:

    # Best Practice: Log tool execution for easier debugging
    print(f"--- Tool: get_weather called for city: {city} ---")
    city_normalized = city.lower().replace(" ", "") # Basic input normalization

    # Mock weather data for simplicity (matching Step 1 structure)
    mock_weather_db = {
        "newyork": {"status": "success", "report": "The weather in New York is sunny with a temperature of 25°C."},
        "london": {"status": "success", "report": "It's cloudy in London with a temperature of 15°C."},
        "tokyo": {"status": "success", "report": "Tokyo is experiencing light rain and a temperature of 18°C."},
        "chicago": {"status": "success", "report": "The weather in Chicago is sunny with a temperature of 25°C."},
        "toronto": {"status": "success", "report": "It's partly cloudy in Toronto with a temperature of 30°C."},
        "chennai": {"status": "success", "report": "It's rainy in Chennai with a temperature of 15°C."},
 }

    # Best Practice: Handle potential errors gracefully within the tool
    if city_normalized in mock_weather_db:
        return mock_weather_db[city_normalized]
    else:
        return {"status": "error", "error_message": f"Sorry, I don't have weather information for '{city}'."}

2. 定義代理程式及其關係:我們使用LlmAgent建立代理。請密切注意指令和描述欄位——LLM 高度依賴這些欄位來理解角色,並使用自動委派功能為子代理程式做出委派決策。

greeting_agent = Agent(
         model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),
            name="greeting_agent",
            instruction="You are the Greeting Agent. Your ONLY task is to provide a friendly greeting to the user. " "Do not engage in any other conversation or tasks.",
            # Crucial for delegation: Clear description of capability
            description="Handles simple greetings and hellos",

 )

farewell_agent = Agent(
          model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),
            name="farewell_agent",
            instruction="You are the Farewell Agent. Your ONLY task is to provide a polite goodbye message. "
                        "Do not perform any other actions.",
            # Crucial for delegation: Clear description of capability
            description="Handles simple farewells and goodbyes",

 )

root_agent = Agent(
        name="weather_agent_v2", 
        model="gemini-2.0-flash-exp",
        description="You are the main Weather Agent, coordinating a team. - Your main task: Provide weather using the `get_weather` tool. Handle its 'status' response ('report' or 'error_message'). - Delegation Rules: - If the user gives a simple greeting (like 'Hi', 'Hello'), delegate to `greeting_agent`. - If the user gives a simple farewell (like 'Bye', 'See you'), delegate to `farewell_agent`. - Handle weather requests yourself using `get_weather`. - For other queries, state clearly if you cannot handle them.",
        tools=[get_weather], # Root agent still needs the weather tool
        sub_agents=[greeting_agent, farewell_agent]
)

授權如何運作:

  • 預設代理行為是允許委派。

  • 在處理使用者訊息時,LLM 會考慮查詢、目前代理的description以及相關代理(層次結構中定義的父/子代理)的description欄位。

  • 如果 LLM 根據其描述確定另一個代理程式更適合(例如,用戶說“嗨”,與GreetingAgent描述相匹配,它會啟動轉移。

  • 清晰、明確的描述至關重要! LLM 課程會用到它們來有效地安排任務。

在這個設定中,如果使用者以「Hi」開頭, WeatherAgent (如果它是處理輸入的根代理)可以辨識出這不是天氣查詢,並透過描述判斷GreetingAgent是否適用,並自動轉移控制權。如果用戶詢問“芝加哥的天氣怎麼樣?”, WeatherAgent會直接使用其get_weather工具進行處理。

此範例示範了 ADK 的層次結構和描述驅動的委派如何允許您建立有組織的、可維護的和複雜的多代理應用程式。

完成生命週期:評估與部署

建立像我們的天氣代理這樣的智慧代理是基礎,但要將它們可靠地交付給用戶,還需要關鍵的後續步驟:嚴格的評估和無縫部署。在上線之前,確保您的代理行為可預測且正確至關重要。 ADK 的整合評估工具正是為此而設計的,讓您可以系統地針對預定義資料集(例如evaluation.test.jsontest.json )測試執行路徑和回應品質。您可以使用AgentEvaluator.evaluate()在測試套件中以程式設計方式執行這些檢查。您也可以直接透過 ADK eval 命令列工具或 Web UI 進行評估。

一旦您對效能感到滿意,ADK 即可提供清晰流暢的生產路徑,您可以選擇部署到任何容器執行時,或使用其與 Vertex AI Agent Engine 的整合。這使您能夠利用完全託管、可擴展的企業級執行時,完成開發生命週期,並賦能您從複雜的原型過渡到強大且可立即投入生產的代理應用程式。

為您選擇框架:ADK 還是 Genkit?

在探索使用 ADK 建立多智能體系統的可能性時,您可能會想知道它如何融入 Google GenAI 開發工具的廣泛領域。雖然市面上有各種各樣的 SDK 和框架(例如Genkit 框架) ,但了解 ADK 的相對重點會很有幫助。以下是簡要比較:

代理開發套件:

  • 針對複雜代理和多代理系統進行了最佳化,它為代理開發提供了更高級別的抽象,並內建了 LiteLLM 和 Vertex AI Model Garden 的集成,支援各種模型。

  • 專注於定義代理行為和互動。

  • 支援雙向流。

基因套件:

  • 為建構各種 AI 驅動的體驗提供基本建構模組。

  • 包括用於迭代、測試和除錯 AI 相關互動的開發人員工具。

  • 透過社群插件支援來自 Google AI、Vertex AI 和第三方的各種大型語言模型。

選擇正確的工具

最終,最佳選擇取決於您專案的具體目標。如果您要在定義明確的框架內建立複雜的協作代理系統,ADK 提供了強大的解決方案。對於許多其他需要靈活性和廣泛模型支援的 GenAI 專案,Genkit 是一個絕佳的選擇。

ADK 可以在任何地方執行,但針對 Google Cloud 進行了最佳化

代理開發套件 (ADK) 不僅提供了與各種工具協同工作的靈活性,還針對與 Google Cloud 生態系統的無縫整合進行了最佳化,特別是與 Gemini 模型和 Vertex AI 的無縫整合。這種客製化設計使開發者能夠充分利用 Gemini 的高級功能,例如 Gemini 2.5 Pro Experimental 中增強的推理和工具使用能力,並提供了直接的原生途徑,將這些代理部署到 Vertex AI 完全託管的企業級執行時,以實現可擴展性。

至關重要的是,這種深度整合擴展到更廣泛的企業格局;ADK 使代理能夠透過 100 多個預先建置的連接器直接連接到系統和資料,利用使用應用程式整合建置的工作流程,並存取儲存在 AlloyDB、BigQuery 和 NetApp 等系統中的資料,而無需複製資料。

此外,使用 ADK 建置的代理程式可以安全地利用您組織透過 Apigee 管理的現有 API 投資,透過利用已建立的介面進一步增強其功能。

這種跨進階 AI 模型、可擴展部署、多樣化資料來源和現有 API 的全面連接使得 ADK 在 Google Cloud 環境中使用時變得異常強大。

使用 ADK 建立下一代代理

代理開發套件 (ADK) 為建立下一代 AI 應用程式提供了強大、靈活且開源的基礎。它透過以下方式應對多代理開發的核心挑戰:

  • 精確控制代理行為和編排。

  • 豐富的工具和整合生態系統

  • 用於建置和除錯的整合開發人員體驗

  • 對於可靠的代理人來說,強大的評估框架至關重要。

  • 清晰的部署路徑,包括託管選項。

我們非常高興看到您使用 ADK 建立的內容!

探索程式碼: 官方 ADK 文件


原文出處:https://dev.to/googleai/agent-development-kit-making-it-easy-to-build-multi-agent-applications-4594


共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。

阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

63 個專案實戰,寫出作品集,讓面試官眼前一亮!

立即開始免費試讀!