pub(crate) fn extract_cache_read_tokens(usage: &serde_json::Value) -> i64 {
if let Some(n) = usage
.get("cache_read_input_tokens")
.and_then(|v| v.as_i64())
{
return n;
}
if let Some(n) = usage
.get("prompt_tokens_details")
.and_then(|d| d.get("cached_tokens"))
.and_then(|v| v.as_i64())
{
return n;
}
if let Some(n) = usage
.get("input_tokens_details")
.and_then(|d| d.get("cached_tokens"))
.and_then(|v| v.as_i64())
{
return n;
}
if let Some(n) = usage.get("cache_read_tokens").and_then(|v| v.as_i64()) {
return n;
}
if let Some(n) = usage.get("cached_input_tokens").and_then(|v| v.as_i64()) {
return n;
}
if let Some(n) = usage.get("cached_prompt_tokens").and_then(|v| v.as_i64()) {
return n;
}
if let Some(n) = usage
.get("prompt_cache_hit_tokens")
.and_then(|v| v.as_i64())
{
return n;
}
if let Some(n) = usage
.get("cache")
.and_then(|d| d.get("read_input_tokens"))
.and_then(|v| v.as_i64())
{
return n;
}
0
}
pub(crate) fn extract_cache_write_tokens(usage: &serde_json::Value) -> i64 {
if let Some(n) = usage.get("cache_write_tokens").and_then(|v| v.as_i64()) {
return n;
}
if let Some(n) = usage
.get("cache_creation_input_tokens")
.and_then(|v| v.as_i64())
{
return n;
}
if let Some(n) = usage
.get("prompt_tokens_details")
.and_then(|d| d.get("cache_write_tokens"))
.and_then(|v| v.as_i64())
{
return n;
}
if let Some(n) = usage
.get("prompt_tokens_details")
.and_then(|d| d.get("cache_creation_input_tokens"))
.and_then(|v| v.as_i64())
{
return n;
}
if let Some(n) = usage
.get("input_tokens_details")
.and_then(|d| d.get("cache_write_tokens"))
.and_then(|v| v.as_i64())
{
return n;
}
if let Some(n) = usage
.get("input_tokens_details")
.and_then(|d| d.get("cache_creation_input_tokens"))
.and_then(|v| v.as_i64())
{
return n;
}
if let Some(n) = usage
.get("cache")
.and_then(|d| d.get("write_input_tokens"))
.and_then(|v| v.as_i64())
{
return n;
}
0
}