pub enum StreamEvent {
Show 15 variants
StepStart {
index: u32,
},
StepFinish {
index: u32,
finish_reason: FinishReason,
usage: Option<Usage>,
},
TextStart {
content_index: usize,
},
TextDelta {
content_index: usize,
delta: String,
},
TextEnd {
content_index: usize,
},
ReasoningStart {
content_index: usize,
},
ReasoningDelta {
content_index: usize,
delta: String,
},
ReasoningEnd {
content_index: usize,
},
ToolCallStart {
content_index: usize,
id: ToolCallId,
name: String,
},
ToolCallDelta {
content_index: usize,
delta: String,
},
ToolCallEnd {
content_index: usize,
},
ToolResult {
id: ToolCallId,
name: String,
result: ToolResultValue,
},
ToolError {
id: ToolCallId,
name: String,
message: String,
},
Finish {
finish_reason: FinishReason,
usage: Option<Usage>,
},
ProviderError {
message: String,
retryable: bool,
},
}Expand description
LLM 流式事件 — provider 无关的细粒度输出事件。
遵循 OpenCode 的 start/delta/end 三段式设计:
- start — 标记一个内容块开始,消费者可据此创建 UI 占位
- delta — 增量数据,消费者追加到当前块
- end — 标记内容块结束,消费者可据此 finalize
每个事件通过 content_index 标识其所属的内容块位置
(一次 LLM 回复可能包含多个并行内容块)。
Variants§
StepStart
一个推理步骤开始(provider 可能在一次请求中产出多步)
StepFinish
一个推理步骤结束,携带停止原因和 token 用量
TextStart
文本内容块开始
TextDelta
文本增量
TextEnd
文本内容块结束
ReasoningStart
推理/思考内容块开始
ReasoningDelta
推理增量
ReasoningEnd
推理内容块结束
ToolCallStart
工具调用开始(已知 id 和 name)
ToolCallDelta
工具调用参数增量(JSON 字符串片段)
ToolCallEnd
工具调用参数流结束
ToolResult
工具执行成功
ToolError
工具执行失败
Finish
整个 LLM 请求完成
ProviderError
Provider 级别错误(网络、认证、限流等)
Implementations§
Source§impl StreamEvent
impl StreamEvent
Sourcepub fn is_terminal(&self) -> bool
pub fn is_terminal(&self) -> bool
是否为终态事件(Finish 或 ProviderError)。
Sourcepub fn is_text_delta(&self) -> bool
pub fn is_text_delta(&self) -> bool
是否为文本增量事件。
Sourcepub fn is_reasoning_delta(&self) -> bool
pub fn is_reasoning_delta(&self) -> bool
是否为推理增量事件。
Sourcepub fn as_text_delta(&self) -> Option<&str>
pub fn as_text_delta(&self) -> Option<&str>
提取文本增量内容,非 TextDelta 事件返回 None。
Sourcepub fn as_reasoning_delta(&self) -> Option<&str>
pub fn as_reasoning_delta(&self) -> Option<&str>
提取推理增量内容,非 ReasoningDelta 事件返回 None。
Trait Implementations§
Source§impl Clone for StreamEvent
impl Clone for StreamEvent
Source§fn clone(&self) -> StreamEvent
fn clone(&self) -> StreamEvent
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for StreamEvent
impl Debug for StreamEvent
Source§impl<'de> Deserialize<'de> for StreamEvent
impl<'de> Deserialize<'de> for StreamEvent
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for StreamEvent
impl PartialEq for StreamEvent
Source§fn eq(&self, other: &StreamEvent) -> bool
fn eq(&self, other: &StreamEvent) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl Serialize for StreamEvent
impl Serialize for StreamEvent
impl StructuralPartialEq for StreamEvent
Auto Trait Implementations§
impl Freeze for StreamEvent
impl RefUnwindSafe for StreamEvent
impl Send for StreamEvent
impl Sync for StreamEvent
impl Unpin for StreamEvent
impl UnsafeUnpin for StreamEvent
impl UnwindSafe for StreamEvent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more