📈 实时仪表盘
按租户检视:
👥 租户数
{{ dashboard.tenants || 0 }}
活跃租户
⚡ 总流量
{{ dashStats.total_requests || 0 }}
成功 {{ dashStats.success_count || 0 }} / 失败 {{ dashStats.failed_count || 0 }}
🛡 风险拦截率
{{ dashStats.total_requests ? ((dashStats.shield_blocked || 0) / dashStats.total_requests * 100).toFixed(1) : '0.0' }}%
通过 {{ dashStats.shield_passed || 0 }} / 拦截 {{ dashStats.shield_blocked || 0 }}
🤖 模型路由
{{ dashboard.models_enabled || Object.keys(dashStats.model_usage || {}).length }} 个
Token {{ formatNumber(dashStats.total_tokens || 0) }}
💰 实际成本
¥{{ (dashStats.actual_cost || 0).toFixed(4) }}
假设最贵: ¥{{ (dashStats.hypothetical_cost || 0).toFixed(4) }}
✨ 费用优化
¥{{ (dashStats.cost_saved || 0).toFixed(4) }}
节省 {{ (dashStats.cost_saved_percent || 0).toFixed(1) }}% — 智能路由优化
🛡 安全拦截明细
共 {{ Object.keys(dashStats.shield_reasons || {}).length }} 种类型
| 拦截类型 | 次数 | |
|---|---|---|
| {{ secCategoryLabel(reason) }} | {{ count }} |
| 时间 | 租户 | 方向 | 动作 | 风险详情 | 来源IP |
|---|---|---|---|---|---|
| {{ formatTime(e.created_at) }} | {{ tenantNameMap[e.tenant_id] || e.tenant_id }} | {{ e.direction === 'input' ? '⬇️ 入' : '⬆️ 出' }} | {{ e.action === 'block' ? '🚫 拦截' : '✏️ 脱敏' }} | {{ e.client_ip }} |
暂无事件
🤖 模型路由分布
⏰ 按时段请求量
💰 模型成本分布
🛡 安全拦截比例
📋 最近请求
| 时间 | 租户 | 模型 | 状态 | 盾结果 | Token | 成本 | 延迟 |
|---|---|---|---|---|---|---|---|
| {{ formatTime(e.timestamp) }} | {{ e.tenant_id }} | {{ e.model_id || '-' }} | {{ statusLabel(e.status) }} | {{ shieldLabel(e.shield_result) }} | {{ e.total_tokens || '-' }} | {{ e.cost ? '¥'+e.cost.toFixed(4) : '-' }} | {{ e.latency_ms }}ms |
| 暂无数据,等待请求... | |||||||
🔌 如何接入龙虾盾
1获取 API Key
在「租户管理」中创建租户,系统自动生成 API Key。
2替换 Base URL
将应用中的 OpenAI base_url 改为龙虾盾网关地址:
BASE_URL = "http://your-server:8080/v1"
3使用 model=auto
设置
model: "auto" 启用智能路由,或指定具体模型名如 qwen3.5-plus4完成!开始请求
龙虾盾会自动进行安全检测、智能路由、负载均衡和审计记录。
📟 cURL 示例
curl http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [
{"role": "user", "content": "Hello!"}
],
"stream": true
}'
🐍 Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8080/v1",
api_key="sk-your-api-key",
)
resp = client.chat.completions.create(
model="auto",
messages=[{"role": "user", "content": "Hello!"}]
)
print(resp.choices[0].message.content)
🟨 Node.js
const resp = await fetch("http://localhost:8080/v1/chat/completions", {
method: "POST",
headers: {
"Authorization": "Bearer sk-your-api-key",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "auto",
messages: [{ role: "user", content: "Hello!" }]
})
});
💡 提示: 龙虾盾完全兼容 OpenAI API 格式。任何支持自定义 base_url 的应用(如 Cursor、Continue、ChatGPT-Next-Web 等)均可无缝接入,只需修改 Base URL 和 API Key 即可。
👥 租户管理
共 {{ tenants.length }} 个租户
| ID | 名称 | 用户名 | Key 数量 | 💎 积分 | 日限额 | RPM | 操作 |
|---|---|---|---|---|---|---|---|
| {{ t.id }} | {{ t.name }} | {{ t.username || '-' }} |
🔑 {{ t.key_count }} 个 | 💎 {{ formatNumber(t.credits || 0) }} | {{ formatNumber(t.daily_quota) }} | {{ t.rate_limit }}/min |
🤖 租户
{{ tenantModels.tenantId }} 的模型配置| 模型 ID | 状态 | 能力 | 多模态 | 输入价格 | 输出价格 | 成本 | 权重 | 优先级 | 特长 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ m.id }} | {{ m.enabled ? '启用' : '禁用' }} | {{ m.tier }} | {{ m.multimodal ? '✅' : '❌' }} |
¥{{ m.input_cost_per_1m }}/1M
|
¥{{ m.output_cost_per_1m }}/1M
|
{{ m.cost_tier }} | {{ m.weight }} | {{ m.priority }} |
|
📋 审计日志
共 {{ auditTotal }} 条记录
| 时间 | 请求ID | 租户 | 模型 | 流式 | 状态 | 输入 | 输出 | 成本 | 延迟 | 盾结果 | 来源IP |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ formatTime(e.timestamp) }} | {{ e.request_id?.substring(0,8) }}... | {{ e.tenant_id }} | {{ e.model_id || '-' }} | {{ e.stream ? '🔄' : '📦' }} | {{ statusLabel(e.status) }} | {{ e.input_tokens }} | {{ e.output_tokens }} | {{ e.cost ? '¥'+e.cost.toFixed(4) : '-' }} | {{ e.latency_ms }}ms | {{ shieldLabel(e.shield_result) }} | {{ e.client_ip }} |
⚙️ 配置管理
💎 积分扣费配置
🔀 智能路由 (积分/次)
🚀 高级网关 (积分/次)
💱 兑换比例 (1元 = N积分)
💡 示例: 充值 10 元 = {{ 10 * (creditsConfig.exchange_rate || 10) }} 积分。智能路由一次消耗 {{ creditsConfig.smart_routing_cost || 1 }} 积分,高级网关一次消耗 {{ creditsConfig.advanced_gateway_cost || 2 }} 积分。
🛡 安全扫描配置
📥 输入安全检测
📏 最大输入长度:
🚫 关键词黑名单:
💉 注入攻击模式:
📤 输出安全检测
🛡 安全防护
租户
Key
📈 安全事件趋势
🥧 风险类型分布
🔒 安全事件列表 ({{ secEventsTotal }})
| 时间 | 租户 | 分类 | 方向 | 动作 | 风险详情 | 来源IP | |
|---|---|---|---|---|---|---|---|
| {{ formatTime(e.created_at) }} | {{ tenantNameMap[e.tenant_id] || e.tenant_id }} | {{ secCategoryLabel(e.category) }} | {{ e.direction === 'input' ? '⬇️ 入' : '⬆️ 出' }} | {{ e.action === 'block' ? '🚫 拦截' : '✏️ 脱敏' }} | {{ e.client_ip }} | ||
| 暂无安全事件 ✅ | |||||||
事件ID
{{ secDetailEvent.id }}
时间
{{ formatTime(secDetailEvent.created_at) }}
租户
{{ tenantNameMap[secDetailEvent.tenant_id] || secDetailEvent.tenant_id }}
API Key
{{ secDetailEvent.api_key_id || '-' }}
分类
{{ secCategoryLabel(secDetailEvent.category) }}
方向
{{ secDetailEvent.direction === 'input' ? '⬇️ 输入端' : '⬆️ 输出端' }}
动作
{{ secDetailEvent.action === 'block' ? '🚫 拦截' : '✏️ 脱敏' }}
来源IP
{{ secDetailEvent.client_ip }}
请求ID
{{ secDetailEvent.request_id || '-' }}
风险详情
{{ riskLabel(secDetailEvent.risk_detail) || '-' }}
触发内容
{{ secDetailEvent.content || '(未记录)' }}
🛡️ 账号管理
管理员账号 ({{ admins.length }})
| ID | 用户名 | 角色 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|---|
| {{ a.id }} | {{ a.username }} | {{ a.role }} | 🔒 已锁定 正常 | {{ formatTime(a.created_at) }} |
|