mirror of
https://github.com/hoshikawa2/agent_platform_oci.git
synced 2026-07-09 14:04:19 +00:00
24 lines
1.1 KiB
Python
24 lines
1.1 KiB
Python
from types import SimpleNamespace
|
|
from agent_framework.observability.token_cost import TokenUsageCollector, TokenUsage
|
|
|
|
|
|
def test_token_usage_extracts_cached_and_reasoning_tokens():
|
|
usage = TokenUsage.from_openai_usage({
|
|
"prompt_tokens": 1000,
|
|
"completion_tokens": 500,
|
|
"total_tokens": 1600,
|
|
"prompt_tokens_details": {"cached_tokens": 250},
|
|
"completion_tokens_details": {"reasoning_tokens": 100},
|
|
})
|
|
assert usage.prompt_tokens == 1000
|
|
assert usage.cached_tokens == 250
|
|
assert usage.reasoning_tokens == 100
|
|
assert usage.total_tokens == 1600
|
|
|
|
|
|
def test_cost_tracker_uses_model_prices_json():
|
|
settings = SimpleNamespace(MODEL_PRICES_JSON='{"my-model":{"input_per_1m":"1","output_per_1m":"2","cached_input_per_1m":"0.1"}}', USD_BRL_RATE='5')
|
|
enriched = TokenUsageCollector(settings).enrich("my-model", {"prompt_tokens": 1000, "completion_tokens": 1000, "prompt_tokens_details": {"cached_tokens": 500}})
|
|
assert enriched["cost_usd"] > 0
|
|
assert abs(enriched["cost_brl"] - enriched["cost_usd"] * 5) < 1e-9
|