windmill_api/models/
ai_token_usage_event.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct AiTokenUsageEvent {
16 #[serde(rename = "provider")]
17 pub provider: models::AiProvider,
18 #[serde(rename = "model")]
19 pub model: String,
20 #[serde(rename = "session_id", skip_serializing_if = "Option::is_none")]
21 pub session_id: Option<String>,
22 #[serde(rename = "input_tokens", skip_serializing_if = "Option::is_none")]
23 pub input_tokens: Option<i32>,
24 #[serde(rename = "cache_read_tokens", skip_serializing_if = "Option::is_none")]
25 pub cache_read_tokens: Option<i32>,
26 #[serde(rename = "cache_write_tokens", skip_serializing_if = "Option::is_none")]
27 pub cache_write_tokens: Option<i32>,
28 #[serde(rename = "output_tokens", skip_serializing_if = "Option::is_none")]
29 pub output_tokens: Option<i32>,
30 #[serde(rename = "reported_cost_nano_usd", skip_serializing_if = "Option::is_none")]
32 pub reported_cost_nano_usd: Option<i32>,
33 #[serde(rename = "requests", skip_serializing_if = "Option::is_none")]
34 pub requests: Option<i32>,
35}
36
37impl AiTokenUsageEvent {
38 pub fn new(provider: models::AiProvider, model: String) -> AiTokenUsageEvent {
39 AiTokenUsageEvent {
40 provider,
41 model,
42 session_id: None,
43 input_tokens: None,
44 cache_read_tokens: None,
45 cache_write_tokens: None,
46 output_tokens: None,
47 reported_cost_nano_usd: None,
48 requests: None,
49 }
50 }
51}
52