objectiveai_sdk/functions/alpha_vector/
task.rs1use crate::functions;
2use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5#[derive(
6 Debug,
7 Clone,
8 PartialEq,
9 Serialize,
10 Deserialize,
11 JsonSchema,
12 arbitrary::Arbitrary,
13)]
14#[serde(tag = "type")]
15#[schemars(rename = "functions.alpha_vector.BranchTaskExpression")]
16pub enum BranchTaskExpression {
17 #[schemars(title = "ScalarFunction")]
18 #[serde(rename = "alpha.scalar.function")]
19 ScalarFunction(ScalarFunctionTaskExpression),
20 #[schemars(title = "VectorFunction")]
21 #[serde(rename = "alpha.vector.function")]
22 VectorFunction(VectorFunctionTaskExpression),
23 #[schemars(title = "PlaceholderScalarFunction")]
24 #[serde(rename = "placeholder.alpha.scalar.function")]
25 PlaceholderScalarFunction(PlaceholderScalarFunctionTaskExpression),
26 #[schemars(title = "PlaceholderVectorFunction")]
27 #[serde(rename = "placeholder.alpha.vector.function")]
28 PlaceholderVectorFunction(PlaceholderVectorFunctionTaskExpression),
29}
30
31impl BranchTaskExpression {
32 pub fn url(&self) -> Option<String> {
33 match self {
34 BranchTaskExpression::ScalarFunction(task) => Some(task.url()),
35 BranchTaskExpression::VectorFunction(task) => Some(task.url()),
36 BranchTaskExpression::PlaceholderScalarFunction(_) => None,
37 BranchTaskExpression::PlaceholderVectorFunction(_) => None,
38 }
39 }
40
41 pub fn transpile(self) -> functions::TaskExpression {
42 match self {
43 BranchTaskExpression::ScalarFunction(task) => {
44 functions::TaskExpression::ScalarFunction(task.transpile())
45 }
46 BranchTaskExpression::VectorFunction(task) => {
47 functions::TaskExpression::VectorFunction(task.transpile())
48 }
49 BranchTaskExpression::PlaceholderScalarFunction(task) => {
50 functions::TaskExpression::PlaceholderScalarFunction(
51 task.transpile(),
52 )
53 }
54 BranchTaskExpression::PlaceholderVectorFunction(task) => {
55 functions::TaskExpression::PlaceholderVectorFunction(
56 task.transpile(),
57 )
58 }
59 }
60 }
61
62 pub fn is_placeholder(&self) -> bool {
63 match self {
64 BranchTaskExpression::ScalarFunction(_) => false,
65 BranchTaskExpression::VectorFunction(_) => false,
66 BranchTaskExpression::PlaceholderScalarFunction(_) => true,
67 BranchTaskExpression::PlaceholderVectorFunction(_) => true,
68 }
69 }
70}
71
72#[derive(
73 Debug,
74 Clone,
75 PartialEq,
76 Serialize,
77 Deserialize,
78 JsonSchema,
79 arbitrary::Arbitrary,
80)]
81#[serde(tag = "type")]
82#[schemars(rename = "functions.alpha_vector.LeafTaskExpression")]
83pub enum LeafTaskExpression {
84 #[serde(rename = "vector.completion")]
85 VectorCompletion(VectorCompletionTaskExpression),
86}
87
88impl LeafTaskExpression {
89 pub fn transpile(self) -> functions::TaskExpression {
90 match self {
91 LeafTaskExpression::VectorCompletion(task) => {
92 functions::TaskExpression::VectorCompletion(task.transpile())
93 }
94 }
95 }
96}
97
98#[derive(
99 Debug,
100 Clone,
101 PartialEq,
102 Serialize,
103 Deserialize,
104 JsonSchema,
105 arbitrary::Arbitrary,
106)]
107#[schemars(rename = "functions.alpha_vector.ScalarFunctionTaskExpression")]
108pub struct ScalarFunctionTaskExpression {
109 #[serde(flatten)]
110 #[schemars(schema_with = "crate::flatten_schema::<crate::RemotePath>")]
111 pub path: crate::RemotePath,
112 #[serde(skip_serializing_if = "Option::is_none")]
113 #[schemars(extend("omitempty" = true))]
114 pub skip: Option<functions::expression::Expression>,
115 pub input: super::expression::ScalarFunctionInputValueExpression,
116}
117
118impl ScalarFunctionTaskExpression {
119 pub fn url(&self) -> String {
120 self.path.url()
121 }
122
123 pub fn transpile(self) -> functions::ScalarFunctionTaskExpression {
124 functions::ScalarFunctionTaskExpression {
125 path: self.path,
126 skip: self.skip,
127 map: Some(functions::expression::Expression::Special(
132 functions::expression::Special::InputItemsOutputLength,
133 )),
134 input:
135 super::expression::scalar_function_input_value_expression::transpile(
136 self.input,
137 ),
138 output: functions::expression::Expression::Special(
139 functions::expression::Special::TaskOutputL1Normalized,
140 ),
141 }
142 }
143}
144
145#[derive(
146 Debug,
147 Clone,
148 PartialEq,
149 Serialize,
150 Deserialize,
151 JsonSchema,
152 arbitrary::Arbitrary,
153)]
154#[schemars(rename = "functions.alpha_vector.VectorFunctionTaskExpression")]
155pub struct VectorFunctionTaskExpression {
156 #[serde(flatten)]
157 #[schemars(schema_with = "crate::flatten_schema::<crate::RemotePath>")]
158 pub path: crate::RemotePath,
159 #[serde(skip_serializing_if = "Option::is_none")]
160 #[schemars(extend("omitempty" = true))]
161 pub skip: Option<functions::expression::Expression>,
162 pub input: super::expression::VectorFunctionInputValueExpression,
163}
164
165impl VectorFunctionTaskExpression {
166 pub fn url(&self) -> String {
167 self.path.url()
168 }
169
170 pub fn transpile(self) -> functions::VectorFunctionTaskExpression {
171 functions::VectorFunctionTaskExpression {
172 path: self.path,
173 skip: self.skip,
174 map: None,
175 input: self.input.transpile(),
176 output: functions::expression::Expression::Special(
177 functions::expression::Special::Output,
178 ),
179 }
180 }
181}
182
183#[derive(
184 Debug,
185 Clone,
186 PartialEq,
187 Serialize,
188 Deserialize,
189 JsonSchema,
190 arbitrary::Arbitrary,
191)]
192#[schemars(
193 rename = "functions.alpha_vector.PlaceholderScalarFunctionTaskExpression"
194)]
195pub struct PlaceholderScalarFunctionTaskExpression {
196 pub input_schema: super::expression::ScalarFunctionInputSchema,
197 #[serde(skip_serializing_if = "Option::is_none")]
198 #[schemars(extend("omitempty" = true))]
199 pub skip: Option<functions::expression::Expression>,
200 pub input: super::expression::ScalarFunctionInputValueExpression,
201}
202
203impl PlaceholderScalarFunctionTaskExpression {
204 pub fn transpile(
205 self,
206 ) -> functions::PlaceholderScalarFunctionTaskExpression {
207 functions::PlaceholderScalarFunctionTaskExpression {
208 input_schema:
209 super::expression::scalar_function_input_schema::transpile(
210 self.input_schema,
211 ),
212 skip: self.skip,
213 map: Some(functions::expression::Expression::Special(
214 functions::expression::Special::InputItemsOutputLength,
215 )),
216 input:
217 super::expression::scalar_function_input_value_expression::transpile(
218 self.input,
219 ),
220 output: functions::expression::Expression::Special(
221 functions::expression::Special::TaskOutputL1Normalized,
222 ),
223 }
224 }
225
226 pub fn replace(
227 self,
228 path: &crate::RemotePath,
229 ) -> ScalarFunctionTaskExpression {
230 ScalarFunctionTaskExpression {
231 path: path.clone(),
232 skip: self.skip,
233 input: self.input,
234 }
235 }
236}
237
238#[derive(
239 Debug,
240 Clone,
241 PartialEq,
242 Serialize,
243 Deserialize,
244 JsonSchema,
245 arbitrary::Arbitrary,
246)]
247#[schemars(
248 rename = "functions.alpha_vector.PlaceholderVectorFunctionTaskExpression"
249)]
250pub struct PlaceholderVectorFunctionTaskExpression {
251 pub input_schema: super::expression::VectorFunctionInputSchema,
252 #[serde(skip_serializing_if = "Option::is_none")]
253 #[schemars(extend("omitempty" = true))]
254 pub skip: Option<functions::expression::Expression>,
255 pub input: super::expression::VectorFunctionInputValueExpression,
256}
257
258impl PlaceholderVectorFunctionTaskExpression {
259 pub fn transpile(
260 self,
261 ) -> functions::PlaceholderVectorFunctionTaskExpression {
262 functions::PlaceholderVectorFunctionTaskExpression {
263 input_schema: self.input_schema.transpile(),
264 output_length: functions::expression::Expression::Special(
265 functions::expression::Special::InputItemsOutputLength,
266 ),
267 input_split: functions::expression::Expression::Special(
268 functions::expression::Special::InputItemsOptionalContextSplit,
269 ),
270 input_merge: functions::expression::Expression::Special(
271 functions::expression::Special::InputItemsOptionalContextMerge,
272 ),
273 skip: self.skip,
274 map: None,
275 input: self.input.transpile(),
276 output: functions::expression::Expression::Special(
277 functions::expression::Special::Output,
278 ),
279 }
280 }
281
282 pub fn replace(
283 self,
284 path: &crate::RemotePath,
285 ) -> VectorFunctionTaskExpression {
286 VectorFunctionTaskExpression {
287 path: path.clone(),
288 skip: self.skip,
289 input: self.input,
290 }
291 }
292}
293
294#[derive(
295 Debug,
296 Clone,
297 PartialEq,
298 Serialize,
299 Deserialize,
300 JsonSchema,
301 arbitrary::Arbitrary,
302)]
303#[schemars(rename = "functions.alpha_vector.VectorCompletionTaskExpression")]
304pub struct VectorCompletionTaskExpression {
305 #[serde(skip_serializing_if = "Option::is_none")]
306 #[schemars(extend("omitempty" = true))]
307 pub skip: Option<functions::expression::Expression>,
308 pub messages: functions::expression::Expression,
309 pub responses: functions::expression::Expression,
310}
311
312impl VectorCompletionTaskExpression {
313 pub fn transpile(self) -> functions::VectorCompletionTaskExpression {
314 functions::VectorCompletionTaskExpression {
315 skip: self.skip,
316 map: None,
317 messages: functions::expression::WithExpression::Expression(
318 self.messages,
319 ),
320 responses: functions::expression::WithExpression::Expression(
321 self.responses,
322 ),
323 output: functions::expression::Expression::Special(
324 functions::expression::Special::Output,
325 ),
326 }
327 }
328}