langfuse_client/models/
model.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16#[cfg_attr(feature="bon", derive(bon::Builder))]
17pub struct Model {
18 #[serde(rename = "id")]
19 pub id: String,
20 #[serde(rename = "modelName")]
22 pub model_name: String,
23 #[serde(rename = "matchPattern")]
25 pub match_pattern: String,
26 #[serde(rename = "startDate", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
28 pub start_date: Option<Option<String>>,
29 #[serde(rename = "unit", skip_serializing_if = "Option::is_none")]
30 pub unit: Option<models::ModelUsageUnit>,
31 #[serde(rename = "inputPrice", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
33 pub input_price: Option<Option<f64>>,
34 #[serde(rename = "outputPrice", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
36 pub output_price: Option<Option<f64>>,
37 #[serde(rename = "totalPrice", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
39 pub total_price: Option<Option<f64>>,
40 #[serde(rename = "tokenizerId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
42 pub tokenizer_id: Option<Option<String>>,
43 #[serde(rename = "tokenizerConfig", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
45 pub tokenizer_config: Option<Option<serde_json::Value>>,
46 #[serde(rename = "isLangfuseManaged")]
47 pub is_langfuse_managed: bool,
48}
49
50impl Model {
51 pub fn new(id: String, model_name: String, match_pattern: String, is_langfuse_managed: bool) -> Model {
53 Model {
54 id,
55 model_name,
56 match_pattern,
57 start_date: None,
58 unit: None,
59 input_price: None,
60 output_price: None,
61 total_price: None,
62 tokenizer_id: None,
63 tokenizer_config: None,
64 is_langfuse_managed,
65 }
66 }
67}
68