☰
Litellm 完全指南:统一多模型 API 网关的部署、路由与生产实践
2026/10/14 8:33:59 网站建设 项目流程

1. 从一个开源项目说起:litellm 到底是什么

先抛个结论:litellm 是我这两年见过最“省心”的 LLM 网关类工具,没有之一。它的定位非常纯粹——把各种大模型 API 统一成一套调用接口,让你不用再为“换模型就改代码”这件事头疼。

我最早接触 litellm 是因为一个实际痛点。当时团队在做一个智能问答系统,前期用 A 厂商的模型做原型验证,效果不错,但上线前客户突然提出要换模型供应商,理由是成本和合规要求。我原以为只是改改 base_url、换换 key,结果一打开代码发现到处都是模型厂商各自的 SDK 调用方式:有的传messages,有的传prompt,有的鉴权方式还不一样,改起来简直是灾难。那一次重构大概花了三天时间,改完还留了一堆兼容性 bug。

后来我同事推荐了 litellm。它的核心思路是:所有模型接入层统一走 OpenAI 风格的请求格式,litellm 在中间做协议转换、密钥管理、负载均衡、失败重试这些脏活累活。也就是说,你前端代码永远只写一种调用方式,底层模型是谁、在哪个平台跑、Key 怎么换,都由 litellm 帮你搞定。

这篇文章不是官方文档的复读,而是我从实际使用角度整理的完整解析。包括它解决了什么问题、核心原理是什么、怎么落地部署、踩过哪些坑、生产环境怎么调优,都会一一说清楚。如果你正在做 LLM 应用开发、需要接入多种模型、或者想给团队搭一套统一 AI 网关,这篇文章应该能帮你少走不少弯路。

2. litellm 解决的三个核心问题

2.1 多模型接入的“接口地狱”

现在的模型厂商,每家都有自己的脾气。OpenAI 风格是目前的事实标准,很多新模型也主动兼容这个格式,但 Anthropic 的 Claude 走的是/v1/messages,Google Gemini 早期的接口风格也跟 OpenAI 不完全一致,还有一些开源模型部署平台用自己的协议。加上不同厂商对参数命名、流式返回格式、错误码定义各有差异,如果你在业务代码里直接对接多家模型,代码里就会长满 if-else 和各种转换逻辑。

litellm 把这个问题收敛了:统一入口、统一参数、统一返回。你请求的时候指定model="claude-3-5-sonnet",litellm 自动把它翻译成 Anthropic 对应的请求格式;指定model="gemini/gemini-pro",它就转换成 Google 格式。前端代码完全不用感知这些差异,换模型只是改一个字符串的事。

这里补充一个我实际测试过的细节:litellm 不只是做格式转换,它对模型返回的处理也做了归一化。比如有的模型返回content是字符串,有的模型返回的是分段的 content 数组,litellm 统一转成 OpenAI 风格的choices[0].message.content,流式输出也统一用 OpenAI 的 SSE 格式。这对业务方来说非常重要,因为你的下游解析逻辑只需要写一遍。

2.2 密钥管理与安全隔离

第二个痛点直击团队协作场景:模型 API Key 到底放哪?很多小团队的 Key 直接硬编码在代码里,或者躺在配置文件里被所有人围观,一旦代码仓库泄露,密钥就跟着遭殃。

litellm 把密钥管理做成了独立模块。你可以在 litellm 里配置不同模型供应商的 Key,它们被加密存储在 litellm 自己的数据库里。业务代码只跟 litellm 通信,不需要接触任何真实 Key。团队内部可以给不同项目、不同成员分配不同虚拟 Key,按预算、按速率、按模型维度做限制。

这个设计其实很像传统架构里的网关模式——真正的认证信息收敛在网关层,下游业务通过虚拟凭证访问。我在实际部署中还验证了另一件事:litellm 支持多 Key 轮询,也就是同一个模型配置多个 Key,请求时会自动负载均衡到不同 Key 上,这样能有效规避单个 Key 的速率限制。对需要跑批量任务的场景,这个功能非常实用。

2.3 成本统计与用量追踪

模型 API 是按 token 计费的,不同模型价格差距极大。如果业务团队对用量没有感知,月底账单出来往往被吓一跳。litellm 自带详细的日志系统,记录每一次请求的模型、token 数、延迟、成本估算,并且支持按团队、按项目维度的视图。

