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 通过启动时索引工具并为每一步选择最相关的工具来解决这一问题,降低令牌成本并提高模型选择工具的准确性。