objectiveai_sdk/agent/completions/request/
provider.rs1use serde::{Deserialize, Serialize};
4use schemars::JsonSchema;
5
6#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize, JsonSchema)]
8#[schemars(rename = "agent.completions.request.Provider")]
9pub struct Provider {
10 #[serde(skip_serializing_if = "Option::is_none")]
12 #[schemars(extend("omitempty" = true))]
13 pub data_collection: Option<ProviderDataCollection>,
14 #[serde(skip_serializing_if = "Option::is_none")]
16 #[schemars(extend("omitempty" = true))]
17 pub zdr: Option<bool>,
18 #[serde(skip_serializing_if = "Option::is_none")]
20 #[schemars(extend("omitempty" = true))]
21 pub sort: Option<ProviderSort>,
22 #[serde(skip_serializing_if = "Option::is_none")]
24 #[schemars(extend("omitempty" = true))]
25 pub max_price: Option<ProviderMaxPrice>,
26 #[serde(skip_serializing_if = "Option::is_none")]
28 #[schemars(extend("omitempty" = true))]
29 pub preferred_min_throughput: Option<f64>,
30 #[serde(skip_serializing_if = "Option::is_none")]
32 #[schemars(extend("omitempty" = true))]
33 pub preferred_max_latency: Option<f64>,
34 #[serde(skip_serializing_if = "Option::is_none")]
36 #[schemars(extend("omitempty" = true))]
37 pub min_throughput: Option<f64>,
38 #[serde(skip_serializing_if = "Option::is_none")]
40 #[schemars(extend("omitempty" = true))]
41 pub max_latency: Option<f64>,
42}
43
44#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize, JsonSchema)]
46#[serde(rename_all = "snake_case")]
47#[schemars(rename = "agent.completions.request.ProviderDataCollection")]
48pub enum ProviderDataCollection {
49 #[schemars(title = "Deny")]
51 Deny,
52 #[schemars(title = "Allow")]
54 Allow,
55}
56
57#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize, JsonSchema)]
59#[serde(rename_all = "snake_case")]
60#[schemars(rename = "agent.completions.request.ProviderSort")]
61pub enum ProviderSort {
62 #[schemars(title = "Price")]
64 Price,
65 #[schemars(title = "Throughput")]
67 Throughput,
68 #[schemars(title = "Latency")]
70 Latency,
71}
72
73#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize, JsonSchema)]
75#[schemars(rename = "agent.completions.request.ProviderMaxPrice")]
76pub struct ProviderMaxPrice {
77 #[serde(skip_serializing_if = "Option::is_none", deserialize_with = "crate::serde_util::option_decimal")]
79 #[schemars(extend("omitempty" = true))]
80 #[schemars(with = "Option<f64>")]
81 pub prompt: Option<rust_decimal::Decimal>,
82 #[serde(skip_serializing_if = "Option::is_none", deserialize_with = "crate::serde_util::option_decimal")]
84 #[schemars(extend("omitempty" = true))]
85 #[schemars(with = "Option<f64>")]
86 pub completion: Option<rust_decimal::Decimal>,
87 #[serde(skip_serializing_if = "Option::is_none", deserialize_with = "crate::serde_util::option_decimal")]
89 #[schemars(extend("omitempty" = true))]
90 #[schemars(with = "Option<f64>")]
91 pub image: Option<rust_decimal::Decimal>,
92 #[serde(skip_serializing_if = "Option::is_none", deserialize_with = "crate::serde_util::option_decimal")]
94 #[schemars(extend("omitempty" = true))]
95 #[schemars(with = "Option<f64>")]
96 pub audio: Option<rust_decimal::Decimal>,
97 #[serde(skip_serializing_if = "Option::is_none", deserialize_with = "crate::serde_util::option_decimal")]
99 #[schemars(extend("omitempty" = true))]
100 #[schemars(with = "Option<f64>")]
101 pub request: Option<rust_decimal::Decimal>,
102}