文章

企业AI计费系统MVP搭建

基于 LiteLLM 网关 + Open WebUI 的企业 AI 服务精细化计费系统 MVP 落地步骤,实现多维度统计消费。

企业AI计费系统MVP搭建

最小可行性系统落地步骤

1. 架构与前置准备

1.1 系统架构

1
2
3
员工浏览器 → Open WebUI (:3000) → LiteLLM Proxy (:4000) → 各模型 API (OpenAI, Anthropic等)
                                      ↓
                               PostgreSQL(用户/项目/消费数据)

1.2 前置准备

  1. 安装 Docker 和 Docker Compose。
  2. 准备采购的 AI 模型 API Key。
  3. 服务器开放 30004000 端口。

2. 核心组件部署 (Docker Compose)

在服务器上创建一个目录,新建 docker-compose.yml.env 文件。

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
services:
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: litellm
      POSTGRES_USER: litellm
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U litellm -d litellm"]
      interval: 5s
      retries: 10

  litellm:
    image: ghcr.io/berriai/litellm-database:v1.85.0
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "4000:4000"
    environment:
      LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
      LITELLM_SALT_KEY: ${LITELLM_SALT_KEY}
      DATABASE_URL: "postgresql://litellm:${POSTGRES_PASSWORD}@db:5432/litellm"
    # 供应商的 API Key 在 LiteLLM UI 中配置,这里仅作为启动配置
    command: ["--port", "4000"]

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    restart: unless-stopped
    depends_on:
      - litellm
    ports:
      - "3000:8080"
    volumes:
      - owui_data:/app/backend/data
    environment:
      # 对接 LiteLLM 的统一入口
      OPENAI_API_BASE_URL: http://litellm:4000/v1
      # 使用 Master Key 作为默认连接,员工个人计费密钥可在前端单独配置
      OPENAI_API_KEY: ${LITELLM_MASTER_KEY}
      WEBUI_AUTH: "True"

volumes:
  pgdata:
  owui_data:

.env

1
2
3
LITELLM_MASTER_KEY=sk-你的随机字符串    # 生成密钥:sk-$(openssl rand -hex 24)
LITELLM_SALT_KEY=你的随机base64字符串   # 生成盐值:$(openssl rand -base64 32)
POSTGRES_PASSWORD=你的数据库强密码      # 你的数据库强密码

启动服务

1
2
3
docker compose up -d
# 验证 LiteLLM 健康
curl http://localhost:4000/health/liveliness

3. 平台初始化与模型接入 (AI 采购与配置)

  1. 登录管理后台:访问 http://localhost:4000/ui,用户名输入 admin,密码输入 .env 中的 LITELLM_MASTER_KEY
  2. 配置供应商密钥:在 UI 左侧导航进入 API Keys,添加企业采购的各厂商 API Key。
  3. 添加可用模型:进入 Models,点击 + Add Model,配置模型映射(如将 gpt-4o 映射到 OpenAI 的真实模型)。员工后续调用时将使用这里配置的模型名称。

4. 用户与项目计费配置

为了实现按多维度核算,本节以按人、项目为例,需要创建用户、分配项目标签,并生成带有计费追踪的 API Key。

4.1 创建用户与项目标签 (Tag)

在 LiteLLM UI 中操作,或通过 API 执行:

1
2
3
4
5
6
7
8
9
10
11
# 创建用户张三和李四
curl -X POST 'http://localhost:4000/user/new' \
  -H "Authorization: Bearer ${LITELLM_MASTER_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{"user_id": "zhangsan", "user_alias": "张三"}'

# 创建项目标签
curl -X POST 'http://localhost:4000/tag/new' \
  -H "Authorization: Bearer ${LITELLM_MASTER_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{"tag_name": "project-alpha"}'

4.2 为员工生成专属计费 API Key

为员工生成专属密钥,绑定用户身份和项目,并可设置预算上限:

1
2
3
4
5
6
7
8
9
curl -X POST 'http://localhost:4000/key/generate' \
  -H "Authorization: Bearer ${LITELLM_MASTER_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "user_id": "zhangsan",
    "metadata": {"tags": ["project-alpha"]},
    "max_budget": 100.0,
    "models": ["gpt-4o", "claude-3-5-sonnet"]
  }'

效果:该 API Key 消费数据同时归属个人和项目。


5. 员工使用指南 (Open WebUI 对接)

  1. 员工访问 http://<服务器IP>:3000
  2. 首次访问点击“注册”,创建个人 Open WebUI 账号(管理员可在后台审批或配置允许注册)。
  3. 配置专属计费密钥
    • 员工登录后,点击右上角头像 → Settings (设置) → Connections (连接)。
    • 在 OpenAI API 区域,确保 URL 为 LiteLLM 地址(由服务器默认下发)。
    • 填入管理员在步骤 4.2 中为其分配的专属 API Key,点击保存。
  4. 回到主界面,在模型下拉框中选择对应的 AI 模型即可开始对话使用。

6. 验证与数据看板

发送测试请求 使用员工的 API Key 发送请求:

1
2
3
4
curl -X POST 'http://localhost:4000/v1/chat/completions' \
  -H "Authorization: Bearer sk-员工专属APIKey" \
  -H 'Content-Type: application/json' \
  -d '{"model":"gpt-4o","messages":[{"role":"user","content":"测试企业AI平台"}]}'

查看计费与消费统计

  1. 管理员打开 http://<服务器IP>:4000/uiSpend & Usage
  2. User 筛选:查看各员工(张三、李四)的具体消费金额与 Token 用量。
  3. Tag 筛选:查看各业务线/项目的总体消费,便于财务进行内部成本分摊。
  4. 可自行导出报表。
本文由作者按照 CC BY 4.0 进行授权