pub struct StructuredRequest {
pub model: String,
pub system_prompts: Vec<String>,
pub messages: Vec<Message>,
pub max_tokens: Option<u32>,
pub temperature: Option<f32>,
pub top_p: Option<f32>,
pub schema: ObjectSchema,
pub cache_system_prompt: bool,
pub reasoning_effort: Option<String>,
pub seed: Option<u64>,
pub repair: Option<Arc<dyn RepairStrategy>>,
pub provider_options: Value,
}Expand description
The immutable, provider-agnostic shape of one structured-output call. You’ll
normally build one with PendingStructuredRequest rather than
constructing this directly.
Fields§
§model: String§system_prompts: Vec<String>§messages: Vec<Message>§max_tokens: Option<u32>§temperature: Option<f32>§top_p: Option<f32>§schema: ObjectSchemaThe shape the model’s reply must match. Required up front (via
PendingStructuredRequest::new) rather than optional the way tools are
for a text request, since a structured request without a schema isn’t a
meaningful thing to send.
cache_system_prompt: boolMarks the system prompt as a cache breakpoint on providers that
support explicit prompt caching (currently just Anthropic; ignored
elsewhere). See
TextRequest::cache_system_prompt
for when this is worth turning on. Defaults to false.
reasoning_effort: Option<String>Sets how much effort a reasoning model spends thinking before
replying. See
TextRequest::reasoning_effort
for which providers and models this applies to.
seed: Option<u64>A seed for providers whose backend can honor one. See
TextRequest::seed for what
“honor” means here. (No stop_sequences equivalent here, unlike
TextRequest: a stop string can truncate
otherwise-valid JSON output, which cuts against the whole point of a
structured request.)
repair: Option<Arc<dyn RepairStrategy>>A hook that gets one chance to salvage a reply that failed to decode,
instead of the request just failing. None (the default) means a
decode failure always returns Error::StructuredDecode as-is. See
RepairStrategy and with_repair.
provider_options: ValueExtra provider-specific fields to send alongside this request, for
options this crate doesn’t model as a typed field yet. Must be a JSON
object to have any effect: each of its top-level keys is merged into
(and, if it collides with one of this crate’s own fields, overrides)
the request body actually sent to the provider. The default,
Value::Null, sends nothing extra.