我印象最深的是有一次线上流量突增,模型费用在一天内涨了五倍。我们查 litellm 的日志,发现是有个定时任务把系统里所有历史数据都重新过了一遍大模型,而且这个任务因为队列积压重复跑了三轮。如果没有逐请求的成本记录,这种问题基本是要等账单出来才能发现的。

litellm 的日志会记录 model 调用的具体 token 消耗,结合官方价格表可以算出成本。虽然不同型号模型有版本差异,做不到分毫不差,但量级评估完全够用。

3. 核心原理与架构拆解

3.1 统一请求格式的魔力

litellm 的核心实现,说白了就是一层“协议转换层”。它对外暴露一个 OpenAI 兼容的/chat/completions接口,收到请求后,根据你传入的model参数找到对应的供应商配置,然后把请求转换成供应商自己的格式发出去,拿到响应后再转回 OpenAI 格式还给调用方。

理解这一层的价值,需要对比一下没有网关的情况。假设你直接对接两家模型:

腾讯混元那边返回的错误是 HTTP 500 + 内部错误码,OpenAI 可能是 429 + RateLimitError,Anthropic 可能是 529 + overloaded_error。你的代码要针对每个厂商写一套错误处理逻辑,还要处理重试、降级、超时,工程量不小。

用 litellm 之后,这些都被网关消化了。你可以配置统一的重试策略、统一的超时时间、统一的熔断机制。业务侧只面对一种错误格式,排查问题时的信息噪声也小得多。

3.2 模型映射与路由策略

litellm 的模型路由策略值得单独拿出来讲。它不只是简单的“a 模型调用 a 供应商”,而是支持多种路由模式:

  • 单一模型路由:model="gpt-4o",直接走 OpenAI。
  • 前缀映射:model="azure/gpt-4o",走 Azure 的 OpenAI 服务。前缀azure/告诉 litellm 走 Azure 的接入点。
  • 自定义别名路由:你在配置文件里把model="my-assistant"映射到gpt-4o或claude-3-5-sonnet,业务侧只认别名。
  • 负载均衡路由:多个真实模型对应同一个别名,litellm 按策略分发请求,实现高可用。

我实际用得最多的是“别名 + 负载均衡”组合。我们会把线上 model 名称定为一个稳定的别名,比如assistant-v1,底层映射到两三个不同供应商的同级别模型,并设置主备关系。主模型挂了或限流了,litellm 自动切到备模型;关掉某个底层模型时,只需要更新配置,业务代码根本不知道这个变化。

3.3 虚拟 Key 体系详解

litellm 的虚拟 Key 设计,和生产系统的 API 网关的访问令牌体系很像。你在 dashboard 里配置好真实 Key 后,每创建一个虚拟 Key 时,可以设置:

  • 速率限制:每秒/每分钟最大请求数
  • 预算上限:最多花多少钱
  • 可用模型范围:只允许调哪些模型
  • 过期时间

业务端拿虚拟 Key 请求 litellm,litellm 校验权限后,再用真实 Key 去请求上游模型。这个体系对多租户场景尤其有用——不同项目的 Key 互相隔离,即使某个 Key 泄漏,攻击者能影响的也只是一个虚拟 Key 的配额,不会直接把你的真金白银全漏光。

3.4 数据库选型与其作用

litellm 依赖一个数据库来存储配置、Key、日志和用量数据。默认情况下,你可以选择 SQLite(适合本地测试)、PostgreSQL(生产环境推荐)或 MySQL。

我一开始本地测试图省事用了 SQLite,后来数据量上来后明显感觉管理后台响应变慢。切到 PostgreSQL 之后,一切顺畅了。如果你打算跑生产,建议直接上 PostgreSQL,别在 SQLite 上挣扎。litellm 的表结构里,核心几张表分别是用户表、密钥表、模型配置表、请求日志表和预算表,理解这几个实体之间的关系,对排查问题很有帮助。

4. 部署落地与实操配置

4.1 Docker 快速起步

最简单的启动方式是 Docker Compose。我一般会在项目里放一个docker-compose.yml,里面定义 litellm 服务和 PostgreSQL 数据库。先拿它跑通再考虑加负载均衡。

一个最小可用的 Docker 部署示例大概是这样:

