animetix-web / src /adapters /persistence /django_usage_adapter.py
MissawB's picture
Upload folder using huggingface_hub
6a8fee8 verified
Raw
History Blame Contribute Delete
1.34 kB
from typing import Optional
from core.ports.usage_port import UsagePort
from animetix.models import AITokenUsage
class DjangoUsageAdapter(UsagePort):
def log_usage(
self,
engine: str,
input_tokens: int,
output_tokens: int,
user_id: Optional[int] = None
):
"""
Saves token usage to Django database.
Estimates cost based on engine (Placeholders for pricing).
"""
# Simplistic cost estimation (USD per 1M tokens)
pricing = {
'gpt-4o': {'in': 5.0, 'out': 15.0},
'gpt-3.5-turbo': {'in': 0.5, 'out': 1.5},
'claude-3-sonnet': {'in': 3.0, 'out': 15.0},
'local-llama': {'in': 0.0, 'out': 0.0},
'brain-api': {'in': 1.0, 'out': 2.0}, # Internal pricing
}
# Fallback pricing
engine_price = pricing.get(engine, {'in': 1.0, 'out': 2.0})
cost = (input_tokens / 1_000_000 * engine_price['in']) + \
(output_tokens / 1_000_000 * engine_price['out'])
AITokenUsage.objects.create(
user_id=user_id,
engine=engine,
input_tokens=input_tokens,
output_tokens=output_tokens,
total_tokens=input_tokens + output_tokens,
cost_estimate=cost
)