[RFC] 113 - Client-Side Service Provider Model Usage Statistics | 客户端侧服务商模型用量统计 #7575
cy948
started this conversation in
RFC | 特性开发
Replies: 2 comments 4 replies
-
Beta Was this translation helpful? Give feedback.
4 replies
-
一、数据采集侧交互过程数据采集侧的核心任务是当 AI 请求发生时,准确、完整地记录相关信息到 核心参与者:
交互流程 (Mermaid Sequence Diagram): sequenceDiagram
participant ClientApp
participant AIGateway as AI Gateway (Edge/Node.js)
participant DownstreamAIService as Downstream AI Service
participant Database
participant AggregationService as Aggregation Service (Cron Job/Worker)
ClientApp->>AIGateway: 1. 发起 AI 请求 (e.g., /v1/chat/completions)
AIGateway->>AIGateway: 2. 记录请求开始时间, user_id, api_key_id, runtime_environment等初始信息
AIGateway->>DownstreamAIService: 3. 调用下游 AI 服务
DownstreamAIService-->>AIGateway: 4. 返回 AI 服务响应 (成功或失败)
AIGateway->>AIGateway: 5. 计算 tokens, cost, latency; 记录 model_name, model_provider, status_code 等
alt 请求成功
AIGateway->>Database: 6a. INSERT INTO RequestLog (包含所有成功请求的字段)
Database-->>AIGateway: 确认写入
else 请求失败 (在AI Gateway或Downstream AI Service层面)
AIGateway->>AIGateway: 记录错误信息 (error_code, error_message, error_type)
AIGateway->>Database: 6b. INSERT INTO ErrorLog (包含所有错误日志的字段)
Database-->>AIGateway: 确认写入
end
AIGateway-->>ClientApp: 7. 返回最终响应给客户端
%% 数据聚合过程 (通常异步执行)
Note over AggregationService, Database: 周期性执行 (e.g., 每小时/每天)
AggregationService->>Database: 8. SELECT * FROM RequestLog WHERE start_time >= last_aggregation_point
Database-->>AggregationService: 返回原始日志数据
AggregationService->>AggregationService: 9. 按 (date, user_id,model_name, model_provider,tag 等) 分组聚合数据 (SUM(tokens), SUM(cost), COUNT(requests))
AggregationService->>Database: 10. INSERT or UPDATE DailyUsageSummary (写入/更新聚合后的统计数据)
Database-->>AggregationService: 确认写入/更新
流程说明:
二、数据展示侧交互过程数据展示侧的核心任务是从数据库中高效地查询数据(主要依赖 核心参与者:
交互流程 (Mermaid Sequence Diagram): sequenceDiagram
participant User
participant DashboardUI as Dashboard UI (Frontend)
participant BackendAPI as Backend API
participant Database
User->>DashboardUI: 1. 打开Dashboard / 应用筛选条件 (e.g., 日期范围, Group by 'model_provider')
DashboardUI->>DashboardUI: 2. 构建API请求参数
DashboardUI->>BackendAPI: 3. GET /api/usage-summary?start_date=...&end_date=...&group_by=model_provider&filter_user_id=...
BackendAPI->>Database: 4. SELECT date, model_provider, SUM(total_cost) as spend, SUM(total_tokens) as tokens, SUM(total_requests) as requests FROM DailyUsageSummary WHERE date BETWEEN ? AND ? [AND user_id = ?] GROUP BY date, model_provider ORDER BY date
Database-->>BackendAPI: 5. 返回聚合后的统计数据
BackendAPI->>BackendAPI: 6. (可选) 进一步处理/格式化数据
BackendAPI-->>DashboardUI: 7. 返回JSON数据
DashboardUI->>DashboardUI: 8. 渲染图表 (e.g., 消费趋势折线图) 和表格
User->>DashboardUI: 9. (可选) 点击图表项进行下钻或查看详细日志
alt 用户请求查看详细日志 (下钻)
DashboardUI->>BackendAPI: 10a. GET /api/request-logs?request_id=... OR /api/request-logs?date=...&user_id=...&model_name=... (查询条件更细)
BackendAPI->>Database: 11a. SELECT * FROM RequestLog WHERE ... [LIMIT N] OR SELECT * FROM ErrorLog WHERE ...
Database-->>BackendAPI: 返回原始日志数据
BackendAPI-->>DashboardUI: 返回JSON数据
DashboardUI->>DashboardUI: 显示详细日志弹窗或页面
end
流程说明:
通过这样的设计,数据采集侧保证了数据的完整性和后续聚合的基础,数据展示侧则通过查询预聚合的 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
背景 (Background)
随着大语言模型技术的发展,用户可选择的模型服务商日益增多,包括 OpenAI、Anthropic、Google Gemini、Groq,以及像 DeepSeek, Qwen 这样的开源模型和各种自托管/本地部署的模型。用户通常会在客户端(如聊天界面、开发工具)中配置多个模型服务商,以便根据不同任务或成本效益进行切换。
然而,目前用户往往缺乏一个统一、便捷的方式来了解自己在客户端中对这些不同模型服务商的实际使用情况。用户可能想知道:
了解这些信息有助于用户更好地管理成本、优化模型选择策略,并直观地了解自己的模型使用偏好。
当前现状 (Current Situation)
目前追踪模型使用量主要有以下几种方式:
建议增加的功能 (Suggested Feature)
建议在客户端应用程序内部增加模型用量统计功能。客户端本身是所有模型请求的发起点(无论是发往云端 API 还是本地模型),因此具备记录这些请求信息的天然优势。
核心实现思路:
gpt-4o
,claude-3-opus-20240229
,llama3-70b
)。usage
字段。对于无法提供精确 Token 数的(如部分流式响应结束时、本地模型),可以考虑仅记录请求次数,或在未来版本中进行估算。需要统计的关键指标:
数据展示与用户界面 (Data Display and UI)
为了让用户能够方便地查看和理解用量统计,建议:
界面示例 (概念图):
请求次数分布 (按服务商/模型):
Token 总用量对比 (按服务商/模型):
(注意: Mermaid 的 xychart 可能在所有环境中渲染效果不同,这里用 K Tokens 作为单位)
详细数据:
潜在扩展 (Potential Extensions)
总结 (Summary)
在客户端增加模型用量统计功能,可以为用户提供一个统一、便捷的方式来了解和管理他们对不同模型服务商的使用情况。这有助于用户优化成本、做出更明智的模型选择,并提升对自身工作流的洞察力。该功能利用了客户端作为请求发起点的优势,实现成本相对较低,且能提供直接面向用户的价值。
Links
Beta Was this translation helpful? Give feedback.
All reactions