iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
生成式 AI

Multi-Agent 實戰:開發多代理智慧小幫手系列 第 23

【Day 23】 小專案 - 交通查詢 Agent(下)

  • 分享至 

  • xImage
  •  

上篇我們已經完成了 交通查詢 API
這篇要進一步把它改寫成能被 Root Agent 呼叫的 Sub-Agent。

改為 Agent

首先,我們要將原本的 FastAPI 函式,改成 可被 ADK 調用的 Agent。

匯入模組與建立模擬資料庫

from fastapi import HTTPException
from google.adk.agents import Agent
from . import prompt

# 模擬交通資料
TRANSPORT_DATABASE = {
    ("Taipei", "Kaohsiung"): ["高鐵", "飛機", "客運公車"],
    ("Taipei", "Taichung"): ["高鐵", "客運公車"],
    ("Taipei", "Tokyo"): ["飛機"],
    ("Tokyo", "Kyoto"): ["新幹線", "飛機"],
}

這個模擬資料庫紀錄了幾個從「出發地 → 目的地」之間可行的交通方式。
例如:從台北到高雄有「高鐵、飛機、客運公車」。

建立工具函式(Tool Function)

把原本的 FastAPI API 改寫成一個「可被 Agent 調用的函式」。

def query_transport(request: dict) -> dict:
    """
    呼叫交通查詢 Agent
    功能:
      - 模擬交通方式
      - 根據起點與終點回傳可行交通方式
    """
    try:
        start = request.get("start", "").strip()
        end = request.get("end", "").strip()

        if not start or not end:
            raise ValueError("Both start and end locations are required.")

        routes = TRANSPORT_DATABASE.get((start, end), [])

        if not routes:
            return {
                "status": "error",
                "message": f"No transport information found from '{start}' to '{end}'."
            }

        return {"status": "success", "start": start, "end": end, "routes": routes}

    except Exception as e:
        raise HTTPException(status_code=500, detail=f"An error occurred: {e}")

這個函式會從輸入中取出 startend,再去資料庫查詢對應的交通方式,最後回傳結果。

包裝 Sub-Agent

transport_agent = Agent(
    name="transport_agent",
    model="gemini-2.5-flash",
    description=prompt.TRANSPORT_AGENT_DESCRIPTION,
    instruction=prompt.TRANSPORT_AGENT_INSTRUCTION,
    tools=[query_transport],
)

這樣,我們就把工具函式包裝成一個可由 Root Agent 調用的 Sub-Agent。
當使用者問:
「我想從 Taipei 去 Kaohsiung,有哪些交通方式?」
Root Agent 就會自動呼叫 transport_agent 來查詢結果。

簡易prompt

  • description

    TRANSPORT_AGENT_DESCRIPTION = """
    This is a transport query sub-agent that suggests available transportation methods between two locations.
    """
    

    讓模型知道這支 Agent 的功能就是查詢交通方式。

  • instruction

    TRANSPORT_AGENT_INSTRUCTION = """
    You are a transport query agent responsible for finding available transport options. 
    
    Your responsibilities:
    - Accept a start and an end as input.
    - Return all possible transportation methods (e.g., airplane, high-speed rail, bus).
    - If no transport options exist in the database, return an error message.
    
    Provide clear and concise transport options.
    """
    

    prompt 內容概述:

    1. 輸入要求

      • 接收兩個參數:start(出發地)、end(目的地)。
    2. 執行邏輯

      • 從內部資料庫找出對應的交通方式。
      • 若無資料,回傳錯誤訊息。
    3. 語氣與風格

      • 回答需簡潔、清楚。
      • 不需要額外解釋,只列出交通方式即可。

上一篇
【Day 22】 小專案 - 交通查詢 Agent(上)
系列文
Multi-Agent 實戰:開發多代理智慧小幫手23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言