默认情况下,模型一轮回复要等完整产出后才作为整段消息送达。启用流式输出后,SDK 在生成过程中持续推送细粒度增量片段,可以做打字机效果,或单独渲染推理过程、工具调用过程。
在 options 里启用 partial messages(TypeScript 为
Java 没有类型化的流事件。增量片段以
模型生成的文本以增量片段连续到达,逐片打印就是打字机效果:
推理类模型在正式回复前会产出"思考"片段:
工具调用的参数也是逐步生成的,例如可以拿来在 UI 里实时渲染模型正在写入的文件内容:
上面的 Java 示例用游标逐条拉取消息。也可以让 SDK 推送:
每个消息流只能消费一次,游标和
启用
在 options 里启用 partial messages(TypeScript 为 includePartialMessages,Python 为 include_partial_messages,Java 为 includePartialMessages(true)):
PartialMessage 送达,事件内容从 rawJson() 解析。下面的 Java 示例用 delta(...) 辅助方法取出事件里的 delta 对象,后面两节沿用它。
打字机效果
模型生成的文本以增量片段连续到达,逐片打印就是打字机效果:
推理过程
推理类模型在正式回复前会产出"思考"片段:
工具调用入参
工具调用的参数也是逐步生成的,例如可以拿来在 UI 里实时渲染模型正在写入的文件内容:
推送式读取(Java)
上面的 Java 示例用游标逐条拉取消息。也可以让 SDK 推送:messages().consume(handler, executor) 在给定的执行器上按顺序逐条调用处理器,上一条处理完才投递下一条,消息流结束时返回的 stage 正常完成。
Java
consume() 二选一,第二次订阅抛出 MessageStreamAlreadyConsumedException。处理器抛出异常时,consume() 返回的 stage 以 CallbackExecutionException 结束,所属的查询或会话随之关闭。不要在处理器里阻塞等待,也不要调用阻塞式 close()。
完整事件结构见 SDK References。Java 的消息类型见 Message Types。