omx(team): auto-checkpoint worker-4 [unknown]

This commit is contained in:
bellman
2026-05-15 10:21:19 +09:00
parent 3ff8743e79
commit a6ca5c489b
2 changed files with 35 additions and 20 deletions

View File

@@ -493,12 +493,7 @@ impl StreamState {
}
if let Some(usage) = chunk.usage {
self.usage = Some(Usage {
input_tokens: usage.prompt_tokens,
cache_creation_input_tokens: 0,
cache_read_input_tokens: 0,
output_tokens: usage.completion_tokens,
});
self.usage = Some(usage.normalized());
}
for choice in chunk.choices {
@@ -776,6 +771,29 @@ struct OpenAiUsage {
prompt_tokens: u32,
#[serde(default)]
completion_tokens: u32,
#[serde(default)]
prompt_tokens_details: Option<OpenAiPromptTokensDetails>,
}
#[derive(Debug, Deserialize)]
struct OpenAiPromptTokensDetails {
#[serde(default)]
cached_tokens: u32,
}
impl OpenAiUsage {
fn normalized(&self) -> Usage {
let cached_tokens = self
.prompt_tokens_details
.as_ref()
.map_or(0, |details| details.cached_tokens);
Usage {
input_tokens: self.prompt_tokens.saturating_sub(cached_tokens),
cache_creation_input_tokens: 0,
cache_read_input_tokens: cached_tokens,
output_tokens: self.completion_tokens,
}
}
}
#[derive(Debug, Deserialize)]
@@ -1377,18 +1395,10 @@ fn normalize_response(
.finish_reason
.map(|value| normalize_finish_reason(&value)),
stop_sequence: None,
usage: Usage {
input_tokens: response
.usage
.as_ref()
.map_or(0, |usage| usage.prompt_tokens),
cache_creation_input_tokens: 0,
cache_read_input_tokens: 0,
output_tokens: response
.usage
.as_ref()
.map_or(0, |usage| usage.completion_tokens),
},
usage: response
.usage
.as_ref()
.map_or_else(Usage::default, OpenAiUsage::normalized),
request_id: None,
})
}