Skip to main content

objectiveai_sdk/laboratories/executions/request/
body.rs

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