AI News HubLIVE
站内改写2 分鐘閱讀

如何使用 Chat SDK 和 AI SDK 為 Slack 構建 AI 智能體

本文詳細介紹如何使用 Chat SDK 和 AI SDK 為 Slack 構建一個 AI 驅動的智能體,包括項目搭建、工具定義、流式響應、部署到 Vercel 以及使用 toolpick 擴展工具集。

來源Hacker News AI作者: flashbrew

本文介紹如何使用 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 中實現實時流式傳輸。

實現步驟

  1. 創建 Next.js 項目並安裝依賴:npx create-next-app@latest my-slack-agent --typescript --app,然後安裝 chat、@chat-adapter/slack、@chat-adapter/state-redis、ai 和 zod。
  2. 在 Slack API 網站創建一個 Slack 應用,並配置事件訂閲和交互性 URL。
  3. 設置環境變量:SLACK_BOT_TOKEN、SLACK_SIGNING_SECRET、REDIS_URL、AI_GATEWAY_API_KEY。
  4. 定義工具(如 getWeather 和 searchDocs),每個工具包含描述、輸入模式和執行函數。
  5. 創建 ToolLoopAgent 實例和 Chat 實例,並註冊事件處理器:onNewMention 訂閲線程並流式響應;onSubscribedMessage 獲取完整線程歷史並傳遞給智能體。
  6. 創建 Webhook 路由:app/api/webhooks/[platform]/route.ts
  7. 本地測試:使用 ngrok 暴露服務器,更新 Slack 應用的請求 URL,在頻道中 @提及機器人進行測試。
  8. 部署到 Vercel:添加環境變量並部署,然後更新 Slack 應用的 URL 為生產地址。

故障排除

  • 機器不響應提及:檢查 Slack 應用是否具有 app_mentions:read 權限,以及事件訂閲 URL 是否正確。
  • 流式傳輸卡頓:確保 Redis 連接穩定,SDK 使用分佈式鎖管理併發消息。
  • 工具調用靜默失敗:在工具的執行函數中添加錯誤處理,並檢查服務器日誌。
  • 線程歷史過大:限制傳遞給智能體的消息數量,或對舊消息進行摘要。

擴展工具集

在生產環境中,Slack 智能體可能集成 15-30 個工具。toolpick 通過啓動時索引工具併為每一步選擇最相關的工具來解決這一問題,降低令牌成本並提高模型選擇工具的準確性。