1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
* OpenAI API
*
* The OpenAI REST API. Please see https://platform.openai.com/docs/api-reference for more details.
*
* The version of the OpenAPI document: 2.3.0
*
* Generated by: https://openapi-generator.tech
*/
use crate::models;
use serde::{Deserialize, Serialize};
/// RealtimeResponseUsageInputTokenDetails : Details about the input tokens used in the Response. Cached tokens are tokens from previous turns in the conversation that are included as context for the current response. Cached tokens here are counted as a subset of input tokens, meaning input tokens will include cached and uncached tokens.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, bon::Builder)]
pub struct RealtimeResponseUsageInputTokenDetails {
/// The number of cached tokens used as input for the Response.
#[serde(rename = "cached_tokens", skip_serializing_if = "Option::is_none")]
pub cached_tokens: Option<i32>,
/// The number of text tokens used as input for the Response.
#[serde(rename = "text_tokens", skip_serializing_if = "Option::is_none")]
pub text_tokens: Option<i32>,
/// The number of image tokens used as input for the Response.
#[serde(rename = "image_tokens", skip_serializing_if = "Option::is_none")]
pub image_tokens: Option<i32>,
/// The number of audio tokens used as input for the Response.
#[serde(rename = "audio_tokens", skip_serializing_if = "Option::is_none")]
pub audio_tokens: Option<i32>,
#[serde(
rename = "cached_tokens_details",
skip_serializing_if = "Option::is_none"
)]
pub cached_tokens_details:
Option<Box<models::RealtimeBetaResponseUsageInputTokenDetailsCachedTokensDetails>>,
}
impl RealtimeResponseUsageInputTokenDetails {
/// Details about the input tokens used in the Response. Cached tokens are tokens from previous turns in the conversation that are included as context for the current response. Cached tokens here are counted as a subset of input tokens, meaning input tokens will include cached and uncached tokens.
pub fn new() -> RealtimeResponseUsageInputTokenDetails {
RealtimeResponseUsageInputTokenDetails {
cached_tokens: None,
text_tokens: None,
image_tokens: None,
audio_tokens: None,
cached_tokens_details: None,
}
}
}
impl std::fmt::Display for RealtimeResponseUsageInputTokenDetails {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match serde_json::to_string(self) {
Ok(s) => write!(f, "{}", s),
Err(_) => Err(std::fmt::Error),
}
}
}