version: "3.9" services: litellm: image: ghcr.io/berriai/litellm:main-latest ports: - "4000:4000" environment: DATABASE_URL: postgresql://litellm:litellm@postgres:5432/litellm LITELLM_MASTER_KEY: sk-your-master-key volumes: - ./litellm_config.yaml:/app/config.yaml command: --config /app/config.yaml --port 4000 --detailed_debug depends_on: - postgres postgres: image: postgres:16 environment: POSTGRES_USER: litellm POSTGRES_PASSWORD: litellm POSTGRES_DB: litellm volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata:

这里有几个值得注意的点:

  • LITELLM_MASTER_KEY是管理后台和 API 调用的主密钥,务必设置。如果留空,litellm 会默认随机生成一个,但这样你就不容易记住了。
  • 配置文件的路径通过command指定,注意挂载卷的路径要对应。
  • 端口 4000 是 litellm 默认端口,提供管理后台 UI 和 API 入口。

启动完成后,访问http://localhost:4000就能看到管理后台,可以创建虚拟 Key、配置模型、查看日志。

4.2 配置文件详解:从单模型到多模型

配置文件是 litellm 的核心,几乎所有模型接入逻辑都在这里定义。先看一个最简单的配置:

model_list: - model_name: gpt-4o litellm_params: model: openai/gpt-4o api_key: sk-xxxx

这里model_name是对外暴露的名字,litellm_params.model是真正的模型路径,前缀openai/表示走 OpenAI 的接口。如果你用的是 Azure OpenAI,就是azure/+ 对应部署名。

再看一个多模型配置示例:

model_list: - model_name: assistant-v1 litellm_params: model: openai/gpt-4o api_key: sk-openai-key model_info: mode: completion - model_name: assistant-v1 litellm_params: model: anthropic/claude-3-5-sonnet api_key: sk-ant-key model_info: mode: completion - model_name: assistant-v1 litellm_params: model: gemini/gemini-1.5-pro api_key: ai-google-key model_info: mode: completion

同一个model_name配置了三个真实模型,litellm 会把它们看作同一组路由池,默认按顺序或随机分发请求。如果你需要调整权重,可以在router_settings里设置routing_strategy。

这里提醒一个新手容易踩的坑:model_name和litellm_params.model是两个概念。model_name是调用方用的名字,litellm_params.model是真实模型标识。别把两者混为一谈。

4.3 密钥管理与环境变量

线上生产环境不建议把 API Key 直接写在配置文件里。litellm 支持从环境变量读取 Key,比如:

model_list: - model_name: gpt-4o litellm_params: model: openai/gpt-4o api_key: os.environ/OPENAI_API_KEY

os.environ/前缀告诉 litellm 从环境变量里取值。这样做的好处很明显:配置文件可以进版本库,而密钥留在部署平台的环境变量配置里,权限可控。

在管理后台创建虚拟 Key 时,需要注意权限范围。我一般约定:开发环境用全权限 Key,测试环境限制到指定模型,生产环境启用预算限额和速率限制。这样即使 Key 从一个项目带到另一个项目,影响面也可控。

4.4 生产环境高可用部署

生产环境光用一个实例跑 litellm,风险在于单点故障。litellm 本身是无状态的,它的所有数据都在数据库里,所以横向扩容其实很简单:多起几个 litellm 实例,前面挂一个负载均衡器,数据库用托管的 PostgreSQL,这样基本就是一套高可用架构。

我目前的部署拓扑大概是这样:

客户端请求 ↓ 负载均衡 (Nginx/云厂商LB) ↓ litellm 实例 1 ←→ PostgreSQL (托管实例) litellm 实例 2 litellm 实例 3

负载均衡层用 Nginx 做 TCP 四层转发或者 HTTP 转发都行。由于 litellm 的接口是无状态的,负载均衡可以随便轮询,不用做 session 亲和。数据库这里我建议用云厂商的托管 PostgreSQL,自建数据库在高并发场景下容易成为瓶颈,托管实例自带备份、监控、扩容,省心得多。

4.5 用 Docker 还是直接跑进程?

如果你所在的团队已经有容器编排平台,比如 K8s 或轻量的容器服务,直接把 litellm 打进镜像里部署是常规操作。litellm 官方镜像更新频率高,建议固定版本而不是用main-latest标签,避免生产环境被自动更新搞出意外。

