跳至主要內容

設定 LiteAdmin Slack app

使用 LiteAdmin,可透過 Slack DM 詢問團隊、預算、模型與支出。每位管理員都會連接自己的 LiteLLM 帳戶

先安裝 Slack app,然後從下方選擇一種部署方式。Enterprise 使用隨您的 gateway 一起封裝的 worker 及其既有的 SSO。Standalone 會執行一個獨立的 agent 服務,並使用自己的 HTTPS 位址與登入設定

若要將 Claude Code 或 Codex 連接到 Enterprise 部署上的 MCP endpoint,請參閱 在 Enterprise 上部署 LiteAdmin MCP。該指南涵蓋 /admin/mcp 在整合式與組件化映像中的設定;本頁面則設定 Slack agent worker

開始之前​

您需要一個可正常運作的 LiteLLM gateway,具備 HTTPS、資料庫,以及每位可連接的管理員都能使用的工具呼叫模型。每位使用者都需要一個啟用中的 proxy_admin 帳戶,其電子郵件需與 Slack 個人資料相符。您也需要有權限在您的工作區中建立並安裝 Slack app

請為每個 Slack app、工作區與 gateway 執行一個 worker,並具備持久儲存與對外 Slack WebSocket 存取。請使用不含 URL 子路徑的 HTTPS origin。Enterprise 部署另外需要有效授權,以及 在 gateway 上已設定 SSO

1. 建立並安裝 Slack app​

每個環境請使用獨立的 Slack app,例如用於測試的 LiteAdmin Dev

  1. 開啟 Slack 的 app dashboard,選擇 Create New App,接著選擇 From a manifest,然後選取您的工作區
  2. 貼上以下 JSON manifest。視需要變更 app 名稱,檢閱權限,然後建立 app
  3. 在 Basic Information 下方,開啟 App-Level Tokens。產生名為 liteadmin-socket、具備 connections:write scope 的 token。將 xapp-… 值儲存為 SLACK_APP_TOKEN
  4. 在 OAuth & Permissions 下方,選擇 Install to Workspace 並核准安裝。將以 xoxb- 開頭的 Bot User OAuth Token 儲存為 SLACK_BOT_TOKEN
  5. 在 Slack 的網頁應用程式中開啟您的工作區。從 https://app.slack.com/client/T…/… 複製以 T 開頭的工作區 ID,並將其儲存為 SLACK_WORKSPACE_ID
用於直接訊息的 Slack app manifest
{
"display_information": {
"name": "LiteAdmin",
"description": "Ask about your LiteLLM gateway. Send connect in a DM to sign in.",
"background_color": "#111827"
},
"features": {
"bot_user": {
"display_name": "LiteAdmin",
"always_online": false
},
"app_home": {
"home_tab_enabled": false,
"messages_tab_enabled": true,
"messages_tab_read_only_enabled": false
}
},
"oauth_config": {
"scopes": {
"bot": [
"chat:write",
"im:history",
"reactions:write",
"users:read",
"users:read.email"
]
}
},
"settings": {
"event_subscriptions": {
"bot_events": ["message.im"]
},
"socket_mode_enabled": true,
"org_deploy_enabled": false,
"token_rotation_enabled": false
}
}

此 manifest 啟用 Socket Mode、直接訊息事件,以及可寫入的 Messages 分頁。此 app 可讀取傳送給它的訊息,並查找與 gateway 帳戶配對所需的 Slack 個人資料電子郵件。Slack 不需要內送事件 webhook;它會透過 worker 的對外連線傳遞訊息

2. 部署並連接​

請選擇一條設定路徑。Enterprise 會以唯讀模式啟動,方便您在允許變更之前先測試查詢

Docker 映像包含 agent 程式碼及其相依項目。您必須先啟用 worker 並安裝 Slack app,任何人才能使用它。Helm 設定 liteadmin.enabled 預設為 false;一般 gateway 容器不會啟動 worker。請透過您的部署設定啟用它,並具備有效的 Enterprise 授權。儀表板沒有切換開關

gateway 與 worker 會以相同映像中的不同容器執行。Slack 會透過 worker 的對外 Socket Mode 連線傳遞訊息。worker 會使用請求管理員的個人 session 呼叫您的 gateway。您應將 worker 保持私有,並使用 gateway 的 HTTPS 位址進行登入

可用性

請使用包含 LiteLLM PR #44444 的映像與 chart,以及來自 Admin Agent PR #18 的固定版本 worker。較舊的映像與 chart 不包含此整合。下方映像名稱僅為範例,並非已發布的 release tag

準備您的 gateway​

請先準備一個可正常運作的 Enterprise gateway,具備資料庫、HTTPS 位址,以及 已設定的 SSO。確認您可以登入其 Admin UI。請使用例如 https://gateway.example.com 這類不含 URL 子路徑的 origin

請選擇 gateway 有提供且每位連接的管理員都能存取的工具呼叫模型。請在下方設定中使用其 gateway 模型名稱

每位使用者都需要一個啟用中的 proxy_admin 帳戶,其電子郵件需與 Slack 個人資料相符。gateway 會在連接帳戶前檢查 Enterprise 資格與目前管理員權限;worker 也會在允許使用 agent 前檢查資格與身分

