LLMOps监控指标:token消耗、幻觉率
LLMOps 监控的关键不是只看模型响应快不快,而是把成本、质量和工具链路一起盯住。
本文围绕 token 消耗、幻觉率、工具调用成功率三个核心指标,讲清楚数据从哪来、怎么算、怎么可视化,以及最容易踩的坑,让零基础运维也能独立搭出一套可用的监控面板。
这三个指标分别暴露什么问题
先弄清每个指标的业务含义,监控才不会变成单纯的数字展示。
- token 消耗:代表调用大模型的成本信号。通常拆成输入 token 和输出 token,按模型单价换算成费用。如果消耗突然飙高,常见原因是循环调用、日志被当成上下文回传,或者某条业务在反复重试。
- 幻觉率:指模型生成内容与事实不一致的比例,属于质量信号。这个指标没有统一算法,需要结合业务定义,比如用人工抽检、答案相似度对比,或让强模型给弱模型打分来估算。
- 工具调用成功率:大模型在回答过程中会调用搜索、计算器、内部 API 等工具,这个指标统计的是工具调用成功次数占总调用次数的比例。成功率低,往往说明工具接口不稳定,或者模型生成的参数格式不符合工具要求。
数据从哪来:先把关键事件写进日志
无论用什么监控工具,第一步都是采集原始数据。
推荐在 API 网关或 LLM 代理层埋点,每完成一次请求就输出一条结构化日志。
以下是一条 JSON 日志示例:
{
"request_id": "a3f5c8",
"timestamp": "2025-06-01T10:15:00Z",
"model": "gpt-4o-mini",
"session_id": "user-9527",
"usage": {
"prompt_tokens": 1200,
"completion_tokens": 356,
"total_tokens": 1556
},
"tool_calls": [
{
"name": "search_web",
"status": "success",
"duration_ms": 832
}
],
"hallucination_score": 0.02
}
实际部署时,可以用 Filebeat 或 Fluentd 把日志转发到 Elasticsearch、Loki 或 ClickHouse。
如果不想额外搭建存储,也可以直接让应用代码把指标推到 Prometheus Pushgateway。
指标怎么算:用 Prometheus 暴露自定义指标
以 Python 为例,使用 prometheus_client 库暴露指标。
建议在应用进程内注册以下指标:
from prometheus_client import Counter, Gauge, Histogram
TOKEN_USAGE = Counter("llm_tokens_total", "Token usage counters", ["type", "model"])
TOOL_CALLS = Counter("llm_tool_calls_total", "Tool call result counters", ["tool", "status"])
HALLUCINATION_GAUGE = Gauge("llm_hallucination_ratio", "Estimated hallucination ratio")
每次模型响应返回后,更新对应指标:
TOKEN_USAGE.labels(type="prompt", model=model).inc(usage["prompt_tokens"])
TOKEN_USAGE.labels(type="completion", model=model).inc(usage["completion_tokens"])
TOOL_CALLS.labels(tool="search_web", status="success").inc()
HALLUCINATION_GAUGE.set(score)
然后在 Prometheus 的 scrape_configs 中加上这个应用的服务发现地址。
这样就能通过 PromQL 查询到指标,比如工具调用成功率:
sum(rate(llm_tool_calls_total{status="success"}[5m]))
/
sum(rate(llm_tool_calls_total[5m]))
用 Grafana 做面板和告警
数据进了 Prometheus 后,打开 Grafana,添加 Prometheus 数据源,然后创建 Dashboard。
三个必加的面板:
- Token 消耗趋势:用
sum(rate(llm_tokens_total[1h])) by (type),折线图展示输入、输出和总的 token 速率。 - 幻觉率波动:直接用
llm_hallucination_ratio画时间序列,配合人工标注事件做对比。 - 工具调用成功率:用上面给的 PromQL 公式,设置为百分比单位,低于 90% 时颜色变红。
告警规则同样在 Grafana 里配置,也可以直接写进 Prometheus 的 alert 规则。
举一个简单例子:连续 5 分钟工具调用成功率低于 90%,触发 Warning;
token 消耗速率超过前一天同期均值 2 倍,触发 Critical。
告警通知建议接到钉钉或企业微信机器人,方便第一时间处理。
避坑说明与验证方法
监控搭好不代表数据可靠,这几个坑最容易误导判断:
- token 统计别漏单位。有的接口返回 token,有的返回字符数,换算错误会让成本预估差很多。
- 幻觉率别只依赖模型自评。模型自己打分往往偏高,必须结合人工抽检或外部证据,先定义“幻觉”的落地标准。
- 工具调用失败要拆两层看。是工具接口本身 500,还是模型给的参数格式不对?分别打上不同状态码,否则后续排查分不清责任。
验证整个链路时,可以手动发送一条测试请求,故意让工具调用失败一次,观察 Grafana 面板是否在 1-2 分钟内更新,再检查告警是否触发。
如果面板没变化,优先看 Prometheus target 状态和日志是否正常写入。
如果你正在处理 LLMOps 监控指标中的 token 消耗、幻觉率、工具调用成功率问题,建议按本文步骤从日志埋点做起,再逐步加告警和可视面。
遇到异常时先回看数据源是否完整,再调整计算口径,比盲目改代码更高效。