Data Agent 是什麼:與 Chatbot / BI / Workflow 的差異
學習目標:判斷何時需要 Agent,區分自然語言介面與自主分析行動。
一位主管在對話框打「為什麼六月的轉換率掉了」,並期待一分鐘內得到一個可信、有來源的答案。固定的 BI dashboard 沒辦法回答開放式的追問;沒有資料存取能力的 chatbot 只能用猜的;排程好的 workflow 只能跑它原本被設計要跑的那份報表。Data Agent 介於三者之間:它用自然語言理解需求、規劃需要哪些資料與工具、在有限範圍內執行 read(有時也包含 write)動作,並附上證據回答。多出來的能力也代表多出來的風險,所以第一個設計決策不是「怎麼蓋這個 agent」,而是「這個需求真的需要 agent 嗎,還是 dashboard 或固定 workflow 更安全、也已經足夠」。
| 系統 | 能回答全新的問題嗎? | 能存取受控資料/工具嗎? | 典型風險 |
|---|---|---|---|
| Chatbot(無資料存取) | 聽起來流暢,但可能捏造數字 | 不能 | 自信地給出錯誤答案 |
| BI dashboard | 只能用預建的檢視/篩選 | 能,但範圍固定且事先核准 | 無法回答開放式問題 |
| 排程 workflow | 不能,每次都跑一樣的步驟 | 能,但範圍窄、只服務單一工作 | 不夠靈活,但安全且可稽核 |
| Data Agent | 能,依需求動態規劃 | 能,透過受控、有權限的工具 | 需要明確的驗證、權限與核准機制 |
import pandas as pd
# clean:本課程使用的受控分析沙盒的一份 read-only 查詢紀錄
df = pd.read_csv("DS302_Analytics_Package_Clean.csv", parse_dates=["event_time", "ingested_at"])
df.shape
df.dtypes
df[["run_id", "source_system", "batch_id", "metric", "value", "schema_version"]].head()
# 先問:這裡真的需要動態規劃的 agent 嗎,還是固定 dashboard 就能回答?
df["source_system"].unique()把 chatbot 直接接上資料
「直接把 chatbot 接上資料庫,讓它什麼都能答」。沒有人決定過哪些問題真的需要動態規劃、它可以呼叫哪些工具,以及一個可信的答案需要什麼證據。
有理由存在的 Data Agent
- 動態規劃的必要性
- 需求真的多樣到固定 dashboard 或 workflow 無法涵蓋。
- 受控存取
- Agent 只能透過明確、有權限的介面接觸資料/工具,而非未受限的原始存取。
- 可驗證的答案
- 每個答案都能追溯回特定的查詢、資料版本與定義。
- 問題的範圍幾乎每天都在變,新的問題無法用現有 dashboard 的篩選器拼出來。
- 需要在多個資料來源之間動態判斷該查哪一個,而不是永遠查同一張固定的表。
- 答案必須附上可追溯的查詢與資料版本,而不只是一個單獨的數字。
- 需要在執行前先徵求人工核准的分支邏輯,排程 workflow 本身無法表達這種條件判斷。
- 如果固定的 dashboard、報表或 workflow 已經能在可接受的時間內回答大多數問題,就不需要 agent;多加一層 agent 只會多一層風險,卻沒有對應的好處。
財務團隊每週都問「哪個 source system 的 batch 完成率最低」,但關心的欄位、期間與 source_system 清單幾乎每次都不同。固定 dashboard 需要為每一種組合預先建立檢視表,維護成本很高;這正是 Data Agent 動態規劃的典型情境,但仍必須給它窄範圍的 read-only 工具,而不是整個資料庫的存取權。
資訊
一個團隊想讓 chatbot 用一個沒有任何限制的通用 SQL 工具,回答任何關於正式資料庫的問題。這個計畫最根本缺少的是什麼?