extern crate self as rstructor;
mod backend;
#[cfg(any(feature = "_client", feature = "mock"))]
mod decode;
mod diagnostics;
pub mod error;
#[cfg(feature = "logging")]
pub mod logging;
pub mod model;
pub mod schema;
#[cfg(feature = "schemars")]
mod schemars_bridge;
#[cfg(feature = "_client")]
pub mod telemetry;
#[cfg(feature = "_client")]
pub use diagnostics::ResponseBodyCapture;
pub use diagnostics::{ResponseMetadata, SanitizedResponseBody};
pub use error::{ApiErrorKind, RStructorError, Result, StreamErrorKind};
pub use model::Instructor;
pub use schema::{CustomTypeSchema, Schema, SchemaBuilder, SchemaType};
#[cfg(feature = "schemars")]
pub use schemars_bridge::Schemars;
#[cfg(feature = "openai")]
pub use backend::openai::{Model as OpenAIModel, OpenAIClient};
#[cfg(feature = "anthropic")]
pub use backend::anthropic::{AnthropicClient, AnthropicModel};
#[cfg(feature = "gemini")]
pub use backend::gemini::{GeminiClient, Model as GeminiModel};
#[cfg(feature = "grok")]
pub use backend::grok::{GrokClient, Model as GrokModel};
#[cfg(feature = "derive")]
pub use rstructor_derive::Instructor;
pub use backend::LLMClient;
pub use backend::ModelInfo;
pub use backend::ThinkingLevel;
#[cfg(feature = "_client")]
pub use backend::{
AnyClient, Provider, Request, RequestExt, client, client_from_env, parse_client_spec,
};
pub use backend::{
AttemptKind, AttemptOutcome, AttemptRecord, ChatMessage, ChatRole, Extraction, ExtractionError,
ExtractionReport, ExtractionResult, GenerateResult, MaterializeFailure, MaterializeReport,
MaterializeResult, MediaFile, RetryDisposition, RunUsage, TokenUsage,
};
#[cfg(feature = "_client")]
pub use backend::{DEFAULT_CONNECT_TIMEOUT, DEFAULT_REQUEST_TIMEOUT};
#[cfg(feature = "tools")]
pub use backend::{DynTool, FnTool, Tool, ToolRunner, Toolbox};
#[cfg(feature = "mock")]
pub use backend::{
FIXTURE_SCHEMA_VERSION, Fixture, FixtureError, FixtureRecorder, FixtureSanitizer, MockClient,
MockRequestView, MockResponse, RecordedRequest, ReplayClient, RequestKind,
};
#[cfg(feature = "streaming")]
pub use backend::{ItemStream, ObjectStream, StreamedObject, TextStream};