Skip to main content

objectiveai_sdk/laboratories/executions/request/
body.rs

1use crate::agent;
2use serde::{Deserialize, Serialize};
3use schemars::JsonSchema;
4
5/// Parameters for creating a laboratory execution.
6#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
7#[schemars(rename = "laboratories.executions.request.LaboratoryExecutionCreateParams")]
8pub struct LaboratoryExecutionCreateParams {
9    /// Docker image to use for builder containers.
10    pub docker_image: String,
11    /// Builder agents — at least one required.
12    pub builder_agents: Vec<agent::InlineAgentBaseWithFallbacksOrRemoteCommitOptional>,
13    /// Evaluation agent for evaluating builder outputs. If not provided,
14    /// no evaluation is performed.
15    #[serde(skip_serializing_if = "Option::is_none")]
16    #[schemars(extend("omitempty" = true))]
17    pub evaluation_agent: Option<agent::InlineAgentBaseWithFallbacksOrRemoteCommitOptional>,
18
19    /// Messages for builder agents.
20    pub builder_messages: Vec<agent::completions::message::Message>,
21    /// Messages for the evaluation agent.
22    #[serde(skip_serializing_if = "Option::is_none")]
23    #[schemars(extend("omitempty" = true))]
24    pub evaluation_messages: Option<Vec<agent::completions::message::Message>>,
25
26    /// Output schema for evaluation.
27    #[serde(skip_serializing_if = "Option::is_none")]
28    #[schemars(extend("omitempty" = true))]
29    pub evaluation_output_schema: Option<crate::functions::expression::InputSchema>,
30
31    /// Continuation from a previous builder completion, as a base64-encoded string.
32    #[serde(skip_serializing_if = "Option::is_none")]
33    #[schemars(extend("omitempty" = true))]
34    pub builder_continuation: Option<String>,
35    /// Continuation from a previous evaluation completion, as a base64-encoded string.
36    #[serde(skip_serializing_if = "Option::is_none")]
37    #[schemars(extend("omitempty" = true))]
38    pub evaluation_continuation: Option<String>,
39
40    /// Maximum number of evaluation retries if validation fails.
41    /// Defaults to 3 if not specified.
42    #[serde(skip_serializing_if = "Option::is_none")]
43    #[schemars(extend("omitempty" = true))]
44    pub max_evaluation_retries: Option<u32>,
45
46    /// Whether to keep containers after execution. Defaults to false.
47    #[serde(skip_serializing_if = "Option::is_none")]
48    #[schemars(extend("omitempty" = true))]
49    pub persist: Option<bool>,
50
51    #[serde(skip_serializing_if = "Option::is_none")]
52    #[schemars(extend("omitempty" = true))]
53    pub provider: Option<agent::completions::request::Provider>,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    #[schemars(extend("omitempty" = true))]
56    pub seed: Option<i64>,
57    #[serde(skip_serializing_if = "Option::is_none")]
58    #[schemars(extend("omitempty" = true))]
59    pub stream: Option<bool>,
60}