simulateStreamingMiddleware()
simulateStreamingMiddleware
is a middleware function that simulates streaming behavior with responses from non-streaming language models. This is useful when you want to maintain a consistent streaming interface even when using models that only provide complete responses.
import { simulateStreamingMiddleware } from 'ai';
const middleware = simulateStreamingMiddleware();
Import
import { simulateStreamingMiddleware } from "ai"
API Signature
Parameters
This middleware doesn't accept any parameters.
Returns
Returns a middleware object that:
- Takes a complete response from a language model
- Converts it into a simulated stream of chunks
- Properly handles various response components including:
- Text content
- Reasoning (as string or array of objects)
- Tool calls
- Metadata and usage information
- Warnings
Usage Example
import { streamText } from 'ai';import { wrapLanguageModel } from 'ai';import { simulateStreamingMiddleware } from 'ai';
// Example with a non-streaming modelconst result = streamText({ model: wrapLanguageModel({ model: nonStreamingModel, middleware: simulateStreamingMiddleware(), }), prompt: 'Your prompt here',});
// Now you can use the streaming interfacefor await (const chunk of result.fullStream) { // Process streaming chunks}
How It Works
The middleware:
- Awaits the complete response from the language model
- Creates a
ReadableStream
that emits chunks in the correct sequence - Simulates streaming by breaking down the response into appropriate chunk types
- Preserves all metadata, reasoning, tool calls, and other response properties