mirror of
https://github.com/openai/codex.git
synced 2026-10-30 19:18:49 +00:00
Track prompt cache write token usage (#33454)
## What changed - Parse `cache_write_tokens` from response input token details and carry it through token usage aggregation. - Expose `cache_write_input_tokens` in protocol, app-server, exec, and TypeScript SDK usage events, defaulting it to zero for compatibility with older payloads. - Report cache-write usage in analytics, metrics, traces, and rollout data alongside existing cache-read usage. ## Testing - Add coverage for response parsing, usage event output, aggregation, analytics, metrics, and telemetry fields. GitOrigin-RevId: 634e4fbe3086a8923c0ee13b622573e7d9d221bd
This commit is contained in:
@@ -3713,6 +3713,7 @@ impl Session {
|
||||
info.last_token_usage = TokenUsage {
|
||||
input_tokens: 0,
|
||||
cached_input_tokens: 0,
|
||||
cache_write_input_tokens: 0,
|
||||
output_tokens: 0,
|
||||
reasoning_output_tokens: 0,
|
||||
total_tokens: estimated_total_tokens.max(0),
|
||||
|
||||
@@ -2212,6 +2212,7 @@ async fn record_initial_history_seeds_token_info_from_rollout() {
|
||||
total_token_usage: TokenUsage {
|
||||
input_tokens: 10,
|
||||
cached_input_tokens: 0,
|
||||
cache_write_input_tokens: 0,
|
||||
output_tokens: 20,
|
||||
reasoning_output_tokens: 0,
|
||||
total_tokens: 30,
|
||||
@@ -2219,6 +2220,7 @@ async fn record_initial_history_seeds_token_info_from_rollout() {
|
||||
last_token_usage: TokenUsage {
|
||||
input_tokens: 3,
|
||||
cached_input_tokens: 0,
|
||||
cache_write_input_tokens: 0,
|
||||
output_tokens: 4,
|
||||
reasoning_output_tokens: 0,
|
||||
total_tokens: 7,
|
||||
@@ -2229,6 +2231,7 @@ async fn record_initial_history_seeds_token_info_from_rollout() {
|
||||
total_token_usage: TokenUsage {
|
||||
input_tokens: 100,
|
||||
cached_input_tokens: 50,
|
||||
cache_write_input_tokens: 0,
|
||||
output_tokens: 200,
|
||||
reasoning_output_tokens: 25,
|
||||
total_tokens: 375,
|
||||
@@ -2236,6 +2239,7 @@ async fn record_initial_history_seeds_token_info_from_rollout() {
|
||||
last_token_usage: TokenUsage {
|
||||
input_tokens: 10,
|
||||
cached_input_tokens: 0,
|
||||
cache_write_input_tokens: 0,
|
||||
output_tokens: 20,
|
||||
reasoning_output_tokens: 5,
|
||||
total_tokens: 35,
|
||||
@@ -2404,6 +2408,7 @@ async fn record_token_usage_info_notifies_extension_contributors() {
|
||||
let first_usage = TokenUsage {
|
||||
input_tokens: 10,
|
||||
cached_input_tokens: 2,
|
||||
cache_write_input_tokens: 0,
|
||||
output_tokens: 20,
|
||||
reasoning_output_tokens: 3,
|
||||
total_tokens: 33,
|
||||
@@ -2411,6 +2416,7 @@ async fn record_token_usage_info_notifies_extension_contributors() {
|
||||
let second_usage = TokenUsage {
|
||||
input_tokens: 7,
|
||||
cached_input_tokens: 1,
|
||||
cache_write_input_tokens: 0,
|
||||
output_tokens: 8,
|
||||
reasoning_output_tokens: 5,
|
||||
total_tokens: 20,
|
||||
@@ -2530,6 +2536,7 @@ async fn turn_start_lifecycle_exposes_turn_metadata_and_token_baseline() {
|
||||
let token_usage_at_turn_start = TokenUsage {
|
||||
input_tokens: 100,
|
||||
cached_input_tokens: 40,
|
||||
cache_write_input_tokens: 0,
|
||||
output_tokens: 25,
|
||||
reasoning_output_tokens: 5,
|
||||
total_tokens: 130,
|
||||
|
||||
@@ -2025,6 +2025,7 @@ async fn try_run_sampling_request(
|
||||
codex.request.reasoning_effort = %reasoning_effort,
|
||||
gen_ai.usage.input_tokens = field::Empty,
|
||||
gen_ai.usage.cache_read.input_tokens = field::Empty,
|
||||
gen_ai.usage.cache_write.input_tokens = field::Empty,
|
||||
gen_ai.usage.output_tokens = field::Empty,
|
||||
codex.usage.reasoning_output_tokens = field::Empty,
|
||||
codex.usage.total_tokens = field::Empty,
|
||||
|
||||
Reference in New Issue
Block a user