Skip to content
masterclassBuddyTech Buzz5 fresh blogs · 5:00 AM IST

AI Tools · Function

wrapLanguageModel

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.

How it works

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.

Syntax

wrapLanguageModel({ model, middleware, modelId?, providerId? })

Parameters

NameTypeDescription
modelLanguageModelV4The original LanguageModelV4 instance to be wrapped.
middlewareLanguageModelV4Middleware | LanguageModelV4Middleware[]Middleware to apply; an array applies multiple middleware layers in order.
modelIdstringOptional replacement for the original model ID.
providerIdstringOptional replacement for the original provider ID.

Returns

A new LanguageModelV4 instance with middleware applied.

Key points

  • Use it to add middleware-driven behavior around an existing language model.
  • The function creates a wrapper instead of modifying the model directly.
  • model is the underlying LanguageModelV4 that receives the middleware.
  • middleware can be one LanguageModelV4Middleware or an array of them.
  • modelId lets callers replace the wrapped model's reported model identifier.
  • providerId lets callers replace the wrapped model's reported provider identifier.
  • The result is a new LanguageModelV4 with the middleware active.

Common mistakes

  • Middleware order matters: with multiple entries, the first transforms input before later middleware layers.
  • The final middleware is the layer closest to the underlying model.

Example: Wrap a model with middleware

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.

When to use it

Model enhancement

Add cross-cutting behavior around model calls without rewriting the provider model.

Middleware composition

Apply several middleware layers with predictable input and wrapping order.

Identifier customization

Expose a replacement model or provider identifier to downstream consumers.

Interview questions

QWhat does wrapLanguageModel return?

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.

QHow does it handle multiple middleware objects?

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.

QWhat are the function's main inputs?

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.

  • LanguageModelV4
  • LanguageModelV4Middleware
  • gateway

Source: wrapLanguageModel. Checked 2026-10-15.