請為每個 Slack app、工作區與 gateway 執行一個 worker。允許 worker 對 Slack 的 WebSocket 對外連線,以及從 worker 到 gateway 的 HTTPS 請求。允許 gateway 透過其私有埠 10000 存取 worker

儲存 worker 的憑證​

請將以下五個值儲存在您的 secret manager 中。請將它們與 gateway 的 master key 與資料庫憑證分開保存

設定值
SLACK_BOT_TOKEN已安裝 app 的 xoxb-… token
SLACK_APP_TOKEN具備 connections:write 的 xapp-… token
SLACK_WORKSPACE_ID以 T 開頭的工作區 ID
ADMIN_AGENT_SERVICE_TOKEN至少 32 個字元的隨機共享 secret,供 gateway 與 worker 使用
CREDENTIAL_ENCRYPTION_KEY用於加密已儲存個人 session 的持久 Fernet key

使用 openssl rand -hex 32 產生服務 token。若要在已安裝 Python cryptography 套件的機器上產生加密金鑰,請執行:

python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())'

請將產生的值儲存在您的 secret manager 中。升級時請保留加密金鑰與 worker state volume,以便 worker 讀取已儲存的連線。請勿將憑證放在原始碼管理系統或 Slack 訊息中

啟用 worker​

請選擇您已用於 gateway 的部署方式。兩個範例都會以 唯讀模式 啟動,因此 agent 可以在不變更 gateway 資源的情況下回答查詢

請使用包含此整合的 LiteLLM checkout 中的 helm/litellm-helm chart。請保留您現有的 gateway values,包括 Enterprise 授權、資料庫與 SSO 設定

透過您平常的 secret 管理流程,在 gateway 的 namespace 中建立名為 liteadmin-slack 的 Secret。它必須包含上方 儲存 worker 的憑證 中的五個設定。若為手動安裝,請只將這些設定儲存在私有的 liteadmin-secrets.env 檔案中,然後執行:

chmod 600 liteadmin-secrets.env
export LITELLM_NAMESPACE=litellm
kubectl --namespace "$LITELLM_NAMESPACE" create secret generic liteadmin-slack \
--from-env-file=liteadmin-secrets.env

請使用您實際的 namespace。若 Secret 已存在,請透過管理它的系統更新,並保留其加密金鑰

新增一個 liteadmin-values.yaml 檔案:

liteadmin-values.yaml
image:
repository: registry.example.com/your-team/litellm
tag: native-slack

liteadmin:
enabled: true
gatewayUrl: https://gateway.example.com
model: your-tool-capable-model
existingSecret: liteadmin-slack
storageSize: 1Gi
readOnly: true

請將映像替換為包含此整合的 build。將 gatewayUrl 與 model 設為您的 gateway URL 與模型名稱。若您的叢集需要特定的儲存類別,請在 liteadmin 下使用 storageClassName

將設定套用到您現有的 release。請將 litellm 替換為您的 release 名稱,並將 gateway-values.yaml 替換為您已使用的 values 檔案:

export LITELLM_RELEASE=litellm
helm dependency build ./helm/litellm-helm
helm upgrade "$LITELLM_RELEASE" ./helm/litellm-helm \
--namespace "$LITELLM_NAMESPACE" \
-f gateway-values.yaml \
-f liteadmin-values.yaml

此 chart 會啟動一個 worker,搭配私有的 ClusterIP Service 與 persistent volume claim。它會設定 gateway 的 worker 位址,並只與 gateway replicas 共用 ADMIN_AGENT_SERVICE_TOKEN。worker 會接收自己的 Secret,不含 gateway master key 或資料庫憑證

Gateway autoscaling 不會擴縮 worker。請將 worker 維持為 1 個副本,並讓其 Service 保持私有。變更 worker Secret 值後,請重新啟動 worker 以載入設定;變更共享服務 token 也需要重新啟動 gateway

驗證 worker​

對於 Helm,請在您的命名空間中找到 worker Deployment。其名稱以 -liteadmin 結尾:

kubectl --namespace "$LITELLM_NAMESPACE" get deployments
export LITEADMIN_DEPLOYMENT=litellm-liteadmin
kubectl --namespace "$LITELLM_NAMESPACE" rollout status \
"deployment/$LITEADMIN_DEPLOYMENT" --timeout=180s
kubectl --namespace "$LITELLM_NAMESPACE" exec \
"deployment/$LITEADMIN_DEPLOYMENT" -- \
/opt/liteadmin/bin/python -c \
"import urllib.request; print(urllib.request.urlopen('http://127.0.0.1:10000/readyz').read().decode())"

將 LITEADMIN_DEPLOYMENT 替換為 get deployments 顯示的名稱;chart 名稱覆寫可能會變更它。預期會有一個就緒的 worker 和 {"status": "ready"}

對於 Docker Compose,在 worker 內執行相同的就緒檢查:

docker compose --env-file .env --env-file liteadmin.env \
-f docker-compose.yml -f docker-compose.liteadmin.yml \
exec liteadmin /opt/liteadmin/bin/python -c \
"import urllib.request; print(urllib.request.urlopen('http://127.0.0.1:10000/readyz').read().decode())"

