DIY 监控仪表盘:使用 CiuicAPI 统计 DeepSeek 资源利用率

今天 4阅读
󦘖

免费快速起号(微信号)

yycoo88

添加微信

在当前AI应用日益普及的背景下,开发者和企业越来越关注模型调用的成本与资源利用效率。DeepSeek 作为一个高性能、低成本的国产大模型提供商,提供了丰富的API接口供开发者使用。然而,如何实时监控其资源使用情况(如调用次数、token消耗、响应时间等)仍然是一个挑战。

本文将介绍如何通过自定义开发一个监控仪表盘,结合 CiuicAPIDeepSeek API,实现对 DeepSeek 模型调用资源的统计与可视化展示。我们将从数据采集、数据处理到前端展示一步步进行说明,并提供完整的代码示例,适合有一定编程基础的技术人员参考。


项目背景与目标

1.1 为什么需要监控?

成本控制:DeepSeek 的 API 调用通常按照 token 数量计费,了解资源使用趋势有助于优化成本。性能分析:监控响应时间、并发请求等指标可以辅助系统优化。异常检测:及时发现调用失败、超时或滥用等情况。

1.2 技术选型

功能模块技术栈
后端服务Python + Flask
数据存储SQLite / Redis
前端仪表盘HTML + Bootstrap
图表可视化Chart.js
API 接口DeepSeek API
日志收集代理自定义中间层

架构设计概览

[用户调用]     ↓[调用代理层] ——> [记录日志 & 转发至 DeepSeek]    ↓[Flask API Server] ——> [解析并存储调用信息]    ↓[前端 Dashboard] ——> [展示图表与统计数据]

为了不直接修改已有调用逻辑,我们采用“代理”方式拦截所有对 DeepSeek 的调用,并在此过程中记录相关信息。


实现步骤详解

3.1 创建调用代理层

首先,我们需要创建一个中间代理,用于转发 DeepSeek 请求,并在转发前后记录相关参数。

import requestsfrom flask import Flask, request, jsonifyimport timeimport sqlite3app = Flask(__name__)DEEPSEEK_API_KEY = "your_deepseek_api_key"DEEPSEEK_URL = "https://api.deepseek.com/v1/chat/completions"# 初始化数据库def init_db():    conn = sqlite3.connect('deepseek_usage.db')    c = conn.cursor()    c.execute('''CREATE TABLE IF NOT EXISTS usage_log                 (id INTEGER PRIMARY KEY AUTOINCREMENT,                  timestamp REAL,                  prompt_tokens INTEGER,                  completion_tokens INTEGER,                  total_tokens INTEGER,                  response_time REAL)''')    conn.commit()    conn.close()@app.route('/v1/chat/completions', methods=['POST'])def proxy_deepseek():    headers = {        'Authorization': f'Bearer {DEEPSEEK_API_KEY}',        'Content-Type': 'application/json'    }    start_time = time.time()    resp = requests.post(DEEPSEEK_URL, json=request.json, headers=headers)    end_time = time.time()    data = resp.json()    # 提取 token 使用信息    usage = data.get('usage', {})    prompt_tokens = usage.get('prompt_tokens', 0)    completion_tokens = usage.get('completion_tokens', 0)    total_tokens = usage.get('total_tokens', 0)    response_time = end_time - start_time    # 存储日志    conn = sqlite3.connect('deepseek_usage.db')    c = conn.cursor()    c.execute("INSERT INTO usage_log VALUES (?, ?, ?, ?, ?, ?)",              (None, start_time, prompt_tokens, completion_tokens, total_tokens, response_time))    conn.commit()    conn.close()    return jsonify(data), resp.status_codeif __name__ == '__main__':    init_db()    app.run(host='0.0.0.0', port=5000)

这段代码会监听 /v1/chat/completions 接口,作为 DeepSeek 的代理,并记录每次调用的:

时间戳输入输出 token 数量总 token 数量响应时间

你可以根据实际需求扩展支持其他接口,比如 /embeddings 等。


3.2 提供查询接口(CiuicAPI)

接下来,我们构建一个简单的 API 来暴露这些统计数据,供前端调用。

