💡 核心發現
Anthropic 最新發布的技術指南改變了 AI 代理工具使用的方式,將 Token 使用量從 150,000+ 降低到 2,000,減少了 98%。
本文以政府採購法保證金計算為實際案例,說明傳統 MCP 工具呼叫與新型程式碼執行方法的差異,並探討這項突破對政府 AI 平台的影響。
問題背景:AI 代理的 Token 耗用危機
政府採購案例場景
假設您正在為政府機關開發一個「採購保證金自動審核系統」,需要處理以下任務:
🏛️ 實際業務需求
- 查詢政府採購法相關條文(第 30 條保證金規定)
- 搜尋「押標金保證金暨其他擔保作業辦法」的具體比例
- 從採購資料庫中篩選符合條件的標案(例如:工程採購金額 ≥ 5,000 萬元)
- 計算每個標案的履約保證金(不得超過契約金額 10%)
- 生成審核報告並標記異常案件
傳統 MCP 工具呼叫的困境
使用傳統的 MCP (Model Context Protocol) 工具呼叫方式時,AI 代理會遇到以下問題:
- Token 開銷爆炸:所有工具定義(法律查詢工具、資料庫工具、計算工具、報告生成工具)都必須預先載入到上下文視窗中,可能消耗數萬 Token。
- 中間結果傳遞:每次工具呼叫的結果都要通過上下文視窗傳回模型,例如查詢到 1,000 筆標案資料,全部流經模型處理。
- 反覆往返延遲:搜尋 → 篩選 → 計算 → 報告,每個步驟都是獨立的工具呼叫,需要多次 API 往返。
- 政府採購法第 30 條:機關得於招標文件中規定押標金及履約保證金
- 押標金保證金暨其他擔保作業辦法第 15 條:履約保證金最高不得超過預算金額或契約金額的 10%
- 公告金額(2025 年適用):工程、財物及勞務採購為新臺幣 150 萬元
- 查核金額(2025 年適用):工程及財物採購為 5,000 萬元;勞務採購為 1,000 萬元
資料來源:全國法規資料庫、行政院公共工程委員會(驗證日期:2025-11-09)
傳統方法 vs 程式碼執行:實際對比
❌ 傳統 MCP 工具呼叫方式
以下是傳統方法的實作流程:
// 傳統方式 - 每個步驟都是獨立工具呼叫
// 步驟 1:查詢法律條文(工具呼叫 1)
const lawArticle = agent.call_tool("query_law_database", {
"law": "政府採購法",
"article": "30"
});
// 返回:完整法條內容(約 500 Token)流經上下文視窗
// 步驟 2:查詢保證金比例規定(工具呼叫 2)
const bondRatio = agent.call_tool("query_regulation", {
"regulation": "押標金保證金暨其他擔保作業辦法",
"article": "15"
});
// 返回:完整條文(約 300 Token)流經上下文視窗
// 步驟 3:搜尋標案資料(工具呼叫 3)
const procurements = agent.call_tool("search_procurement_db", {
"type": "工程採購",
"min_amount": 50000000, // 5,000 萬元
"status": "已決標"
});
// 返回:1,000 筆標案資料(每筆包含標案名稱、金額、廠商等)
// 約 50,000 Token 全部流經上下文視窗
// 步驟 4:篩選需審核案件(工具呼叫 4)
const filtered = agent.call_tool("filter_procurement", {
"data": procurements, // 將 50,000 Token 資料再傳一次
"condition": "保證金 > 契約金額 * 0.1"
});
// 篩選後資料(約 10,000 Token)再次流經上下文視窗
// 步驟 5:生成審核報告(工具呼叫 5)
const report = agent.call_tool("generate_report", {
"data": filtered
});
// 報告內容(約 5,000 Token)流經上下文視窗
// 總計:5 次工具呼叫,約 65,800 Token 消耗
// 延遲:5 次 API 往返,每次約 2-3 秒,總計 10-15 秒
⚠️ 問題分析
- Token 浪費:1,000 筆原始資料全部流經模型,但最終只需要 50 筆異常案件
- 成本高昂:65,800 Token × 每千 Token 成本 = 大量 API 費用
- 延遲嚴重:5 次往返共需 10-15 秒,使用者體驗差
- 擴展困難:若要增加更多審核項目(例如檢查押標金、保固保證金),Token 消耗會線性增長
✅ 新型程式碼執行方式
Anthropic 的程式碼執行方法將 MCP 伺服器視為程式碼 API,代理撰寫程式碼在執行環境中處理資料:
// 程式碼執行方式 - 單次執行,所有處理在環境內完成
import { lawDatabase, procurementDB, reportGenerator } from 'mcp-servers';
async function auditProcurementBonds() {
// 步驟 1:查詢法律規定(在執行環境內,不經過模型上下文)
const bondRule = await lawDatabase.query({
regulation: "押標金保證金暨其他擔保作業辦法",
article: "15"
});
const maxRatio = 0.1; // 從條文中解析:不得超過 10%
// 步驟 2:搜尋標案(1,000 筆資料停留在執行環境,不流經模型)
const allProcurements = await procurementDB.search({
type: "工程採購",
minAmount: 50000000,
status: "已決標"
});
// 步驟 3:在執行環境內篩選(所有運算在這裡完成)
const violations = allProcurements.filter(p => {
const bondRatio = p.performanceBond / p.contractAmount;
return bondRatio > maxRatio;
});
// 步驟 4:在執行環境內生成統計摘要
const summary = {
totalCases: allProcurements.length,
violationCases: violations.length,
violationRate: (violations.length / allProcurements.length * 100).toFixed(2) + '%',
topViolations: violations
.sort((a, b) => (b.performanceBond / b.contractAmount) - (a.performanceBond / a.contractAmount))
.slice(0, 10)
.map(p => ({
name: p.projectName,
amount: p.contractAmount,
bond: p.performanceBond,
ratio: (p.performanceBond / p.contractAmount * 100).toFixed(2) + '%',
excess: p.performanceBond - (p.contractAmount * maxRatio)
}))
};
// 只有這個小型摘要物件返回給模型(約 500 Token)
return summary;
}
// 代理收到的結果範例:
// {
// totalCases: 1000,
// violationCases: 50,
// violationRate: "5.00%",
// topViolations: [
// {
// name: "某市政府道路拓寬工程",
// amount: 80000000,
// bond: 12000000,
// ratio: "15.00%",
// excess: 4000000
// },
// // ... 其他 9 筆
// ]
// }
// 總計:1 次程式碼執行,約 500 Token 返回給模型
// 延遲:單次執行約 1-2 秒
✅ 優勢分析
- Token 效率:從 65,800 降到 500 Token,減少 99.2%
- 成本大降:API 費用降低超過 99%
- 速度提升:從 10-15 秒降到 1-2 秒,提升 5-10 倍
- 易於擴展:新增審核項目只需在程式碼中增加邏輯,不會增加 Token 消耗
- 隱私保護:敏感採購資料(廠商名稱、詳細金額)從不流經模型上下文
對比總結:兩種方法的關鍵差異
| 比較項目 | 傳統 MCP 工具呼叫 | 程式碼執行方式 |
|---|---|---|
| Token 消耗 | 65,800 Token | 500 Token(減少 99.2%) |
| 執行時間 | 10-15 秒(5 次往返) | 1-2 秒(單次執行) |
| 中間資料 | 全部流經模型上下文(50,000+ Token) | 停留在執行環境,不流經模型 |
| 隱私保護 | 所有資料可見於模型上下文 | 僅摘要結果可見,原始資料受保護 |
| 擴展性 | 新增功能會增加 Token 消耗 | 程式碼邏輯可複雜化,Token 消耗穩定 |
| 錯誤處理 | 需多次工具呼叫重試 | 原生程式碼 try-catch,更靈活 |
| 成本(假設) | 約 $0.20 / 次(以 Claude Sonnet 計價) | 約 $0.002 / 次(減少 99%) |
七大核心優勢詳解
1. 巨量 Token 效率提升
從 150,000 Token 降到 2,000 Token(原文案例)或從 65,800 降到 500(本案例),意味著:
- API 成本降低 98-99%
- 可處理更複雜的任務而不超出上下文限制
- 能夠存取更多工具而不擔心 Token 爆炸
2. 漸進式工具發現
代理可以「按需探索」可用工具,而非一開始就載入所有工具定義:
// 代理可以先搜尋需要的工具
const tools = await searchTools("政府採購相關");
// 只載入相關的 3-5 個工具,而非全部 50 個工具
3. 環境內資料處理
在採購案例中,1,000 筆標案資料從不離開執行環境,直到篩選為 10 筆重點案件才返回模型。這解決了「大資料集通過小管道」的瓶頸。
4. 更佳的控制流程
使用原生程式設計結構(迴圈、條件判斷、錯誤處理)比鏈接 50 次工具呼叫更直觀且高效:
// 傳統方式:需要 50 次工具呼叫
for (let i = 0; i < 50; i++) {
result = await agent.call_tool("process_case", {caseId: i});
}
// 程式碼執行:單次執行內處理 50 個案件
const results = cases.map(c => processCase(c));
5. 隱私優勢
🔒 政府資料隱私至關重要
在採購審核場景中,敏感資料包括:
- 投標廠商名稱與聯絡資訊
- 詳細預算金額與保證金數字
- 評選委員意見與評分
程式碼執行方式確保這些資料只在安全的執行環境中流動,僅將「發現 50 筆異常案件」的統計摘要返回模型。
6. 狀態持久化
代理可以將中間結果儲存到檔案,實現長時間執行的任務:
// 處理 10,000 筆標案,分批儲存進度
for (let batch = 0; batch < 10; batch++) {
const results = processBatch(batch);
await saveToFile(`audit_batch_${batch}.json`, results);
}
// 即使會話中斷,下次可以從檔案恢復
7. 可重用技能庫
隨著時間推移,「計算採購保證金」這類複雜操作可以封裝為高階函式:
// 未來可以直接呼叫
const audit = await auditProcurementBonds({
type: "工程採購",
threshold: 50000000
});
Anthropic 建議用 SKILL.MD 檔案記錄這些技能,讓代理參考自己的過往工作。
何時應該使用程式碼執行方式?
✅ 最適合的場景
- 存取大量工具:當代理需要連接數十個服務(法規資料庫、採購系統、會計系統等),傳統方法會崩潰。
- 複雜工作流程:多步驟流程涉及資料轉換、篩選、聚合(如本文採購審核案例)。
- 生產級應用:大規模運行的代理系統,成本和延遲改善會帶來巨大價值。
- 長時間執行任務:需要狀態持久化或跨會話任務(例如:每日自動審核所有政府標案)。
- 隱私敏感場景:政府、金融、醫療等領域,不希望原始資料流經外部 API。
⚠️ 不需要的場景
對於簡單代理(3-5 個工具,簡單工作流程),傳統 MCP 工具呼叫仍然有效且更簡單。例如:
- 單純查詢一筆資料並返回
- 簡單的 CRUD 操作
- 不涉及大量中間資料處理
實施建議與技術路徑
步驟 1:理解 MCP 協定
Model Context Protocol (MCP) 是 Anthropic 定義的標準,讓 AI 代理能統一存取各種資料來源與工具。您需要:
- 閱讀 MCP 官方文件
- 了解如何將現有 API 封裝為 MCP 伺服器
- 熟悉 MCP 伺服器的安全沙箱環境
步驟 2:設計程式碼 API 介面
將您的 MCP 伺服器轉換為可程式設計介面:
// 不是這樣(工具呼叫):
{
"name": "query_procurement",
"description": "查詢採購標案",
"parameters": {...}
}
// 而是這樣(程式碼 API):
import { procurementDB } from 'mcp-procurement-server';
const results = await procurementDB.query({
type: "工程採購",
minAmount: 50000000
});
步驟 3:建立安全執行環境
🔐 安全性至關重要
程式碼執行方式需要:
- 沙箱隔離:防止代理撰寫的程式碼存取不該存取的資源
- 資源限制:CPU、記憶體、執行時間上限
- 監控與稽核:記錄所有程式碼執行與資料存取
- 權限控制:基於角色的存取控制(RBAC)
對於政府級應用,建議使用:
- Docker 容器隔離
- Firecracker microVM(AWS Lambda 使用的技術)
- 或專用的程式碼執行平台(如 E2B、Modal)
步驟 4:實施漸進式遷移
不必一次性重寫所有系統,可以混合使用:
- 簡單查詢仍用傳統 MCP 工具呼叫
- 複雜工作流程改用程式碼執行
- 逐步將高頻使用的複雜操作封裝為可重用技能
政府 AI 平台的啟示
對於政府級 AI 平台開發團隊(如教育部、僑委會、工程會等單位),這項技術突破帶來以下機會:
🏛️ 政府應用價值
- 成本可控:大規模部署時,Token 成本降低 98% 意味著預算可以覆蓋更多業務場景
- 符合法規:資料不離開執行環境,更易符合《個人資料保護法》與《政府資訊公開法》
- 審計友善:所有程式碼執行可記錄與稽核,滿足政府內控要求
- 長期維運:可重用技能庫降低維護成本,新進人員易於理解與擴展
- 跨機關複用:「採購審核」技能可分享給其他政府單位使用
結論:從實驗到生產的關鍵一步
Anthropic 的程式碼執行方法不僅是技術優化,更是 AI 代理從「玩具原型」邁向「生產級系統」的關鍵轉折點。
當 Token 成本降低 98%、延遲減少 80%、隱私保護增強時,AI 代理才能真正進入政府、金融、醫療等高要求領域。
🎯 行動建議
如果您正在開發政府 AI 平台或企業級 AI 應用:
- 評估現有系統的 Token 消耗與成本
- 識別「大量中間資料處理」的工作流程(如本文採購審核案例)
- 優先將這些工作流程改為程式碼執行方式
- 建立安全的沙箱執行環境
- 逐步積累可重用技能庫
- 與法務、資安團隊合作確保合規性
這不是「未來的技術」,而是「現在就能實施」的方法。Anthropic 已經提供了完整的技術指南,剩下的是我們根據實際業務需求進行適配與優化。
在政府採購法的案例中,我們看到了這項技術的威力。下一步,是將這項技術應用到更多政府業務場景中。