1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
17#[serde(untagged)]
18pub enum WorkflowModel {
19 AnthropicModel(models::AnthropicModel),
20 AnyscaleModel(models::AnyscaleModel),
21 CerebrasModel(models::CerebrasModel),
22 CustomLlmModel(models::CustomLlmModel),
23 DeepInfraModel(models::DeepInfraModel),
24 DeepSeekModel(models::DeepSeekModel),
25 GoogleModel(models::GoogleModel),
26 GroqModel(models::GroqModel),
27 InflectionAiModel(models::InflectionAiModel),
28 OpenAiModel(models::OpenAiModel),
29 OpenRouterModel(models::OpenRouterModel),
30 PerplexityAiModel(models::PerplexityAiModel),
31 TogetherAiModel(models::TogetherAiModel),
32 XaiModel(models::XaiModel),
33}
34
35impl Default for WorkflowModel {
36 fn default() -> Self {
37 Self::AnthropicModel(Default::default())
38 }
39}
40#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
42pub enum Model {
43 #[serde(rename = "grok-beta")]
44 GrokBeta,
45 #[serde(rename = "grok-2")]
46 Grok2,
47 #[serde(rename = "grok-3")]
48 Grok3,
49}
50
51impl Default for Model {
52 fn default() -> Model {
53 Self::GrokBeta
54 }
55}
56#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
58pub enum Provider {
59 #[serde(rename = "xai")]
60 Xai,
61}
62
63impl Default for Provider {
64 fn default() -> Provider {
65 Self::Xai
66 }
67}
68#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
70pub enum MetadataSendMode {
71 #[serde(rename = "off")]
72 Off,
73 #[serde(rename = "variable")]
74 Variable,
75 #[serde(rename = "destructured")]
76 Destructured,
77}
78
79impl Default for MetadataSendMode {
80 fn default() -> MetadataSendMode {
81 Self::Off
82 }
83}
84#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
86pub enum FallbackModels {
87 #[serde(rename = "gpt-4.1")]
88 Gpt4Period1,
89 #[serde(rename = "gpt-4.1-mini")]
90 Gpt4Period1Mini,
91 #[serde(rename = "gpt-4.1-nano")]
92 Gpt4Period1Nano,
93 #[serde(rename = "gpt-4.5-preview")]
94 Gpt4Period5Preview,
95 #[serde(rename = "chatgpt-4o-latest")]
96 Chatgpt4oLatest,
97 #[serde(rename = "o3-mini")]
98 O3Mini,
99 #[serde(rename = "o1-preview")]
100 O1Preview,
101 #[serde(rename = "o1-preview-2024-09-12")]
102 O1Preview20240912,
103 #[serde(rename = "o1-mini")]
104 O1Mini,
105 #[serde(rename = "o1-mini-2024-09-12")]
106 O1Mini20240912,
107 #[serde(rename = "gpt-4o-realtime-preview-2024-10-01")]
108 Gpt4oRealtimePreview20241001,
109 #[serde(rename = "gpt-4o-realtime-preview-2024-12-17")]
110 Gpt4oRealtimePreview20241217,
111 #[serde(rename = "gpt-4o-mini-realtime-preview-2024-12-17")]
112 Gpt4oMiniRealtimePreview20241217,
113 #[serde(rename = "gpt-4o-mini-2024-07-18")]
114 Gpt4oMini20240718,
115 #[serde(rename = "gpt-4o-mini")]
116 Gpt4oMini,
117 #[serde(rename = "gpt-4o")]
118 Gpt4o,
119 #[serde(rename = "gpt-4o-2024-05-13")]
120 Gpt4o20240513,
121 #[serde(rename = "gpt-4o-2024-08-06")]
122 Gpt4o20240806,
123 #[serde(rename = "gpt-4o-2024-11-20")]
124 Gpt4o20241120,
125 #[serde(rename = "gpt-4-turbo")]
126 Gpt4Turbo,
127 #[serde(rename = "gpt-4-turbo-2024-04-09")]
128 Gpt4Turbo20240409,
129 #[serde(rename = "gpt-4-turbo-preview")]
130 Gpt4TurboPreview,
131 #[serde(rename = "gpt-4-0125-preview")]
132 Gpt40125Preview,
133 #[serde(rename = "gpt-4-1106-preview")]
134 Gpt41106Preview,
135 #[serde(rename = "gpt-4")]
136 Gpt4,
137 #[serde(rename = "gpt-4-0613")]
138 Gpt40613,
139 #[serde(rename = "gpt-3.5-turbo")]
140 Gpt3Period5Turbo,
141 #[serde(rename = "gpt-3.5-turbo-0125")]
142 Gpt3Period5Turbo0125,
143 #[serde(rename = "gpt-3.5-turbo-1106")]
144 Gpt3Period5Turbo1106,
145 #[serde(rename = "gpt-3.5-turbo-16k")]
146 Gpt3Period5Turbo16k,
147 #[serde(rename = "gpt-3.5-turbo-0613")]
148 Gpt3Period5Turbo0613,
149}
150
151impl Default for FallbackModels {
152 fn default() -> FallbackModels {
153 Self::Gpt4Period1
154 }
155}
156