如果是小团队、没有容器环境,也可以直接用 Python 包方式运行:

pip install 'litellm[proxy]' litellm --config /path/to/config.yaml --port 4000

这种方式在开发环境调试起来更快,改完配置重启一下进程就行。

5. 从零跑通一个多模型网关项目

5.1 完整实现一个智能助手 Demo

这部分我带你完整走一遍:先用 litellm 搭一个多模型网关,然后写一个业务应用调用它。假设我们要做一个“多模型智能助手”,用户可以在聊天界面选择不同模型来回答问题。

第一步,准备配置。我先把三个模型接进来:

model_list: - model_name: gpt-4o-mini litellm_params: model: openai/gpt-4o-mini api_key: os.environ/OPENAI_API_KEY - model_name: claude-3-5-sonnet litellm_params: model: anthropic/claude-3-5-sonnet api_key: os.environ/ANTHROPIC_API_KEY - model_name: gemini-1.5-pro litellm_params: model: gemini/gemini-1.5-pro api_key: os.environ/GEMINI_API_KEY

启动 litellm 后,把它跑在 4000 端口。下一步是写一个简单的 Python 客户端调用这三个模型。这里注意,客户端不需要安装任何厂商的 SDK,只需要装一个支持 OpenAI 接口的库,比如openai:

from openai import OpenAI client = OpenAI( api_key="sk-your-virtual-key", base_url="http://localhost:4000" ) models = ["gpt-4o-mini", "claude-3-5-sonnet", "gemini-1.5-pro"] prompt = "用一句话解释什么是归并排序" for model in models: try: resp = client.chat.completions.create( model=model, messages=[{"role": "user", "content": prompt}], stream=False ) print(f"{model}: {resp.choices[0].message.content}") except Exception as e: print(f"{model} 调用失败: {e}")

关键就一行:base_url指向 litellm,而不是某个模型厂商的地址。api_key用的是虚拟 Key。你会发现,同一个客户端代码,只需要改model参数,就能在不同厂商的模型之间切换。

如果你用的是 Node.js 服务,也一样,任何 OpenAI 兼容的 SDK 都可以在 base_url 上指到 litellm:

import OpenAI from "openai"; const client = new OpenAI({ apiKey: "sk-your-virtual-key", baseURL: "http://localhost:4000", }); const resp = await client.chat.completions.create({ model: "claude-3-5-sonnet", messages: [{ role: "user", content: "介绍一下你自己" }], }); console.log(resp.choices[0].message.content);

这就是 litellm 的最大优势:对业务开发几乎零侵入。只要你的代码原本是 OpenAI 风格调用的,接入 litellm 就是改一行 base_url 的事。

5.2 配置模型降级与自动重试

单一模型总有翻车的时候,不是 429 限流就是 5xx 故障。litellm 允许你配置重试和降级规则,提升服务可用性。在配置文件的router_settings里,可以设置:

router_settings: routing_strategy: simple-shuffle num_retries: 2 timeout: 30 retry_policy: RateLimitError: retries: 3 fallback_model: gpt-4o-mini InternalServerError: retries: 1 fallback_model: gemini-1.5-pro

这里我解释一下:routing_strategy决定多模型之间如何分发请求,simple-shuffle是随机轮询。retry_policy则定义了不同错误类型下怎么处理:是重试、降级到备选模型,还是直接放弃。这个配置的意义在于,让你告别“模型一挂,服务就挂”的窘境。

我在生产环境里的做法是:主模型设置为效果最优的大模型,备选模型设置为成本更低、稳定性更好的模型。一旦主模型出现 429 或 5xx,litellm 自动把请求转到备选模型。用户感知不到底层变化,但服务可用性显著提升。

5.3 流式输出与业务集成

如果你做的是对话类产品,流式输出基本是刚需。litellm 对 SSE 流式支持得很好,你只需要在请求里加stream=True:

resp = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": "写一段 200 字的产品介绍"}], stream=True ) for chunk in resp: delta = chunk.choices[0].delta.content if delta: print(delta, end="")

底层模型如果不是原生支持流式,litellm 也会帮你处理——要么透传,要么聚合。我遇到过一些开源模型部署平台,它们在流式格式上跟 OpenAI 有细微差异,但 litellm 把这层差异抹平了,业务侧不用关心。

