Expand description
Structured output — typed LLM responses with schema validation.
This module provides high-level functions that combine schema derivation, LLM generation, validation, and deserialization into a single call.
§Non-streaming
generate_object sends a request with a JSON Schema constraint and
returns a fully validated, deserialized T:
use llm_stack_core::structured::{generate_object, GenerateObjectConfig};
use llm_stack_core::{ChatMessage, ChatParams};
use serde::Deserialize;
#[derive(Deserialize, schemars::JsonSchema)]
struct Person {
name: String,
age: u32,
}
let params = ChatParams {
messages: vec![ChatMessage::user("Generate a person named Alice aged 30")],
..Default::default()
};
let result = generate_object::<Person>(provider, params, GenerateObjectConfig::default()).await?;
assert_eq!(result.value.name, "Alice");§Streaming
stream_object_async yields PartialObject<T> events as JSON tokens
arrive. Each event carries the accumulated JSON so far, and the final
event includes the fully deserialized object.
Structs§
- Generate
Object Config - Configuration for
generate_objectandstream_object_async. - Generate
Object Result - The result of a successful
generate_objectcall. - Partial
Object - A partially-received structured object from a streaming response.
Functions§
- collect_
stream_ object - Collects a
ChatStreaminto aPartialObject<T>. - generate_
object - Generates a typed object from the LLM with schema validation.
- stream_
object_ async - Async streaming variant of
generate_object.