langfuse_rs/models/
model.rs

1/*
2 * langfuse
3 *
4 * ## Authentication  Authenticate with the API using [Basic Auth](https://en.wikipedia.org/wiki/Basic_access_authentication), get API keys in the project settings:  - username: Langfuse Public Key - password: Langfuse Secret Key  ## Exports  - OpenAPI spec: https://cloud.langfuse.com/generated/api/openapi.yml - Postman collection: https://cloud.langfuse.com/generated/postman/collection.json
5 *
6 * The version of the OpenAPI document:
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14/// Model : Model definition used for transforming usage into USD cost and/or tokenization.
15#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct Model {
17	#[serde(rename = "id")]
18	pub id: String,
19	/// Name of the model definition. If multiple with the same name exist, they are applied in the following order: (1) custom over built-in, (2) newest according to startTime where model.startTime<observation.startTime
20	#[serde(rename = "modelName")]
21	pub model_name: String,
22	/// Regex pattern which matches this model definition to generation.model. Useful in case of fine-tuned models. If you want to exact match, use `(?i)^modelname$`
23	#[serde(rename = "matchPattern")]
24	pub match_pattern: String,
25	/// Apply only to generations which are newer than this ISO date.
26	#[serde(
27		rename = "startDate",
28		default,
29		with = "::serde_with::rust::double_option",
30		skip_serializing_if = "Option::is_none"
31	)]
32	pub start_date: Option<Option<String>>,
33	#[serde(rename = "unit", skip_serializing_if = "Option::is_none")]
34	pub unit: Option<models::ModelUsageUnit>,
35	/// Price (USD) per input unit
36	#[serde(
37		rename = "inputPrice",
38		default,
39		with = "::serde_with::rust::double_option",
40		skip_serializing_if = "Option::is_none"
41	)]
42	pub input_price: Option<Option<f64>>,
43	/// Price (USD) per output unit
44	#[serde(
45		rename = "outputPrice",
46		default,
47		with = "::serde_with::rust::double_option",
48		skip_serializing_if = "Option::is_none"
49	)]
50	pub output_price: Option<Option<f64>>,
51	/// Price (USD) per total unit. Cannot be set if input or output price is set.
52	#[serde(
53		rename = "totalPrice",
54		default,
55		with = "::serde_with::rust::double_option",
56		skip_serializing_if = "Option::is_none"
57	)]
58	pub total_price: Option<Option<f64>>,
59	/// Optional. Tokenizer to be applied to observations which match to this model. See docs for more details.
60	#[serde(
61		rename = "tokenizerId",
62		default,
63		with = "::serde_with::rust::double_option",
64		skip_serializing_if = "Option::is_none"
65	)]
66	pub tokenizer_id: Option<Option<String>>,
67	/// Optional. Configuration for the selected tokenizer. Needs to be JSON. See docs for more details.
68	#[serde(
69		rename = "tokenizerConfig",
70		default,
71		with = "::serde_with::rust::double_option",
72		skip_serializing_if = "Option::is_none"
73	)]
74	pub tokenizer_config: Option<Option<serde_json::Value>>,
75	#[serde(rename = "isLangfuseManaged")]
76	pub is_langfuse_managed: bool,
77}
78
79impl Model {
80	/// Model definition used for transforming usage into USD cost and/or tokenization.
81	pub fn new(id: String, model_name: String, match_pattern: String, is_langfuse_managed: bool) -> Model {
82		Model {
83			id,
84			model_name,
85			match_pattern,
86			start_date: None,
87			unit: None,
88			input_price: None,
89			output_price: None,
90			total_price: None,
91			tokenizer_id: None,
92			tokenizer_config: None,
93			is_langfuse_managed,
94		}
95	}
96}