5.4 用量统计与预算告警

用量统计这一块,litellm 的管理后台自带仪表盘,能看到每个虚拟 Key 的调用次数、token 消耗、估算费用。如果你想主动收告警,可以配置 webhook:

litellm_settings: success_callback: ["posthog"] failure_callback: ["sentry"]

生产环境里我给每个项目配了预算上限,比如“本月最高花费 500 元”。一旦超过阈值,litellm 会直接拒掉该 Key 的请求,返回 429。这个机制救过我一次——有一次某个测试服务忘了关定时任务,整晚跑了几万次模型调用,预算直接拉满,但因为预算限制的存在,损失被控制住了,不然账单会非常难看。

6. 避坑指南与常见问题排查

6.1 Key 权限配置不当导致 401

这是新手最容易踩的坑。你在管理后台拿真实 Key 去请求 litellm 接口会报 401?对,因为 litellm 的/chat/completions接口只认虚拟 Key,不认真实 Key。你必须先在 dashboard 创建一个虚拟 Key,再用它去请求。

我一度以为是自己配置错了,翻文档才搞明白这套双 Key 机制。简单记:真实 Key 是给 litellm 用的,虚拟 Key 是给你业务用的,不要混。

6.2 模型名前缀写错导致 404

调用时报Unknown model或者 404,十有八九是model_name和配置不匹配。注意检查model_name是否写对,以及是否在配置里遗漏了对应条目。另外需要注意,有些平台的前缀是有讲究的,比如 Azure 的部署名和模型名不一致时,要用部署名。

6.3 日志太多撑爆数据库

litellm 默认记录所有请求日志,这在流量大的时候会让数据库疯涨。我遇到过一次 PostgreSQL 磁盘被日志写满的故障,最后清理数据并加了定期归档策略才解决。

如果你也遇到类似问题,可以这么处理:在配置里开启disable_spend_logs或调整日志采样率。或者定期执行清理任务:

DELETE FROM "LiteLLM_SpendLogs" WHERE "startTime" < now() - interval '30 days';

生产环境建议加一个定时任务做日志归档。

6.4 代理模式下超时与连接异常

litellm 作为网关,必然引入一层额外的网络开销。如果你的业务对延迟特别敏感,需要注意:litellm 默认的请求超时是 600 秒,这个值大得离谱,容易让调用方等待过久。建议配置短一点的超时时间,比如 60 秒,并在业务侧也设一个合理超时。

还有一个容易被忽略的问题:litellm 所在服务器的出网带宽和 DNS 解析速度会直接影响模型调用耗时。如果你遇到“litellm 响应正常但模型调用特别慢”,先检查一下服务器到模型 API 服务商的网络路径。

6.5 多实例部署时的配置同步问题

litellm 的配置存在数据库里,多个实例共享同一数据库时,理论上模型配置是同步的。但如果你用配置文件方式启动,每个实例的配置必须保持一致。我踩过一个大坑:新加了一个模型,只更新了一个实例的配置文件,结果通过负载均衡过来的请求一半成功一半失败,排查了好久才发现。

后来我改成在 dashboard 里新增模型配置而不是改文件,避免这种不一致问题。如果你坚持用配置文件,记得用配置管理工具统一分发。

6.6 与 LangChain 等其他框架的集成

很多人会把 litellm 跟 LangChain 搭配使用。方法很简单:LangChain 的ChatOpenAI支持传base_url,你把它指到 litellm 就能接管后面的一切。我自己在多个项目里都是这么干的,LangChain 只管编排,模型接入层完全交给 litellm。

但要注意,LangChain 里有些组件会直接调用特定模型的工具调用参数,比如 Anthropic 的 tool_choice 格式跟 OpenAI 不太一样。litellm 已经做了转换,但如果你碰到工具调用格式异常,优先检查 litellm 的版本是不是太旧,升级到最新版本一般能解决。

7. 性能优化与进阶玩法

7.1 缓存策略减少重复调用

LLM 接口是“用一次付一次费”,遇到完全相同的请求,重复调用纯属浪费。litellm 支持设置缓存层,如果请求的内容和参数一致,直接从缓存返回结果,不再请求上游模型。

配置里开启 Redis 缓存:

litellm_settings: cache: true cache_params: type: redis host: localhost port: 6379

