配额管理
如果缺少控制,AI 成本可能快速增长。Almirant 的配额系统提供必要的防护措施,帮助你控制支出,而无需微观管理每次执行。
什么是配额
配额是可配置的限制,用于定义组织可以消耗的以下资源:
| 指标 | 描述 |
|---|---|
| Token | 可处理的最大 Token 数量 |
| USD 成本 | 以美元计的最高支出 |
| 请求数 | 对提供商 API 的最大调用次数 |
可以为每个 AI 提供商(OpenAI、Anthropic)配置独立配额,并根据时间段定义不同限制。
周期类型
配额按周期配置,让你可以设置符合预算的限制:
| 类型 | 描述 | 用例 |
|---|---|---|
| 每日 | 每 24 小时于午夜(UTC)重置 | 对高使用量团队进行精细控制 |
| 每周 | 每周一午夜重置 | 在灵活性和控制之间取得平衡 |
| 每月 | 每月第一天重置 | 与计费周期保持一致 |
提示
建议先设置与 AI 预算一致的每月配额;如果发现消耗峰值影响整个团队的可用性,再添加每日配额。
配置配额
要配置组织配额:
- 进入 设置 > AI 配额(或 配额管理)。
- 选择要配置的提供商。
- 为每种周期类型定义限制:
- 最大 Token 数:每个周期的 Token 限制
- 最大 USD 成本:以美元计的支出限制
- 最大请求数:API 调用限制
- 使用 已启用 开关启用或禁用配额。
- 保存更改。
按提供商配置
每个提供商可有独立配置。在以下情况下很有用:
- 为每个提供商分配不同预算
- 在测试另一个提供商时,更严格地限制一个提供商
- 需要单独控制高级模型(如 o1)的成本
配置示例:
OpenAI:
- 每月:500,000 Token / 50 USD / 1,000 次请求
- 每日:50,000 Token / 10 USD / 200 次请求
Anthropic:
- 每月:300,000 Token / 30 USD / 500 次请求
告警系统
当使用量接近配置的限制时,Almirant 会主动通知你。告警会在以下阈值触发:
| 告警类型 | 阈值 | 建议操作 |
|---|---|---|
| warning_75 | 限制的 75% | 密切监控使用量 |
| warning_80 | 限制的 80% | 考虑减少非关键操作 |
| warning_90 | 限制的 90% | 如有必要,准备增加配额 |
| exceeded | 限制的 100% | 配额已耗尽,新操作被阻止 |
接收告警
告警会发送至:
- 组织管理员:通过电子邮件接收所有告警
- 设置面板:活动告警显示在配额部分
- 仪表板:存在待处理告警时显示视觉指示器
确认告警
你可以确认告警,表示已采取操作:
- 前往 设置 > AI 配额。
- 在 活动告警 部分中,点击告警。
- 选择 确认,将其标记为已处理。
已确认的告警不会在同一周期内再次显示,但如果达到下一个阈值,则会生成新告警。
查看当前使用量
配额管理页面按提供商和周期显示当前消耗摘要:
| 字段 | 描述 |
|---|---|
| 提供商 | OpenAI 或 Anthropic |
| 周期类型 | 每日、每周或每月 |
| 已用 / 最大 Token 数 | 当前消耗量与限制的对比 |
| 已用 / 最大成本 | 当前支出与限制的对比 |
| 已用 / 最大请求数 | 当前调用量与限制的对比 |
| 百分比 | 使用量的视觉指示器 |
| 周期结束 | 配额重置时间 |
信息
显示的百分比对应 Token、成本和请求数中的最高指标,确保你看到限制最严格的指示器。
自动恢复
周期结束时,配额会自动重置:
- 重置计数器:Token、成本和请求数的计数器归零。
- 解除操作阻止:已阻止的操作可以恢复。
- 清理告警:上一周期的告警会被归档。
无需执行任何手动操作来续期配额。
被阻止操作的行为
配额耗尽时:
- AI 规划:新对话会显示配额耗尽消息
- AI 智能体:作业保持在
pending状态,并在配额可用时自动处理 - 运行中的作业:不会被中断,但无法启动对提供商的新调用
配额续期后,待处理作业会按 FIFO(先进先出)顺序开始处理。
最佳实践
- 设置早期告警:75% 阈值让你有时间在配额耗尽前作出反应。
- 使用每日配额进行精细控制:如果团队一天内消耗很多,每日配额可避免剩余一周无法使用服务。
- 使每月配额与计费保持一致:配置与你每月 AI 预算相匹配的限制。
- 审查按项目划分的明细:识别高消耗项目,以便优化或调整预期。
- 为紧急情况预留余量:不要将配额设置为预算的 100%;保留 10-15% 的余量。
面向开发者
MCP 工具
以下工具可通过 MCP 查询和验证配额:
| 工具 | 描述 | 主要参数 |
|---|---|---|
check_quota | 检查某项操作是否有可用配额 | organizationId, provider, estimatedTokens |
get_quota_usage | 获取按提供商和周期划分的详细消耗信息 | organizationId, provider, periodType |
示例:在操作前检查配额
工具:check_quota
参数:
organizationId: "uuid-de-la-organizacion"
provider: "openai"
estimatedTokens: 10000
有可用配额时的响应:
{
"available": true,
"provider": "openai",
"remainingTokens": 45000,
"remainingCostUsd": 12.50,
"remainingRequests": 150,
"periodEnd": "2024-02-01T00:00:00Z"
}
没有配额时的响应:
{
"available": false,
"provider": "openai",
"remainingTokens": 0,
"reason": "exceeded",
"periodEnd": "2024-02-01T00:00:00Z"
}
示例:查询详细使用量
工具:get_quota_usage
参数:
organizationId: "uuid-de-la-organizacion"
provider: "openai"
periodType: "monthly"
响应:
{
"provider": "openai",
"periodType": "monthly",
"maxTokens": 500000,
"maxCostUsd": 50.00,
"maxRequests": 1000,
"usedTokens": 125000,
"usedCostUsd": 12.50,
"usedRequests": 250,
"percentTokens": 25,
"percentCost": 25,
"percentRequests": 25,
"periodStart": "2024-01-01T00:00:00Z",
"periodEnd": "2024-02-01T00:00:00Z"
}
数据模型
作为技术参考,以下是配额系统的主要类型:
QuotaConfig
| 字段 | 类型 | 描述 |
|---|---|---|
id | UUID | 配置的唯一标识符 |
provider | string | AI 提供商(openai、anthropic) |
quotaType | QuotaType | 周期类型(daily、weekly、monthly) |
maxTokens | number | Token 限制 |
maxCostUsd | number | USD 成本限制 |
maxRequests | number | 请求数限制 |
isActive | boolean | 配额是否处于活动状态 |
UsageSummaryItem
| 字段 | 类型 | 描述 |
|---|---|---|
provider | string | AI 提供商 |
periodType | QuotaType | 周期类型 |
maxTokens | number | 已配置限制 |
usedTokens | number | 已消耗 Token |
percentTokens | number | 使用百分比(0-100) |
maxCostUsd | number | 成本限制 |
usedCostUsd | number | 已消耗成本 |
percentCost | number | 成本百分比 |
maxRequests | number | 请求数限制 |
usedRequests | number | 已完成请求数 |
percentRequests | number | 请求数百分比 |
periodEnd | DateTime | 当前周期结束时间 |
QuotaAlert
| 字段 | 类型 | 描述 |
|---|---|---|
id | UUID | 告警标识符 |
providerQuotaId | UUID | 对 QuotaConfig 的引用 |
alertType | AlertType | 告警类型(warning_75、warning_80、warning_90、exceeded) |
periodStart | DateTime | 告警周期开始时间 |
message | string | 描述性消息 |
acknowledgedAt | DateTime | 确认时间(未确认时为 null) |