首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >AI成本归因:基于API日志的多维度统计与异常检测

AI成本归因:基于API日志的多维度统计与异常检测

原创
作者头像
AI科技新势力
修改2026-04-20 22:15:41
修改2026-04-20 22:15:41
630
举报

一、技术实现方案

以下从数据采集、维度设计、查询方法、异常检测四个层面展开。

1.1 数据采集:统一代理层记录日志

在API调用链路中增加一个统一代理层,所有AI请求先经过该代理,再由代理转发到各模型厂商。代理层记录每次调用的完整信息。

关键字段设计

字段

类型

说明

request_id

String

全局唯一请求ID

timestamp

DateTime

调用时间

team

String

归属团队

application

String

调用应用

model

String

模型名称

user_id

String

用户标识

scenario

String

使用场景

input_tokens

Int

输入Token数

output_tokens

Int

输出Token数

cost

Decimal

本次调用成本(USD)

成本计算公式(以OpenAI为例):

text

复制

代码语言:javascript
复制
cost = (input_tokens / 1000) × input_price + (output_tokens / 1000) × output_price

不同模型的价格从官方API获取,可在代理层配置表中维护。

1.2 数据库表结构(ClickHouse示例)
代码语言:javascript
复制
CREATE TABLE ai_usage_logs (
    request_id String,
    timestamp DateTime,
    team String,
    application String,
    model String,
    user_id String,
    scenario String,
    input_tokens UInt32,
    output_tokens UInt32,
    cost Float64,
    response_time_ms UInt32
) ENGINE = MergeTree()
ORDER BY (timestamp, team, application);
1.3 多维度查询SQL

按团队归因

代码语言:javascript
复制
SELECT team, SUM(cost) as total_cost
FROM ai_usage_logs
WHERE timestamp >= '2026-03-01'
GROUP BY team
ORDER BY total_cost DESC;

按应用+模型归因

代码语言:javascript
复制
SELECT application, model, SUM(cost) as cost
FROM ai_usage_logs
GROUP BY application, model;

按用户归因(Top消耗者)

代码语言:javascript
复制
SELECT user_id, SUM(cost) as cost, COUNT(*) as call_count
FROM ai_usage_logs
WHERE timestamp >= today() - INTERVAL 7 DAY
GROUP BY user_id
ORDER BY cost DESC
LIMIT 10;

按场景归因

代码语言:javascript
复制
SELECT scenario, 
       AVG(input_tokens + output_tokens) as avg_tokens,
       SUM(cost) as total_cost
FROM ai_usage_logs
GROUP BY scenario;
1.4 成本异常检测方法

单用户日成本告警

代码语言:javascript
复制
SELECT user_id, SUM(cost) as daily_cost
FROM ai_usage_logs
WHERE timestamp >= today()
GROUP BY user_id
HAVING daily_cost > 100;

重复调用检测(同一用户、同一场景、短时间相同问题):

代码语言:javascript
复制
SELECT user_id, scenario, input_text, COUNT(*) as dup_count
FROM ai_usage_logs
WHERE timestamp >= now() - INTERVAL 1 HOUR
GROUP BY user_id, scenario, input_text
HAVING COUNT(*) > 5;

环比异常检测(本周 vs 上周):

代码语言:javascript
复制
WITH weekly AS (
  SELECT application, SUM(cost) as cost,
         toStartOfWeek(timestamp) as week
  FROM ai_usage_logs
  GROUP BY application, week
)
SELECT application, 
       cost - lagInFrame(cost, 1) OVER (PARTITION BY application ORDER BY week) as cost_diff
FROM weekly;
1.5 实施步骤
  1. 搭建统一代理,记录上述字段到本地日志文件
  2. 将日志推入ClickHouse
  3. 执行上述CREATE TABLE和查询SQL
  4. 配置日成本环比告警(如增长>20%触发)
  5. 通过Grafana连接ClickHouse,构建可视化仪表盘

以上步骤可由一名后端工程师在3个工作日内完成。


二、总结

通过统一代理层日志记录、多维度SQL统计和异常检测,可以解决AI成本归属不清的问题。上述方案不依赖特定商业产品,基于开源组件即可实现。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、技术实现方案
    • 1.1 数据采集:统一代理层记录日志
    • 1.2 数据库表结构(ClickHouse示例)
    • 1.3 多维度查询SQL
    • 1.4 成本异常检测方法
    • 1.5 实施步骤
  • 二、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档