mirror of
https://github.com/fawney19/Aether.git
synced 2026-01-08 18:52:28 +08:00
- 新增 src/services/billing/ 模块,包含计费计算器、模板和使用量映射 - 将 ChatAdapterBase 和 CliAdapterBase 中的计费逻辑重构为调用 billing 模块 - 为每个 adapter 添加 BILLING_TEMPLATE 类属性,指定计费模板 - 支持 Claude/OpenAI/Gemini 三种计费模板,支持阶梯计费和缓存 TTL 定价 - 新增 tests/services/billing/ 单元测试
52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
"""
|
|
计费模块
|
|
|
|
提供配置驱动的计费计算,支持不同厂商的差异化计费模式:
|
|
- Claude: input + output + cache_creation + cache_read
|
|
- OpenAI: input + output + cache_read (无缓存创建费用)
|
|
- 豆包: input + output + cache_read + cache_storage (缓存按时计费)
|
|
- 按次计费: per_request
|
|
|
|
使用方式:
|
|
from src.services.billing import BillingCalculator, UsageMapper, StandardizedUsage
|
|
|
|
# 1. 将原始 usage 映射为标准格式
|
|
usage = UsageMapper.map(raw_usage, api_format="OPENAI")
|
|
|
|
# 2. 使用计费计算器计算费用
|
|
calculator = BillingCalculator(template="openai")
|
|
result = calculator.calculate(usage, prices)
|
|
|
|
# 3. 获取费用明细
|
|
print(result.total_cost)
|
|
print(result.costs) # {"input": 0.01, "output": 0.02, ...}
|
|
"""
|
|
|
|
from src.services.billing.calculator import BillingCalculator, calculate_request_cost
|
|
from src.services.billing.models import (
|
|
BillingDimension,
|
|
BillingUnit,
|
|
CostBreakdown,
|
|
StandardizedUsage,
|
|
)
|
|
from src.services.billing.templates import BILLING_TEMPLATE_REGISTRY, BillingTemplates
|
|
from src.services.billing.usage_mapper import UsageMapper, map_usage, map_usage_from_response
|
|
|
|
__all__ = [
|
|
# 数据模型
|
|
"BillingDimension",
|
|
"BillingUnit",
|
|
"CostBreakdown",
|
|
"StandardizedUsage",
|
|
# 模板
|
|
"BillingTemplates",
|
|
"BILLING_TEMPLATE_REGISTRY",
|
|
# 计算器
|
|
"BillingCalculator",
|
|
"calculate_request_cost",
|
|
# 映射器
|
|
"UsageMapper",
|
|
"map_usage",
|
|
"map_usage_from_response",
|
|
]
|