streamText()
Streams text generations from a language model.
You can use the streamText function for interactive use cases such as chat bots and other real-time applications. You can also generate UI components with tools.
import { streamText } from 'ai';
const { textStream } = streamText({ model: "xai/grok-4.5", prompt: 'Invent a new holiday and describe its traditions.',});
for await (const textPart of textStream) { process.stdout.write(textPart);}For guidance on runtimeContext, toolsContext, tool context, and sensitive
context filtering, see Runtime and Tool
Context.
To see streamText in action, check out these examples.
Import
import { streamText } from "ai"API Signature
Parameters
model:
LanguageModel
instructions:
Instructions
prompt:
string | Array<SystemModelMessage | UserModelMessage | AssistantModelMessage | ToolModelMessage>
messages:
Array<SystemModelMessage | UserModelMessage | AssistantModelMessage | ToolModelMessage>
SystemModelMessage
role:
'system'
content:
string
UserModelMessage
role:
'user'
content:
string | Array<TextPart | ImagePart | FilePart>
TextPart
type:
'text'
text:
string
ImagePart
type:
'image'
image:
string | Uint8Array | Buffer | ArrayBuffer | URL
mediaType?:
string
FilePart
type:
'file'
data:
string | Uint8Array | Buffer | ArrayBuffer | URL
mediaType:
string
AssistantModelMessage
role:
'assistant'
content:
string | Array<TextPart | FilePart | ReasoningPart | ReasoningFilePart | ToolCallPart>
TextPart
type:
'text'
text:
string
ReasoningPart
type:
'reasoning'
text:
string
ReasoningFilePart
type:
'reasoning-file'
data:
string | Uint8Array | Buffer | ArrayBuffer | URL
mediaType:
string
FilePart
type:
'file'
data:
string | Uint8Array | Buffer | ArrayBuffer | URL
mediaType:
string
filename?:
string
ToolCallPart
type:
'tool-call'
toolCallId:
string
toolName:
string
input:
object based on zod schema
ToolModelMessage
role:
'tool'
content:
Array<ToolResultPart>
ToolResultPart
type:
'tool-result'
toolCallId:
string
toolName:
string
result:
unknown
isError?:
boolean
allowSystemInMessages?:
boolean
tools:
ToolSet
Tool
description?:
string | ((options: { context: CONTEXT; experimental_sandbox?: Experimental_SandboxSession }) => string)
inputSchema:
Zod Schema | JSON Schema
execute?:
async (parameters: T, options: ToolExecutionOptions) => RESULT
ToolExecutionOptions
toolCallId:
string
messages:
ModelMessage[]
abortSignal:
AbortSignal
toolChoice?:
"auto" | "none" | "required" | { "type": "tool", "toolName": string }
maxOutputTokens?:
number
temperature?:
number
topP?:
number
topK?:
number
presencePenalty?:
number
frequencyPenalty?:
number
stopSequences?:
string[]
seed?:
number
reasoning?:
'provider-default' | 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh'
maxRetries?:
number
abortSignal?:
AbortSignal
timeout?:
number | { totalMs?: number; stepMs?: number; chunkMs?: number; toolMs?: number; tools?: { [toolName]Ms?: number } }
headers?:
Record<string, string | undefined>
telemetry?:
TelemetryOptions
TelemetryOptions
isEnabled?:
boolean
recordInputs?:
boolean
recordOutputs?:
boolean
functionId?:
string
includeRuntimeContext?:
{ [KEY in keyof CONTEXT]?: boolean }
includeToolsContext?:
{ [TOOL_NAME in keyof InferToolSetContext<TOOLS>]?: { [KEY in keyof InferToolSetContext<TOOLS>[TOOL_NAME]]?: boolean } }
integrations?:
Telemetry | Telemetry[]
experimental_transform?:
StreamTextTransform | Array<StreamTextTransform>
StreamTextTransform
transform:
(options: TransformOptions) => TransformStream<TextStreamPart<TOOLS>, TextStreamPart<TOOLS>>
TransformOptions
stopStream:
() => void
tools:
TOOLS
includeRawChunks?:
boolean
providerOptions?:
Record<string,JSONObject> | undefined
activeTools?:
ActiveTools<TOOLS>
toolOrder?:
ToolOrder<TOOLS>
toolApproval?:
ToolApprovalConfiguration<TOOLS, RUNTIME_CONTEXT>
experimental_refineToolInput?:
ToolInputRefinement<TOOLS>
stopWhen?:
StopCondition<TOOLS> | Array<StopCondition<TOOLS>>
prepareStep?:
(options: PrepareStepOptions) => PrepareStepResult<TOOLS> | Promise<PrepareStepResult<TOOLS>>
PrepareStepFunction<TOOLS>
options:
object
PrepareStepOptions
steps:
Array<StepResult<TOOLS>>
stepNumber:
number
model:
LanguageModel
instructions:
Instructions | undefined
initialInstructions:
Instructions | undefined
messages:
Array<ModelMessage>
runtimeContext?:
CONTEXT
toolsContext:
InferToolSetContext<TOOLS>
experimental_sandbox?:
Experimental_SandboxSession | undefined
PrepareStepResult<TOOLS>
model?:
LanguageModel
toolChoice?:
ToolChoice<TOOLS>
activeTools?:
ActiveTools<TOOLS>
toolOrder?:
ToolOrder<TOOLS>
instructions?:
Instructions
messages?:
Array<ModelMessage>
runtimeContext?:
CONTEXT
toolsContext:
InferToolSetContext<TOOLS>
experimental_sandbox?:
Experimental_SandboxSession
providerOptions?:
ProviderOptions
runtimeContext?:
CONTEXT
toolsContext:
InferToolSetContext<TOOLS>
experimental_sandbox?:
Experimental_SandboxSession
experimental_download?:
(requestedDownloads: Array<{ url: URL; isUrlSupportedByModel: boolean }>) => Promise<Array<null | { data: Uint8Array; mediaType?: string }>>
include?:
{ requestBody?: boolean; requestMessages?: boolean; rawChunks?: boolean }
Object
requestBody?:
boolean
requestMessages?:
boolean
rawChunks?:
boolean
repairToolCall?:
(options: ToolCallRepairOptions) => Promise<LanguageModelV4ToolCall | null>
ToolCallRepairOptions
instructions:
Instructions | undefined
system?:
Instructions | undefined
messages:
ModelMessage[]
toolCall:
LanguageModelV4ToolCall
tools:
TOOLS
inputSchema:
(options: { toolName: string }) => JSONSchema7
error:
NoSuchToolError | InvalidToolInputError
onChunk?:
(event: OnChunkResult) => Promise<void> |void
OnChunkResult
chunk:
TextStreamPart<TOOLS>
TextStreamPart
type:
'text-delta'
text:
string
TextStreamPart
type:
'reasoning-delta'
text:
string
TextStreamPart
type:
'source'
source:
Source
TextStreamPart
type:
'custom'
kind:
string
providerMetadata?:
ProviderMetadata
TextStreamPart
type:
'tool-call'
toolCallId:
string
toolName:
string
input:
object based on zod schema
TextStreamPart
type:
'tool-input-start'
id:
string
toolName:
string
TextStreamPart
type:
'tool-input-delta'
id:
string
toolName:
string
delta:
string
TextStreamPart
type:
'tool-result'
toolCallId:
string
toolName:
string
input:
object based on zod schema
output:
any
onError?:
(event: OnErrorResult) => Promise<void> |void
OnErrorResult
error:
unknown
output?:
Output
Output
Output.text():
Output
Output.object():
Output
Options
schema:
Schema<OBJECT>
name?:
string
description?:
string
Output.array():
Output
Options
element:
Schema<ELEMENT>
name?:
string
description?:
string
Output.choice():
Output
Options
options:
Array<string>
name?:
string
description?:
string
Output.json():
Output
Options
name?:
string
description?:
string
onStepEnd?:
(result: StepResult<TOOLS>) => Promise<void> | void
StepResult
stepType:
"initial" | "continue" | "tool-result"
finishReason:
"stop" | "length" | "content-filter" | "tool-calls" | "error" | "other"
rawFinishReason:
string | undefined
usage:
LanguageModelUsage
LanguageModelUsage
inputTokens:
number | undefined
inputTokenDetails:
LanguageModelInputTokenDetails
LanguageModelInputTokenDetails
noCacheTokens:
number | undefined
cacheReadTokens:
number | undefined
cacheWriteTokens:
number | undefined
outputTokens:
number | undefined
outputTokenDetails:
LanguageModelOutputTokenDetails
LanguageModelOutputTokenDetails
textTokens:
number | undefined
reasoningTokens:
number | undefined
totalTokens:
number | undefined
raw?:
object | undefined
performance:
StepResultPerformance
StepResultPerformance
effectiveOutputTokensPerSecond:
number
outputTokensPerSecond:
number | undefined
inputTokensPerSecond:
number | undefined
effectiveTotalTokensPerSecond:
number
stepTimeMs:
number
responseTimeMs:
number
toolExecutionMs:
Readonly<Record<string, number>>
timeToFirstOutputMs:
number | undefined
timeBetweenOutputChunksMs:
OutputChunkTimingStats | undefined
text:
string
reasoningText:
string | undefined
sources:
Array<Source>
Source
sourceType:
'url'
id:
string
url:
string
title?:
string
providerMetadata?:
SharedV2ProviderMetadata
files:
Array<GeneratedFile>
GeneratedFile
base64:
string
uint8Array:
Uint8Array
mediaType:
string
toolCalls:
ToolCall[]
toolResults:
ToolResult[]
warnings:
Warning[] | undefined
response?:
Response
Response
id:
string
modelId:
string
timestamp:
Date
headers?:
Record<string, string>
isContinued:
boolean
providerMetadata?:
Record<string,JSONObject> | undefined
onStepFinish?:
GenerateTextOnStepFinishCallback<TOOLS>
onEnd?:
(result: OnEndResult) => Promise<void> | void
OnEndResult
finishReason:
"stop" | "length" | "content-filter" | "tool-calls" | "error" | "other"
rawFinishReason:
string | undefined
usage:
LanguageModelUsage
LanguageModelUsage
inputTokens:
number | undefined
inputTokenDetails:
LanguageModelInputTokenDetails
LanguageModelInputTokenDetails
noCacheTokens:
number | undefined
cacheReadTokens:
number | undefined
cacheWriteTokens:
number | undefined
outputTokens:
number | undefined
outputTokenDetails:
LanguageModelOutputTokenDetails
LanguageModelOutputTokenDetails
textTokens:
number | undefined
reasoningTokens:
number | undefined
totalTokens:
number | undefined
raw?:
object | undefined
totalUsage:
LanguageModelUsage
LanguageModelUsage
inputTokens:
number | undefined
outputTokens:
number | undefined
totalTokens:
number | undefined
providerMetadata:
Record<string,JSONObject> | undefined
text:
string
reasoning:
string | undefined
reasoning:
Array<ReasoningDetail>
ReasoningDetail
type:
'text'
text:
string
signature?:
string
ReasoningDetail
type:
'redacted'
data:
string
sources:
Array<Source>
Source
sourceType:
'url'
id:
string
url:
string
title?:
string
providerMetadata?:
SharedV2ProviderMetadata
files:
Array<GeneratedFile>
GeneratedFile
base64:
string
uint8Array:
Uint8Array
mediaType:
string
toolCalls:
ToolCall[]
toolResults:
ToolResult[]
warnings:
Warning[] | undefined
response?:
Response
Response
id:
string
modelId:
string
timestamp:
Date
headers?:
Record<string, string>
messages:
Array<ResponseMessage>
steps:
Array<StepResult>
finalStep:
StepResult
runtimeContext:
CONTEXT
onFinish?:
(result: OnEndResult) => Promise<void> | void
onAbort?:
(event: OnAbortResult) => Promise<void> | void
OnAbortResult
steps:
Array<StepResult>
onStart?:
(event: GenerateTextStartEvent) => PromiseLike<void> | void
GenerateTextStartEvent
provider:
string
modelId:
string
instructions:
Instructions | undefined
messages:
Array<ModelMessage>
tools:
TOOLS | undefined
toolChoice:
ToolChoice<TOOLS> | undefined
activeTools:
ActiveTools<TOOLS>
toolOrder:
ToolOrder<TOOLS>
maxOutputTokens:
number | undefined
temperature:
number | undefined
topP:
number | undefined
topK:
number | undefined
presencePenalty:
number | undefined
frequencyPenalty:
number | undefined
stopSequences:
string[] | undefined
seed:
number | undefined
maxRetries:
number
timeout:
number | { totalMs?: number; stepMs?: number; chunkMs?: number } | undefined
headers:
Record<string, string | undefined> | undefined
providerOptions:
ProviderOptions | undefined
output:
OUTPUT | undefined
abortSignal:
AbortSignal | undefined
include:
{ requestBody?: boolean; requestMessages?: boolean } | undefined
runtimeContext:
CONTEXT
toolsContext:
InferToolSetContext<TOOLS>
onStepStart?:
(event: GenerateTextStepStartEvent) => PromiseLike<void> | void
GenerateTextStepStartEvent
stepNumber:
number
provider:
string
modelId:
string
instructions:
Instructions | undefined
messages:
Array<ModelMessage>
tools:
TOOLS | undefined
toolChoice:
LanguageModelV4ToolChoice | undefined
activeTools:
ActiveTools<TOOLS>
toolOrder:
ToolOrder<TOOLS>
steps:
ReadonlyArray<StepResult<TOOLS>>
providerOptions:
ProviderOptions | undefined
timeout:
number | { totalMs?: number; stepMs?: number; chunkMs?: number } | undefined
headers:
Record<string, string | undefined> | undefined
stopWhen:
StopCondition<TOOLS> | Array<StopCondition<TOOLS>> | undefined
output:
OUTPUT | undefined
abortSignal:
AbortSignal | undefined
include:
{ requestBody?: boolean; requestMessages?: boolean } | undefined
runtimeContext:
CONTEXT
toolsContext:
InferToolSetContext<TOOLS>
onLanguageModelCallStart?:
(event: LanguageModelCallStartEvent) => PromiseLike<void> | void
LanguageModelCallStartEvent
callId:
string
provider:
string
modelId:
string
instructions:
Instructions | undefined
messages:
Array<ModelMessage>
tools:
ReadonlyArray<Record<string, unknown>> | undefined
onLanguageModelCallEnd?:
(event: LanguageModelCallEndEvent) => PromiseLike<void> | void
LanguageModelCallEndEvent
callId:
string
provider:
string
modelId:
string
finishReason:
FinishReason
usage:
LanguageModelUsage
content:
ReadonlyArray<ContentPart<TOOLS>>
responseId:
string
performance:
{ responseTimeMs: number; effectiveOutputTokensPerSecond: number; outputTokensPerSecond: number | undefined; inputTokensPerSecond: number | undefined; effectiveTotalTokensPerSecond: number; timeToFirstOutputMs: number | undefined; timeBetweenOutputChunksMs?: OutputChunkTimingStats }
LanguageModelCallPerformance
responseTimeMs:
number
effectiveOutputTokensPerSecond:
number
outputTokensPerSecond:
number | undefined
inputTokensPerSecond:
number | undefined
effectiveTotalTokensPerSecond:
number
timeToFirstOutputMs:
number | undefined
timeBetweenOutputChunksMs:
OutputChunkTimingStats | undefined
onToolExecutionStart?:
(event: ToolExecutionStartEvent) => PromiseLike<void> | void
ToolExecutionStartEvent
callId:
string
toolCall:
TypedToolCall<TOOLS>
messages:
Array<ModelMessage>
toolContext:
InferToolContext<TOOLS[toolName]>
onToolExecutionEnd?:
(event: ToolExecutionEndEvent) => PromiseLike<void> | void
ToolExecutionEndEvent
callId:
string
toolCall:
TypedToolCall<TOOLS>
toolExecutionMs:
number
messages:
Array<ModelMessage>
toolContext:
InferToolContext<TOOLS[toolName]>
toolOutput:
ToolOutput<TOOLS>
experimental_onToolCallStart?:
(event: ToolExecutionStartEvent) => PromiseLike<void> | void
experimental_onToolCallFinish?:
(event: ToolExecutionEndEvent) => PromiseLike<void> | void
Returns
content:
Promise<Array<ContentPart<TOOLS>>>
finishReason:
PromiseLike<'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'>
rawFinishReason:
PromiseLike<string | undefined>
usage:
Promise<LanguageModelUsage>
LanguageModelUsage
inputTokens:
number | undefined
outputTokens:
number | undefined
totalTokens:
number | undefined
totalUsage:
Promise<LanguageModelUsage>
LanguageModelUsage
inputTokens:
number | undefined
inputTokenDetails:
LanguageModelInputTokenDetails
LanguageModelInputTokenDetails
noCacheTokens:
number | undefined
cacheReadTokens:
number | undefined
cacheWriteTokens:
number | undefined
outputTokens:
number | undefined
outputTokenDetails:
LanguageModelOutputTokenDetails
LanguageModelOutputTokenDetails
textTokens:
number | undefined
reasoningTokens:
number | undefined
totalTokens:
number | undefined
raw?:
object | undefined
providerMetadata:
Promise<ProviderMetadata | undefined>
text:
Promise<string>
reasoning:
Promise<Array<ReasoningOutput | ReasoningFileOutput>>
ReasoningOutput
type:
'reasoning'
text:
string
providerMetadata?:
SharedV2ProviderMetadata
ReasoningFileOutput
type:
'reasoning-file'
file:
GeneratedFile
providerMetadata?:
SharedV2ProviderMetadata
reasoningText:
Promise<string | undefined>
sources:
Promise<Array<Source>>
Source
sourceType:
'url'
id:
string
url:
string
title?:
string
providerMetadata?:
SharedV2ProviderMetadata
files:
Promise<Array<GeneratedFile>>
GeneratedFile
base64:
string
uint8Array:
Uint8Array
mediaType:
string
toolCalls:
Promise<TypedToolCall<TOOLS>[]>
toolResults:
Promise<TypedToolResult<TOOLS>[]>
staticToolCalls:
PromiseLike<Array<StaticToolCall<TOOLS>>>
dynamicToolCalls:
PromiseLike<Array<DynamicToolCall>>
staticToolResults:
PromiseLike<Array<StaticToolResult<TOOLS>>>
dynamicToolResults:
PromiseLike<Array<DynamicToolResult>>
request:
Promise<LanguageModelRequestMetadata>
LanguageModelRequestMetadata
messages?:
Array<ModelMessage>
body?:
unknown
response:
Promise<LanguageModelResponseMetadata>
LanguageModelResponseMetadata
id:
string
modelId:
string
timestamp:
Date
headers?:
Record<string, string>
body?:
unknown
messages:
Array<ResponseMessage>
warnings:
Promise<Warning[] | undefined>
responseMessages:
Promise<Array<ResponseMessage>>
steps:
Promise<Array<StepResult>>
StepResult
stepType:
"initial" | "continue" | "tool-result"
text:
string
reasoning:
string | undefined
sources:
Array<Source>
Source
sourceType:
'url'
id:
string
url:
string
title?:
string
providerMetadata?:
SharedV2ProviderMetadata
files:
Array<GeneratedFile>
GeneratedFile
base64:
string
uint8Array:
Uint8Array
mediaType:
string
toolCalls:
array
toolResults:
array
finishReason:
'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'
rawFinishReason:
string | undefined
usage:
LanguageModelUsage
LanguageModelUsage
inputTokens:
number | undefined
inputTokenDetails:
LanguageModelInputTokenDetails
LanguageModelInputTokenDetails
noCacheTokens:
number | undefined
cacheReadTokens:
number | undefined
cacheWriteTokens:
number | undefined
outputTokens:
number | undefined
outputTokenDetails:
LanguageModelOutputTokenDetails
LanguageModelOutputTokenDetails
textTokens:
number | undefined
reasoningTokens:
number | undefined
totalTokens:
number | undefined
raw?:
object | undefined
request?:
RequestMetadata
RequestMetadata
messages?:
Array<ModelMessage>
body?:
unknown
response?:
ResponseMetadata
ResponseMetadata
id:
string
modelId:
string
timestamp:
Date
headers?:
Record<string, string>
messages:
Array<ResponseMessage>
warnings:
Warning[] | undefined
isContinued:
boolean
providerMetadata?:
Record<string,JSONObject> | undefined
textStream:
AsyncIterableStream<string>
finalStep:
Promise<StepResult>
stream:
AsyncIterable<TextStreamPart<TOOLS>> & ReadableStream<TextStreamPart<TOOLS>>
TextStreamPart
type:
'text'
text:
string
TextStreamPart
type:
'reasoning'
text:
string
providerMetadata?:
ProviderMetadata
TextStreamPart
type:
'source'
sourceType:
'url'
id:
string
url:
string
title?:
string
providerMetadata?:
ProviderMetadata
TextStreamPart
type:
'file'
file:
GeneratedFile
GeneratedFile
base64:
string
uint8Array:
Uint8Array
mediaType:
string
TextStreamPart
type:
'custom'
kind:
string
providerMetadata?:
ProviderMetadata
TextStreamPart
type:
'tool-call'
toolCallId:
string
toolName:
string
input:
object based on tool parameters
TextStreamPart
type:
'tool-call-streaming-start'
toolCallId:
string
toolName:
string
TextStreamPart
type:
'tool-call-delta'
toolCallId:
string
toolName:
string
argsTextDelta:
string
TextStreamPart
type:
'tool-result'
toolCallId:
string
toolName:
string
input:
object based on tool parameters
output:
tool execution return type
TextStreamPart
type:
'start-step'
request:
LanguageModelRequestMetadata
LanguageModelRequestMetadata
messages:
Array<ModelMessage>
body?:
unknown
warnings:
Warning[]
TextStreamPart
type:
'finish-step'
response:
Omit<LanguageModelResponseMetadata, 'messages' | 'body'>
LanguageModelResponseMetadata
id:
string
modelId:
string
timestamp:
Date
headers:
Record<string, string>
usage:
LanguageModelUsage
LanguageModelUsage
inputTokens:
number | undefined
inputTokenDetails:
LanguageModelInputTokenDetails
LanguageModelInputTokenDetails
noCacheTokens:
number | undefined
cacheReadTokens:
number | undefined
cacheWriteTokens:
number | undefined
outputTokens:
number | undefined
outputTokenDetails:
LanguageModelOutputTokenDetails
LanguageModelOutputTokenDetails
textTokens:
number | undefined
reasoningTokens:
number | undefined
totalTokens:
number | undefined
raw?:
object | undefined
performance:
StepResultPerformance
StepResultPerformance
effectiveOutputTokensPerSecond:
number
outputTokensPerSecond:
number | undefined
inputTokensPerSecond:
number | undefined
effectiveTotalTokensPerSecond:
number
stepTimeMs:
number
responseTimeMs:
number
toolExecutionMs:
Readonly<Record<string, number>>
timeToFirstOutputMs:
number | undefined
timeBetweenOutputChunksMs:
OutputChunkTimingStats | undefined
finishReason:
'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'
rawFinishReason:
string | undefined
providerMetadata?:
ProviderMetadata | undefined
TextStreamPart
type:
'start'
TextStreamPart
type:
'finish'
finishReason:
'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other'
rawFinishReason:
string | undefined
totalUsage:
LanguageModelUsage
LanguageModelUsage
inputTokens:
number | undefined
inputTokenDetails:
LanguageModelInputTokenDetails
LanguageModelInputTokenDetails
noCacheTokens:
number | undefined
cacheReadTokens:
number | undefined
cacheWriteTokens:
number | undefined
outputTokens:
number | undefined
outputTokenDetails:
LanguageModelOutputTokenDetails
LanguageModelOutputTokenDetails
textTokens:
number | undefined
reasoningTokens:
number | undefined
totalTokens:
number | undefined
raw?:
object | undefined
TextStreamPart
type:
'reasoning-part-finish'
TextStreamPart
type:
'error'
error:
unknown
TextStreamPart
type:
'abort'
reason?:
unknown
fullStream:
AsyncIterable<TextStreamPart<TOOLS>> & ReadableStream<TextStreamPart<TOOLS>>
partialOutputStream:
AsyncIterableStream<PARTIAL_OUTPUT>
elementStream:
AsyncIterableStream<ELEMENT_OUTPUT>
output:
Promise<COMPLETE_OUTPUT>
consumeStream:
(options?: ConsumeStreamOptions) => Promise<void>
ConsumeStreamOptions
onError?:
(error: unknown) => void
toUIMessageStream:
(options?: UIMessageStreamOptions) => AsyncIterableStream<UIMessageChunk>
UIMessageStreamOptions
originalMessages?:
UIMessage[]
onEnd?:
(options: { messages: UIMessage[]; isContinuation: boolean; responseMessage: UIMessage; isAborted: boolean; }) => void
onFinish?:
(options: { messages: UIMessage[]; isContinuation: boolean; responseMessage: UIMessage; isAborted: boolean; }) => void
messageMetadata?:
(options: { part: TextStreamPart<TOOLS> & { type: "start" | "finish" | "start-step" | "finish-step"; }; }) => unknown
sendReasoning?:
boolean
sendSources?:
boolean
sendFinish?:
boolean
sendStart?:
boolean
onError?:
(error: unknown) => string
consumeSseStream?:
(stream: ReadableStream) => Promise<void>
pipeUIMessageStreamToResponse:
(response: ServerResponse, options?: ResponseInit & UIMessageStreamOptions) => void
ResponseInit & UIMessageStreamOptions
status?:
number
statusText?:
string
headers?:
HeadersInit
pipeTextStreamToResponse:
(response: ServerResponse, init?: ResponseInit) => void
ResponseInit
status?:
number
statusText?:
string
headers?:
Record<string, string>
toUIMessageStreamResponse:
(options?: ResponseInit & UIMessageStreamOptions) => Response
ResponseInit & UIMessageStreamOptions
status?:
number
statusText?:
string
headers?:
HeadersInit
toTextStreamResponse:
(init?: ResponseInit) => Response
ResponseInit
status?:
number
statusText?:
string
headers?:
Record<string, string>
Types
ActiveTools
type ActiveTools<TOOLS extends ToolSet> = | ReadonlyArray<keyof TOOLS & string> | undefined;Limits a generation step to the listed tool names. undefined means no tool restriction is applied.