Model enhancement
Add cross-cutting behavior around model calls without rewriting the provider model.
AI Tools · Function
wrapLanguageModel enhances a LanguageModelV4 by applying one or more middleware layers. It returns a new model instance and can optionally override the model and provider identifiers.
wrapLanguageModel accepts an existing LanguageModelV4 and one middleware or an array of them, then returns a new LanguageModelV4 with those middleware layers applied. Optional identifiers can replace the wrapped model's provider and model IDs.
wrapLanguageModel({ model, middleware, modelId?, providerId? })| Name | Type | Description |
|---|---|---|
model | LanguageModelV4 | The original LanguageModelV4 instance to be wrapped. |
middleware | LanguageModelV4Middleware | LanguageModelV4Middleware[] | Middleware to apply; an array applies multiple middleware layers in order. |
modelId | string | Optional replacement for the original model ID. |
providerId | string | Optional replacement for the original provider ID. |
A new LanguageModelV4 instance with middleware applied.
import { gateway, wrapLanguageModel } from 'ai';
const model = wrapLanguageModel({
model: gateway('openai/gpt-6-astra'),
middleware: yourLanguageModelMiddleware,
});Creates a middleware-enabled model that can be passed wherever a language model is accepted.
Add cross-cutting behavior around model calls without rewriting the provider model.
Apply several middleware layers with predictable input and wrapping order.
Expose a replacement model or provider identifier to downstream consumers.
It takes a LanguageModelV4 plus a LanguageModelV4Middleware or array of middleware, and returns a new LanguageModelV4 with middleware applied. The returned model can be used as a language model.
Follow-up: What can be customized without changing the original model? The optional modelId and providerId override the wrapped model's identifiers.
The middleware parameter accepts either one middleware object or an array. An array lets several middleware layers participate in the wrapped model.
Follow-up: How is an array ordered? The first middleware transforms input first, while the last is wrapped directly around the model.
The model parameter is the original LanguageModelV4 instance, and middleware supplies behavior to apply around it. Optional modelId and providerId values can override its identifiers.
Follow-up: What type does the function produce? A new LanguageModelV4 instance, rather than the original model object.
LanguageModelV4LanguageModelV4Middlewaregateway