设置缓存命中条件时要注意:并不是所有请求都适合缓存。比如需要实时性的对话、带随机采样的请求(temperature 较高),就不应该缓存。可以按模型或按请求参数灵活控制是否走缓存。

7.2 请求过滤与内容安全

litellm 允许你在网关层做请求过滤,比如拦截包含敏感词的输入、限制单次请求的最大 token 数、限制模型输出的长度等。这些能力可以在管理后台配置,也可以写在配置文件的litellm_settings里。

实际项目中,内容安全策略放在网关层有一个额外的好处:业务代码不需要重复实现,所有模型调用都会被统一约束。一旦策略更新,只需要调整 litellm 配置,不需要重新发版。

7.3 扩展自定义供应商

litellm 官方支持很多主流模型平台,但实际工作中总有“官方没覆盖”的私有部署模型。这时候可以用自定义回调或自定义 provider 接口扩展。

litellm 允许你注册一个自定义模型调用函数,大致思路是在配置文件里指定一个自定义 provider,把请求转发到内部模型服务的 API。这个能力让 litellm 不只是“接开源模型”,还能接你公司私有化部署的推理服务。我在一个数据敏感的项目里,就是用这个方式把所有请求都走内网私有模型,兼顾数据合规和统一管理。

7.4 多租户场景下的模型配额管理

如果你做的是 SaaS 产品,有多个客户共用一套系统,多租户隔离是刚需。litellm 的虚拟 Key 天然支持多租户——每个客户分配一个虚拟 Key,然后限制可用模型和预算上限。计费时按虚拟 Key 维度统计成本,月底一拉报表就能知道每个客户花了多少钱。

这里有个细节:如果客户要求“数据不能跑到海外模型”,你可以创建一个只允许路由到指定模型供应商的虚拟 Key,也就是“模型白名单”。这样从产品层面就能承诺数据流向。

8. 实践心得与选型建议

8.1 litellm 适合谁、不适合谁

用了大半年之后,我对 litellm 的边界有了比较清晰的认识。如果你符合以下情况,它大概率很适合你:

  • 业务里接了多家模型供应商,或者准备未来随时切换模型
  • 团队多人共用模型 Key,需要精细的权限和用量管理
  • 产品要求快速迭代模型,不想每次换模型都动代码

反过来,也有不适合的场景:

  • 团队只用一个模型、且没有换模型的计划,那引入 litellm 就是多此一举
  • 对网关层延迟极其敏感、且不介意厂商锁定,直接调用原厂 API 可能更简单
  • 团队没有运维能力,不想维护多一个组件,那还是先用原厂吧

8.2 踩过坑之后的几点心得体会

第一,初期就把数据库放在 PostgreSQL 上。SQLite 适合本地尝鲜,但如果服务跑起来后再迁移数据库,虽然可行,但要多折腾一遍,没必要。

第二,虚拟 Key 一定要设预算上限。不要觉得“我们用量不大可以不设”,等出问题后悔就晚了。设一个比正常预期高一点的预算,既不影响业务,又能在异常时兜底。

第三,配置变更尽量走 dashboard,不用配置文件直改。尤其是多实例部署时,配置文件不同步的坑太隐蔽了。dashboard 的改动是写数据库的,天然全局一致。

第四,一定要给 litellm 加监控。它本身是个网关,如果它挂了,所有模型调用都不可用。我的做法是加一个健康检查任务,每隔一分钟访问一次health接口,异常时直接告警。

8.3 后续扩展方向

litellm 目前的能力已经覆盖了大部分模型网关需求。如果后续需要更复杂的流量治理,比如按用户维度做灰度、按请求内容做动态路由,可以考虑在 litellm 前面再加一层自己的路由服务,litellm 作为模型调用底座。

另外 litellm 社区迭代非常快,新模型的兼容支持通常很快跟上。如果你要用的模型刚发布不久,优先检查 litellm 版本是否够新。升级前建议先在测试环境验证一遍模型调用,避免生产环境因为兼容性突然出问题。

最后再分享一个实用的小技巧:如果你的团队里有多个人在用 litellm 调试模型,可以在 dashboard 上为每个人的测试代码单独创建一个虚拟 Key,加个备注。这样月底看成本报表时,一下就能看出谁测试消耗最大,这比看原始日志省力太多了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询