文档
CodeRabbit
Cloudflare
AG Grid
Netlify
Neon
WorkOS
Clerk
Convex
Electric
PowerSync
Sentry
Railway
Prisma
Strapi
Unkey
CodeRabbit
Cloudflare
AG Grid
Netlify
Neon
WorkOS
Clerk
Convex
Electric
PowerSync
Sentry
Railway
Prisma
Strapi
Unkey
类引用
函数引用
接口引用
类型别名引用
变量引用
类引用

StreamProcessor

类: StreamProcessor

定义于: activities/chat/stream/processor.ts:120

StreamProcessor - 用于处理 AI 响应流的状态机

管理完整的 UIMessage[] 对话,并在更改时发出事件。信任适配器契约:适配器发出干净的 AG-UI 事件,顺序正确。

状态跟踪

  • 完整的消息数组
  • 当前正在流式传输的助手消息
  • 文本内容累积(在 TEXT_MESSAGE_START 时重置)
  • 多个并行工具调用
  • 通过 TOOL_CALL_END 事件完成工具调用

参见

  • docs/chat-architecture.md#streamprocessor-internal-state — 状态字段参考
  • docs/chat-architecture.md#adapter-contract — 此类对适配器的期望

构造函数

构造器

ts
new StreamProcessor(options): StreamProcessor;

定义于: activities/chat/stream/processor.ts:147

参数

选项

StreamProcessorOptions = {}

Returns (返回)

StreamProcessor

方法

addToolApprovalResponse()

ts
addToolApprovalResponse(approvalId, approved): void;

定义于: activities/chat/stream/processor.ts:329

添加一个审批响应(由客户端在处理 onApprovalRequest 后调用)

参数

approvalId

string

approved

boolean

Returns (返回)

void


addToolResult()

ts
addToolResult(
   toolCallId, 
   output, 
   error?): void;

定义于: activities/chat/stream/processor.ts:285

添加一个工具结果(由客户端在处理 onToolCall 后调用)

参数

toolCallId

string

output

any

error?

string

Returns (返回)

void


addUserMessage()

ts
addUserMessage(content, id?): UIMessage;

定义于: activities/chat/stream/processor.ts:194

将用户消息添加到对话中。支持简单的字符串内容和多模态内容数组。

参数

content

消息内容(字符串或内容部分数组)

string | ContentPart[]

id?

string

可选的自定义消息 ID(如果未提供则生成)

Returns (返回)

UIMessage

创建的 UIMessage

示例

ts
// Simple text message
processor.addUserMessage('Hello!')

// Multimodal message with image
processor.addUserMessage([
  { type: 'text', content: 'What is in this image?' },
  { type: 'image', source: { type: 'url', value: 'https://example.com/photo.jpg' } }
])

// With custom ID
processor.addUserMessage('Hello!', 'custom-id-123')

areAllToolsComplete()

ts
areAllToolsComplete(): boolean;

定义于: activities/chat/stream/processor.ts:360

检查上次助手消息中的所有工具调用是否完成。用于自动继续逻辑

Returns (返回)

boolean


clearMessages()

ts
clearMessages(): void;

定义于: activities/chat/stream/processor.ts:404

清除所有消息

Returns (返回)

void


finalizeStream()

ts
finalizeStream(): void;

定义于: activities/chat/stream/processor.ts:954

完成流 — 完成所有待处理的操作。

在异步迭代器结束时调用(流关闭)。作为最后的安全网:完成所有剩余的工具调用,刷新未发出的文本,并触发 onStreamEnd。

Returns (返回)

void

参见

docs/chat-architecture.md#single-shot-text-response — 完成步骤


getCurrentAssistantMessageId()

ts
getCurrentAssistantMessageId(): string | null;

定义于: activities/chat/stream/processor.ts:246

获取当前助手消息 ID(如果已创建)。如果 prepareAssistantMessage() 被调用但没有收到任何内容,则返回 null。

Returns (返回)

string | null


getMessages()

ts
getMessages(): UIMessage[];

定义于: activities/chat/stream/processor.ts:352

获取当前消息

Returns (返回)

UIMessage[]


getRecording()

ts
getRecording(): ChunkRecording | null;

定义于: activities/chat/stream/processor.ts:1051

获取当前的录制

Returns (返回)

ChunkRecording | null


getState()

ts
getState(): ProcessorState;

定义于: activities/chat/stream/processor.ts:1024

获取当前处理器状态

Returns (返回)

ProcessorState


prepareAssistantMessage()

ts
prepareAssistantMessage(): void;

定义于: activities/chat/stream/processor.ts:224

为新的助手消息流做准备。不会立即创建消息 — 消息在收到第一个包含内容的块时延迟创建。这可以防止在自动继续生成没有内容时,助手消息在 UI 中闪烁。

Returns (返回)

void


process()

ts
process(stream): Promise<ProcessorResult>;

定义于: activities/chat/stream/processor.ts:417

处理流并调用处理程序发出事件

参数

stream

AsyncIterable<any>

Returns (返回)

Promise<ProcessorResult>


processChunk()

ts
processChunk(chunk): void;

定义于: activities/chat/stream/processor.ts:451

处理流中的单个块。

中央调度所有 AG-UI 事件。每种事件类型映射到特定的处理程序。列表中未包含的事件会被故意忽略(RUN_STARTED、TEXT_MESSAGE_END、STEP_STARTED、STATE_SNAPSHOT、STATE_DELTA)。

参数

chunk

AGUIEvent

Returns (返回)

void

参见

docs/chat-architecture.md#adapter-contract — 预期的事件类型和顺序


removeMessagesAfter()

ts
removeMessagesAfter(index): void;

定义于: activities/chat/stream/processor.ts:396

删除某个索引后的消息(用于重新加载/重试)

参数

index

number

Returns (返回)

void


reset()

ts
reset(): void;

定义于: activities/chat/stream/processor.ts:1074

完全重置(包括消息)

Returns (返回)

void


setMessages()

ts
setMessages(messages): void;

定义于: activities/chat/stream/processor.ts:166

设置消息数组(例如,从持久化状态)

参数

messages

UIMessage[]

Returns (返回)

void


startAssistantMessage()

ts
startAssistantMessage(): string;

定义于: activities/chat/stream/processor.ts:236

Returns (返回)

string

已弃用

使用 prepareAssistantMessage() 代替。这将立即创建一个助手消息,可能导致空消息在 UI 中闪烁。


startRecording()

ts
startRecording(): void;

定义于: activities/chat/stream/processor.ts:1038

开始录制块

Returns (返回)

void


toModelMessages()

ts
toModelMessages(): ModelMessage<
  | string
  | ContentPart<unknown, unknown, unknown, unknown, unknown>[]
  | null>[];

定义于: activities/chat/stream/processor.ts:341

将对话作为 ModelMessages 获取(用于发送到 LLM)

Returns (返回)

ModelMessage< | string | ContentPart<unknown, unknown, unknown, unknown, unknown>[] | null>[]


replay()

ts
static replay(recording, options?): Promise<ProcessorResult>;

定义于: activities/chat/stream/processor.ts:1094

通过处理器重放录制

参数

recording

ChunkRecording

options?

StreamProcessorOptions

Returns (返回)

Promise<ProcessorResult>