ai-sdk-core 0.3.0

High-level APIs for AI SDK - text generation, embeddings, and tool execution
Documentation
//! Middleware system for composable language model behavior customization.
//!
//! This module provides a flexible middleware architecture that allows you to
//! customize and extend language model behavior without modifying the underlying
//! model implementation. Middlewares are composable and can be layered to add
//! multiple behaviors.
//!
//! ## Middleware Capabilities
//!
//! Middlewares can:
//! - Transform or validate parameters before model calls
//! - Wrap and intercept generate and stream operations
//! - Override or extend model metadata
//! - Implement cross-cutting concerns (logging, metrics, caching, etc.)
//!
//! ## Composition Pattern
//!
//! Middlewares compose in an "onion" pattern where:
//! - Input transformations are applied from first to last middleware
//! - Output wrapping is applied from last to first middleware
//! - This ensures proper ordering of effects for both transformation and decoration
//!
//! ## Example
//!
//! ```no_run
//! use ai_sdk_core::middleware::{wrap_language_model, DefaultSettingsMiddleware};
//! use ai_sdk_provider::language_model::CallOptions;
//!
//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
//! # let model = todo!();
//! let wrapped = wrap_language_model(
//!     model,
//!     vec![
//!         Box::new(DefaultSettingsMiddleware::new(CallOptions {
//!             temperature: Some(0.7),
//!             ..Default::default()
//!         })),
//!     ],
//! );
//! # Ok(())
//! # }
//! ```

mod default_settings_middleware;
mod language_model_middleware;
mod simulate_streaming_middleware;
mod wrap_language_model;

pub use default_settings_middleware::DefaultSettingsMiddleware;
pub use language_model_middleware::{CallType, GenerateFn, LanguageModelMiddleware, StreamFn};
pub use simulate_streaming_middleware::SimulateStreamingMiddleware;
pub use wrap_language_model::wrap_language_model;