\ 當您結合 AI 代理、模型上下文協議(MCP)和無伺服器運算時,會發生一些非常有趣的事情。我們不只是在談論能夠調用幾個 API 的更智能聊天機器人;我們正在構建能夠真正理解您是誰、您被允許做什麼,以及能夠在不違反安全規則或干擾其他用戶的情況下跨不同公司系統工作的 AI 系統。
傳統 AI 應用程式面臨一個基本問題:當 AI 代理需要代表不同用戶訪問多個服務時,如何維護用戶上下文和權限?大多數實現要麼犧牲安全性(通過使用共享憑證),要麼犧牲用戶體驗(通過要求持續重新認證)。
解決方案在於一種複雜的 JWT 傳播模式,該模式在整個請求鏈中維護用戶身份:
\ 這創建了一個安全的信任鏈,用戶身份永遠不會從 AI 回應中推斷,而是始終通過加密方式驗證。
將 MCP 視為將 AI 從籠子中解放出來。您現在可以創建更小、更專業的 AI 服務,它們彼此交談,而不是構建一個試圖做所有事情的大型 AI 應用程式。MCP 讓您的 AI 能夠即時發現和使用新工具,即使這些工具位於完全不同的伺服器上,而不是硬編碼 AI 可能需要的每個可能工具。
關鍵見解是將工具視為微服務而非嵌入式功能。每個 MCP 伺服器成為一個特定領域的智能中心,可以服務多個代理,同時維護自己的安全性和業務邏輯。
\
// MCP 工具自動變得用戶感知 export async function getTravelPolicies(userId, userRole) { // 政策執行發生在工具層面 return policies.filter(p => p.appliesToRole(userRole)); }
\
無伺服器運算解決了 AI 代理的三個關鍵挑戰:
1. 設計上無狀態:每次調用都是全新開始,消除了用戶和請求之間的狀態污染。
2. 自動擴展:無需容量規劃即可處理並發用戶—當 AI 代理可能觸發複雜工具鏈時至關重要。
3. 成本效益:只為實際推理和工具執行時間付費,而非閒置容量。
架構變得優雅簡單:
傳統網絡應用程式在記憶體或資料庫中維護會話狀態。AI 代理需要不同的方法,因為它們的"狀態"包括對話歷史、工具結果和學習上下文—可能是數 GB 的數據。
使用 Strands SDK 將其外部化到 S3 創造了令人著迷的可能性:
# 代理狀態變得可移植且可分析 session_manager = S3SessionManager( bucket="agent-sessions", key_prefix=f"user/{user_id}/conversations/" ) # 狀態可以共享、分析或遷移 agent = StrandsAgent.from_session(session_manager)
這啟用了代理之間的對話交接、審計跟蹤,甚至 AI 到 AI 協作模式等功能。
構建旅行代理示例揭示了幾個不明顯的模式:
工具組合:MCP 伺服器可以調用其他 MCP 伺服器,創建工具層次結構。預訂工具可能按順序調用政策工具、定價工具和可用性工具。
故障隔離:當一個 MCP 伺服器失敗時,其他伺服器繼續工作。代理優雅地降級功能而不是完全失敗。
動態授權:用戶權限可以在對話中途更改。JWT 刷新模式確保工具始終使用當前權限運行。
這種架構模式遠遠超出旅行預訂。考慮:
MCP 和無伺服器的結合正在實現一類新的 AI 應用程式,它們是:
我們正在從"可以使用工具的 AI"轉向"可以協調分佈式業務流程,同時維護完美安全性和用戶上下文的 AI"。
未來不僅僅是更智能的聊天機器人;而是能夠安全地在企業應用程式的全部範圍內運行的智能系統,每個用戶都擁有自己的個性化、安全且具有上下文感知的 AI 助手。
\


