如何使用 Chat SDK 和 AI SDK 為 Slack 構建 AI 智慧體
本文詳細介紹如何使用 Chat SDK 和 AI SDK 為 Slack 構建一個 AI 驅動的智慧體,包括專案搭建、工具定義、流式響應、部署到 Vercel 以及使用 toolpick 擴充套件工具集。
本文介紹如何使用 Chat SDK 和 AI SDK 在 Slack 中構建一個 AI 驅動的智慧體。該智慧體能夠響應提及、維護對話歷史,並自主呼叫工具。Chat SDK 負責平臺整合(如 Webhook、訊息格式、執行緒跟蹤),而 AI SDK 的 ToolLoopAgent 管理推理迴圈,使智慧體能夠呼叫工具並根據結果採取行動。結合 Vercel AI Gateway 和 Redis,你可以獲得一個生產就緒的 Slack 智慧體,無需管理基礎設施或切換多個提供商 SDK。
工作原理
Chat SDK 是一個統一的 TypeScript SDK,用於在 Slack、Teams、Discord 等平臺上構建聊天機器人。你註冊事件處理器(如 onNewMention 和 onSubscribedMessage),SDK 將傳入的 Webhook 路由到這些處理器。Slack 介面卡處理 Webhook 驗證、訊息解析和 Slack API。Redis 狀態介面卡跟蹤機器人訂閱的執行緒,並透過分散式鎖管理併發訊息。
AI SDK 的 ToolLoopAgent 將語言模型與工具封裝在一起,執行一個自主迴圈:模型生成文本或呼叫工具,SDK 執行工具,將結果反饋給模型,重複直到模型完成。當你在 Vercel 上託管應用程式時,AI SDK 會自動透過 AI Gateway 路由請求。
Chat SDK 接受任何 AsyncIterable 作為訊息,因此你可以將 agent.fullStream 直接傳遞給 thread.post(),在 Slack 中實現即時流式傳輸。
實現步驟
- 建立 Next.js 專案並安裝依賴:
npx create-next-app@latest my-slack-agent --typescript --app,然後安裝 chat、@chat-adapter/slack、@chat-adapter/state-redis、ai 和 zod。 - 在 Slack API 網站建立一個 Slack 應用,並配置事件訂閱和互動性 URL。
- 設定環境變數:SLACK_BOT_TOKEN、SLACK_SIGNING_SECRET、REDIS_URL、AI_GATEWAY_API_KEY。
- 定義工具(如 getWeather 和 searchDocs),每個工具包含描述、輸入模式和執行函式。
- 建立 ToolLoopAgent 例項和 Chat 例項,並註冊事件處理器:onNewMention 訂閱執行緒並流式響應;onSubscribedMessage 獲取完整執行緒歷史並傳遞給智慧體。
- 建立 Webhook 路由:
app/api/webhooks/[platform]/route.ts。 - 本地測試:使用 ngrok 暴露伺服器,更新 Slack 應用的請求 URL,在頻道中 @提及機器人進行測試。
- 部署到 Vercel:新增環境變數並部署,然後更新 Slack 應用的 URL 為生產地址。
故障排除
- 機器不響應提及:檢查 Slack 應用是否具有 app_mentions:read 許可權,以及事件訂閱 URL 是否正確。
- 流式傳輸卡頓:確保 Redis 連線穩定,SDK 使用分散式鎖管理併發訊息。
- 工具呼叫靜默失敗:在工具的執行函式中新增錯誤處理,並檢查伺服器日誌。
- 執行緒歷史過大:限制傳遞給智慧體的訊息數量,或對舊訊息進行摘要。
擴充套件工具集
在生產環境中,Slack 智慧體可能整合 15-30 個工具。toolpick 透過啟動時索引工具併為每一步選擇最相關的工具來解決這一問題,降低令牌成本並提高模型選擇工具的準確性。