主题
把一个 agent 集成到 Slack
把 LangSmith Fleet 连到你的 Slack 工作区,让你的 agent 作为团队能直接 @ 的 Slack 机器人工作。
Fleet 把任何 agent 变成一个你的团队能在频道里 @ 或直接发消息的 Slack 队友。这个机器人就是那个 agent,而不是它前面的一个中继:它带着 agent 自己的指令、工具和权限运行。每个 agent 都能有它自己的 Slack 应用,所以单个 Slack 工作区能运行和你 agent 数量一样多的 Slack 机器人:一个做支持分诊、一个盯着值班轮转、一个钻研调研。
选择一条设置路径
LangSmith Cloud
连接一次 Slack,然后一键给任何 agent 添加一个 Slack 应用。
Self-hosted
配置一个 Slack OAuth 提供商,然后为每个 agent 创建一个自定义 Slack 应用。
设置完成后,见:
- 在你的 agent 中于 Slack 使用:把机器人邀请到一个频道、@ 它,并响应审批。
- 添加 Slack 工具:让一个 agent 无论以何种方式被触发都能向 Slack 发消息。
- 故障排除:修复一个不响应或拒绝被 @ 的机器人。
agent 在 Slack 中能做什么
一旦连接,agent 就能:
- 从频道里的一次 @、一条直接消息,或一个群组直接消息启动一次运行。
- 在它被 @ 的线程中回复。
- 读取线程和频道历史以获取上下文。
- 读取它所收到消息上的文件附件。
- 在一个敏感工具上暂停,并在 Slack 中收集你的审批。
每个 agent 恰好映射到一个 Slack 应用。
WARNING
AI 生成的内容:Slack 中 agent 的所有响应都由 AI 生成,可能包含错误或不当之处。务必核实重要信息。
在 LangSmith Cloud 上设置 Slack
在 LangSmith Cloud 上,Fleet 为你创建并安装每个 agent 的 Slack 应用。连接一次 Slack,然后一键给任何 agent 添加一个 Slack 应用。
前提条件
- Fleet 中一个现有的 agent。要创建一个,见快速开始。
- 一个你能安装应用 Slack 工作区。
步骤 1. 连接 Fleet Slack 管理器
Fleet Slack 应用充当你的工作区的一个管理器。单个连接授予两样东西:
- Slack 工具访问:一个 bot 用来发消息、读取频道和线程历史,以及发送直接消息所需的 bot 作用域。
- 应用管理:让 Fleet 能为一个 agent 创建一个专属 Slack 应用、并代表你在你的工作区中安装它的作用域,这正是使一键部署成为可能的东西。
要连接,在 Fleet 中打开 Integrations 页面,搜索 Slack,并在 Slack 卡片上点击 Connect。Fleet 也会在你首次给一个 agent 添加 Slack 应用时内联地运行这个连接,所以你可以直接跳到步骤 2,在提示时授权。
NOTE
当你工作区中有人首次连接时,Slack 可能把请求路由给一个 Slack 工作区管理员。当管理员审阅它时,他们要么:
- 允许 Fleet 安装应用:此后工作区中的任何人都能从一个 Fleet 创建 Slack agent 而无需另一次审批。
- 对每个应用要求审批:Fleet 创建的每个 Slack agent 在安装前都需要一次单独的 admin 审批。
如果你的工作区要求逐应用审批,遵循添加一个需要 admin 审批的应用。
步骤 2. 给一个 agent 添加一个 Slack 应用
Add Slack to the agent
Confirm the install
Fleet 创建一个以你的 agent 命名的 Slack 应用,用它的描述和图标,并在你的工作区中安装它。然后这个机器人会给你发一条直接消息,附上把它邀请到频道并 @ 它的提示。
要确认应用已连接,在 agent 的配置侧边栏中展开 Channels 抽屉。一个活跃的 Slack 频道会显示 Active 状态。
添加一个需要 admin 审批的应用
如果你的 Slack 工作区要求一个 admin 审批每个应用,Fleet 会把新应用保存为草稿而非安装它。完成设置要两轮:
- 在待处理的 Slack 行上点击 Finish setup。Slack 会打开一个窗口,你在其中点击 Request 把该应用发送给你的工作区 admin。
- admin 批准之后,返回 Fleet 并再次点击 Finish setup。Fleet 会安装该应用并激活频道。
在 Self-hosted 上设置 Slack
自托管部署不使用 Fleet Slack 管理器。取而代之,为实例一次性配置一个 Slack OAuth 提供商,然后从 Fleet 生成的一份清单为每个 agent 创建一个自定义 Slack 应用。
步骤 1. 设置 Slack OAuth 提供商
在 agent 能用 Slack 之前,每个自托管实例都需要这一次性设置。它为你的 agent 启用 Slack 工具并打开 Slack 渠道,这正是让你在步骤 2 中添加自定义应用的东西。
Configure Helm
选一个提供商 ID,例如 slack-oauth-provider。把它添加到你的 langsmith_config.yaml,连同持有你 OAuth 提供商的组织,然后部署:
yaml
fleet:
oauth:
# Organization ID where OAuth providers are configured
providerOrgId: "<your-org-id>"
slackOAuthProvider: "<provider-id>"bash
helm upgrade -i langsmith langchain/langsmith --values langsmith_config.yaml --version <version> -n <namespace> --wait --debug确认 Fleet pod 重启。此刻提供商 ID 只是一个名字。剩下的步骤创建它所指的提供商。
Create a Slack app for the provider
前往 api.slack.com/apps 并点击 Create New App。
Add bot scopes
在 OAuth & Permissions 中,添加以下 bot token 作用域:
channels:historychannels:readchat:writefiles:writegroups:historygroups:readim:historyim:readim:writempim:historympim:readteam:readusers:readusers:read.email
Register the provider in LangSmith
从你的 Slack 应用的 Basic Information 中复制 Client ID 和 Client Secret。在 LangSmith 中,前往 Settings > OAuth Providers 并添加一个提供商:
- Provider ID:你设为
slackOAuthProvider的那个 ID。 - Client ID:来自 Slack 应用。
- Client Secret:来自 Slack 应用。
- Authorization URL:
https://slack.com/oauth/v2/authorize - Token URL:
https://slack.com/api/oauth.v2.access
在你设为 providerOrgId 的组织中注册它。Fleet 从那个组织解析提供商,所以在别处注册的提供商会以一个 unknown provider 错误失败。
Add the redirect URI to Slack
在 Slack 应用中,前往 OAuth & Permissions > Redirect URLs 并添加以下内容,把 <hostname> 替换为你的 LangSmith 主机名、把 <provider-id> 替换为你的提供商 ID:
https://<hostname>/host-oauth-callback/<provider-id>在 slackOAuthProvider 被设置之前,Fleet 不注册 Slack 触发器,Add Slack App 保持禁用,且 Slack 渠道不会出现在 agent 上。
NOTE
步骤 2 中每个自定义 Slack 应用都有它自己的 OAuth 提供商,向导从你粘贴的凭据注册它。这就是为什么步骤 2 要求单独填一个 client ID、client secret 和 signing secret。
步骤 2. 创建一个自定义 Slack 应用
从你希望机器人运行的那个 agent 启动这个流程,这样 Fleet 在你完成时会为你把应用关联上。
Open the Slack setup dialog
选择你的 agent 并打开它的配置侧边栏。展开 Channels 抽屉并选择 Slack。
你也能从 Integrations 页面开始:在左侧导航选择 Slack & Teams,然后在 Slack Apps 部分点击 Add Slack App。
Create the app in Slack
- 为这个机器人输入一个名字。
- 点击 Create Slack App。Fleet 会带着一个预填的应用清单打开 Slack API 站点。
- 选择你想在其中安装机器人的工作区。
WARNING
不要在这个流程之外创建 Slack 应用。生成的清单会设置 Fleet 所需的事件订阅 URL、交互 URL、OAuth 重定向 URL 和作用域。手动创建的应用不会收到事件。
Enter your app credentials
回到 Fleet,点击 Continue To Credentials,并从你新的 Slack 应用中复制以下值:
- App ID:来自 Basic Information。
- Client ID:来自 Basic Information > App Credentials。
- Client secret:来自 Basic Information > App Credentials。在 Slack 中点击 Show 并复制整个值。
- Signing secret:来自 Basic Information > App Credentials。在 Slack 中点击 Show 并复制整个值。
(可选)启用 Allow bot triggers 以让来自其他 Slack 机器人的消息能启动一次运行。
点击 Save Credentials。
Connect OAuth
- 点击 Connect OAuth。Slack 会打开一个授权窗口。
- 点击 Allow 在你的工作区中安装该应用。
需要 admin 审批的 Slack 应用:如果 Slack 显示 Request 而非 Allow,你的工作区要求 admin 审批:
- 在 Slack 窗口中,点击 Request 把安装请求发送给你的 admin。这才是真正通知 admin 的动作。
- 回到 Fleet,点击 Save & Request Approval。尽管名字如此,这个按钮只把应用保存为草稿,以便你在 admin 批准后恢复。
Finish setup
点击 Finish。如果你是从一个 agent 开始的,Fleet 会把应用关联到那个 agent。如果你是从 Integrations 页面开始的,从下拉菜单选择一个 agent,或点击 Finish Without Agent 以后再关联一个。
完成一个草稿 Slack 应用
点击 Save & Request Approval 会把应用保存为草稿,于是一个 Slack admin 审阅安装请求期间你保留你的进度。草稿会出现在 Slack Apps 部分的 Pending Slack admin approval 下。
你的 admin 批准该应用后:
- 在 Integrations 页面,在左侧导航选择 Slack & Teams 以打开 Slack Apps 部分。
- 在草稿上点击 Resume Setup。
- 重新输入 Client secret 和 Signing secret。Fleet 不在草稿上存储机密,所以再从 Slack 复制一次。
- 点击 Save Credentials,然后 Connect OAuth,然后在 Slack 中 Allow。
- 选择要把应用关联到的 agent,然后点击 Finish。
NOTE
每个 agent 只能有一个 Slack 应用,且每个 Slack 应用只能被关联到一个 agent。
在你的 agent 中于 Slack 使用
应用一旦安装,就把 agent 邀请到一个频道、@ 它以启动一次运行,并在不离开 Slack 的情况下响应审批请求。
把 agent 邀请到一个频道
- 在 Slack 中,前往你想在其中使用 agent 的频道。
- 输入
/invite @YourAgentName邀请它。 - 用
@YourAgentName@ 这个 agent 以启动一次运行。agent 会在线程中回复。
你也可以给这个机器人发一条直接消息,或把它添加到一个群组直接消息。
在 Slack 中批准或拒绝动作
当一个 agent 在一个需要批准的工具上暂停时,它会直接在 Slack 中发起请求。这条消息会点名工具和动作,带 Approve 和 Deny 按钮,因此你能在不离开 Slack 的情况下响应。
更多信息,见人在回路。
Slack 中的错误消息
如果一个 agent 在一次运行期间遇到错误,它会在线程中回复而非保持沉默。对某些错误类型,例如身份验证错误,回复会包含更多细节以便你解决问题。
添加 Slack 工具
Slack 工具让你的 agent 能发消息、在线程中回复、读取历史并发送直接消息。无论 agent 是以何种方式被触发——通过 Slack、Fleet UI、一个计划,还是一个 webhook——它们都有效。
例如,你可以在 Fleet 聊天 UI 中启动一个长期的研究任务,并指示 agent 在完成时给你发一条 Slack 消息。
要添加 Slack 工具:
- 打开你的 agent,然后在侧边栏展开 Connections 抽屉。
- 点击 Add connection,如果 Slack 尚未连接就添加它。
- 添加你需要的 Slack 工具:
- Send Channel Message:向一个频道发消息。
- Reply to Message:在线程中回复。
- Write Private Message:发送一条直接消息。
- Read Channel History:读取最近的频道消息。
- Read Thread Messages:读取线程中的回复。
- 如果被提示,授权该 Slack 连接。
TIP
你也可以让你的 agent 自己添加这些工具。在 agent 聊天中,试试:"Add the Slack tools so you can respond to messages."
NOTE
把每个工具设为 Auto 以无需批准就运行它,或设为 Ask 以在运行前要求批准。更多信息,见人在回路。
故障排查
agent 不回应
如果你的 agent 没有响应,试试以下做法:
- 在 Fleet UI 中检查线程是否有错误。
- 验证 agent 是否被邀请到了该频道。
- 确认 Slack 渠道没有在 Channels 抽屉中被暂停。
- 在 Channels 抽屉中删除该 Slack 应用,然后重新设置它。
不允许 @ 这个机器人
如果你收到一条私人消息说你不被允许 @ 这个机器人,你的 Slack ID 未被授权给那个 agent。该 agent 的所有者需要与你共享该 agent,要么把运行访问权共享给整个 LangSmith 工作区,要么单独共享给你。
Slack 应用一直卡在待审批
一直停留在 pending 状态的 Slack 行是在等一个 Slack admin。请 admin 在 Slack 中批准该应用,然后再次点击 Finish setup。见添加一个需要 admin 审批的应用。
Add Slack App 被禁用
在 Self-hosted 上,Slack Apps 部分的 Add Slack App 按钮在 fleet.oauth.slackOAuthProvider 被设置之前是禁用的。见设置 Slack OAuth 提供商。