1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct ObservationsView {
16 #[serde(rename = "promptName", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
18 pub prompt_name: Option<Option<String>>,
19 #[serde(rename = "promptVersion", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
21 pub prompt_version: Option<Option<i32>>,
22 #[serde(rename = "modelId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
24 pub model_id: Option<Option<String>>,
25 #[serde(rename = "inputPrice", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
27 pub input_price: Option<Option<f64>>,
28 #[serde(rename = "outputPrice", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
30 pub output_price: Option<Option<f64>>,
31 #[serde(rename = "totalPrice", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
33 pub total_price: Option<Option<f64>>,
34 #[serde(rename = "calculatedInputCost", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
36 pub calculated_input_cost: Option<Option<f64>>,
37 #[serde(rename = "calculatedOutputCost", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
39 pub calculated_output_cost: Option<Option<f64>>,
40 #[serde(rename = "calculatedTotalCost", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
42 pub calculated_total_cost: Option<Option<f64>>,
43 #[serde(rename = "latency", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
45 pub latency: Option<Option<f64>>,
46 #[serde(rename = "timeToFirstToken", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
48 pub time_to_first_token: Option<Option<f64>>,
49 #[serde(rename = "id")]
51 pub id: String,
52 #[serde(rename = "traceId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
54 pub trace_id: Option<Option<String>>,
55 #[serde(rename = "type")]
57 pub r#type: String,
58 #[serde(rename = "name", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
60 pub name: Option<Option<String>>,
61 #[serde(rename = "startTime")]
63 pub start_time: String,
64 #[serde(rename = "endTime", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
66 pub end_time: Option<Option<String>>,
67 #[serde(rename = "completionStartTime", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
69 pub completion_start_time: Option<Option<String>>,
70 #[serde(rename = "model", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
72 pub model: Option<Option<String>>,
73 #[serde(rename = "modelParameters", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
75 pub model_parameters: Option<Option<std::collections::HashMap<String, models::MapValue>>>,
76 #[serde(rename = "input", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
78 pub input: Option<Option<serde_json::Value>>,
79 #[serde(rename = "version", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
81 pub version: Option<Option<String>>,
82 #[serde(rename = "metadata", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
84 pub metadata: Option<Option<serde_json::Value>>,
85 #[serde(rename = "output", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
87 pub output: Option<Option<serde_json::Value>>,
88 #[serde(rename = "usage", skip_serializing_if = "Option::is_none")]
89 pub usage: Option<models::Usage>,
90 #[serde(rename = "level")]
91 pub level: models::ObservationLevel,
92 #[serde(rename = "statusMessage", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
94 pub status_message: Option<Option<String>>,
95 #[serde(rename = "parentObservationId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
97 pub parent_observation_id: Option<Option<String>>,
98 #[serde(rename = "promptId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
100 pub prompt_id: Option<Option<String>>,
101 #[serde(rename = "usageDetails", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
103 pub usage_details: Option<Option<std::collections::HashMap<String, i32>>>,
104 #[serde(rename = "costDetails", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
106 pub cost_details: Option<Option<std::collections::HashMap<String, f64>>>,
107 #[serde(rename = "environment", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
109 pub environment: Option<Option<String>>,
110}
111
112impl ObservationsView {
113 pub fn new(id: String, r#type: String, start_time: String, level: models::ObservationLevel) -> ObservationsView {
114 ObservationsView {
115 prompt_name: None,
116 prompt_version: None,
117 model_id: None,
118 input_price: None,
119 output_price: None,
120 total_price: None,
121 calculated_input_cost: None,
122 calculated_output_cost: None,
123 calculated_total_cost: None,
124 latency: None,
125 time_to_first_token: None,
126 id,
127 trace_id: None,
128 r#type,
129 name: None,
130 start_time,
131 end_time: None,
132 completion_start_time: None,
133 model: None,
134 model_parameters: None,
135 input: None,
136 version: None,
137 metadata: None,
138 output: None,
139 usage: None,
140 level,
141 status_message: None,
142 parent_observation_id: None,
143 prompt_id: None,
144 usage_details: None,
145 cost_details: None,
146 environment: None,
147 }
148 }
149}
150