Skip to main content

windmill_api/models/
ai_token_usage_event.rs

1/*
2 * Windmill API
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: 1.796.0
7 * Contact: contact@windmill.dev
8 * Generated by: https://openapi-generator.tech
9 */
10
11use 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    /// only set by providers that bill back an exact figure
31    #[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