@app.route('/api/usage_summary', methods=['GET'])def usage_summary():    conn = sqlite3.connect('deepseek_usage.db')    c = conn.cursor()    c.execute("SELECT SUM(prompt_tokens), SUM(completion_tokens), SUM(total_tokens), AVG(response_time), COUNT(*) FROM usage_log")    result = c.fetchone()    conn.close()    summary = {        "prompt_tokens": result[0],        "completion_tokens": result[1],        "total_tokens": result[2],        "avg_response_time": round(result[3], 2),        "total_requests": result[4]    }    return jsonify(summary)

该接口返回总调用量、平均响应时间等汇总信息。


3.3 构建前端仪表盘

我们使用简单的 HTML + Bootstrap + Chart.js 实现前端页面,展示调用趋势图。

index.html

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>DeepSeek Usage Dashboard</title>    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script></head><body class="container py-4">    <h1>DeepSeek 资源使用监控仪表盘</h1>    <div class="row mb-4">        <div class="col-md-3">            <div class="card text-center p-3">                <h5>Prompt Tokens</h5>                <p id="prompt-tokens">--</p>            </div>        </div>        <div class="col-md-3">            <div class="card text-center p-3">                <h5>Completion Tokens</h5>                <p id="completion-tokens">--</p>            </div>        </div>        <div class="col-md-3">            <div class="card text-center p-3">                <h5>Total Tokens</h5>                <p id="total-tokens">--</p>            </div>        </div>        <div class="col-md-3">            <div class="card text-center p-3">                <h5>Avg Response Time (s)</h5>                <p id="response-time">--</p>            </div>        </div>    </div>    <canvas id="usageChart" width="800" height="400"></canvas>    <script>        async function fetchData() {            const res = await fetch('/api/usage_summary');            const data = await res.json();            document.getElementById('prompt-tokens').innerText = data.prompt_tokens;            document.getElementById('completion-tokens').innerText = data.completion_tokens;            document.getElementById('total-tokens').innerText = data.total_tokens;            document.getElementById('response-time').innerText = data.avg_response_time;            // TODO: 添加历史图表        }        fetchData();    </script></body></html>

目前只实现了静态汇总信息。你可以在 /api/usage_history 中添加按天、小时聚合的数据接口,并在前端绘制折线图。


部署建议

4.1 部署环境

Python 3.9+FlaskSQLite(适用于小型项目)Nginx + Gunicorn(生产环境下推荐)

4.2 安全建议

使用 HTTPS 加密通信对 /v1/chat/completions 接口做身份验证(例如 JWT 或 API Key)设置访问频率限制防止滥用

总结与扩展方向

本项目展示了如何通过自定义代理 + 数据库 + 前端界面的方式,实现对 DeepSeek API 调用资源的监控。虽然只是一个初步版本,但已经具备了基本的功能框架:

✅ 实时调用拦截
✅ 资源使用统计
✅ 简单数据可视化

可扩展方向:

支持多用户权限管理接入 Prometheus + Grafana 实现更专业的监控增加每日/每周/每月报表功能结合 Slack/Webhook 实现告警机制引入 Redis 缓存提升性能

如果你希望进一步打造企业级的 AI 平台资源管理系统,这套方案是一个不错的起点。


随着AI模型调用成本逐渐透明化,建立一套完善的资源监控体系显得尤为重要。本文通过技术手段构建了一个轻量级但实用的监控仪表盘,帮助开发者更好地理解DeepSeek API的使用情况。

欢迎你根据自己的业务需求继续拓展这个项目,也欢迎留言交流你的DIY经验!


GitHub 示例仓库(可选)
如果你希望获取完整代码结构,也可以参考以下目录结构:

deepseek-monitor/├── app.py├── deepseek_usage.db├── templates/│   └── index.html└── requirements.txt

requirements.txt

flaskrequestschartjs

运行方式:

pip install -r requirements.txtpython app.py

访问 http://localhost:5000 查看仪表盘。

免责声明:本文来自网站作者,不代表ixcun的观点和立场,本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。客服邮箱:aviv@vne.cc
您是本站第26357名访客 今日有29篇新文章

微信号复制成功

打开微信,点击右上角"+"号,添加朋友,粘贴微信号,搜索即可!