預期為 {"status": "ready"}。啟用 Slack 後,就緒檢查會檢查狀態資料庫與 Slack socket。請完成下一步以驗證登入、模型存取以及管理工具請求

連結您的帳戶並測試請求​

  1. 在 Slack 的 Apps 中開啟 LiteAdmin,或開啟您在 manifest 中選擇的名稱,並在 DM 中傳送 connect
  2. 在十分鐘內開啟私人連結。它應使用您閘道的 HTTPS 位址
  3. 透過您平常的 LiteLLM 登入方式登入。如果您已經有有效的瀏覽器工作階段,請前往連結頁面
  4. 檢查頁面上的電子郵件,並選取 Connect account。預期會顯示 Account connected
  5. 返回 Slack 並詢問:What is my current LiteLLM role? Use the gateway to verify it

預期會收到回覆,確認 proxy_admin。接著您可以詢問 List my teams and their current budgets。worker 會使用您的個人工作階段進行模型請求與管理操作,並驗證您的 Slack 身分與目前的閘道權限

連結會在十分鐘後過期,且只能使用一次。個人工作階段最長可維持 24 小時。當您的工作階段到期時,請再次傳送 connect,或傳送 disconnect 以刪除 worker 已儲存的連結並使待處理連結失效。斷開連結不會撤銷閘道上的已匯出憑證;該憑證會維持其自身的到期時間

在測試後允許變更​

上述範例設定為唯讀模式。若要允許已連結的管理員變更金鑰、團隊、模型或預算,請在 Helm 中設定 liteadmin.readOnly: false,或在 Compose 中設定 ADMIN_READ_ONLY=false,然後再次套用部署

選擇您打算進行的一項變更,並在閘道中驗證結果。若省略唯讀設定,組態預設會允許寫入;如果此部署只應回應查詢,請保留明確的 true 值

將現有應用程式移轉到 Enterprise worker​

此部署使用 LiteLLM Admin Agent 程式碼,並採用 native 驗證模式。獨立的 Slack 應用程式有自己的 worker 與已儲存連結。您現有的獨立應用程式會繼續使用其設定的後端

若要重用現有的 Slack 應用程式,請先停止其舊 worker,再使用該應用程式的憑證啟動捆綁的 worker。針對那些憑證只執行一個 worker。請使用者再次傳送 connect 以建立原生閘道工作階段。在完成移轉前,請保留舊部署的狀態與加密金鑰

原生模式使用閘道的連結頁面與既有的 SSO 組態。您不需要設定代管的 /register、/authorize 或 /token 回呼,也不需要新增第二個身分提供者用戶端

疑難排解​

症狀要檢查的內容
Slack 中沒有回應確認已安裝到預期的工作區、Socket Mode、可寫入的 Messages 分頁,以及 message.im 事件。檢查 worker 就緒狀態與對外 Slack 連線
worker 在啟動時失敗檢查 Slack 憑證、服務權杖、加密金鑰、模型、閘道 URL,以及可寫入的持久性儲存體
readiness 回傳 503檢查應用程式權杖的 connections:write 範圍、對外 WebSocket 存取,以及狀態資料庫
Enterprise 連線頁面回傳 404確認閘道映像檔包含此整合,且已設定 LITELLM_ADMIN_AGENT_URL
Enterprise 連線頁面回傳 403檢查 Enterprise 權益、目前的 proxy_admin 角色、閘道與 Slack 電子郵件是否一致,以及 HTTPS origin
Enterprise 連線頁面回傳 410連結已過期、已被使用,或已失效。傳送 connect 以取得新連結
Enterprise 連線頁面回傳 503檢查私人 worker 位址、閘道到 worker 的存取、相符的服務權杖,以及閘道資料庫
獨立連線遭拒檢查目前的 proxy_admin 角色、個人金鑰所有權、模型存取權,以及與 Slack 的電子郵件是否匹配
獨立連線頁面拒絕該 session在單一瀏覽器中使用新的連結。檢查 HTTPS 與 AGENT_PUBLIC_URL,其不得有子路徑
獨立 SSO 回呼失敗顯示代理 API 授權只能重新導向到迴圈回送位址的 400,表示閘道版本不接受託管回呼;請使用 api_key 模式
連線成功但請求失敗確認管理員可使用已設定的模型,且 worker 可透過 HTTPS 連到閘道。對於獨立部署,執行 doctor.py 並檢查 ADMIN_TOOL_NAMES
變更被拒絕檢查 liteadmin.readOnly 或 ADMIN_READ_ONLY 以及任何託管連接器限制。Enterprise 範例以唯讀模式開始
變更逾時在重試前檢查閘道資源。逾時不會撤銷已完成的操作

請參閱 代理程式作業指南 以了解備份與升級。Gateway Agents / A2A 註冊 對於獨立 Slack 使用是選用的

LiteLLM Enterprise
為正式環境打造的 SSO/SAML、稽核記錄、支出追蹤、多團隊管理與防護欄。
深入瞭解 →