事件流
@llm_chat 调用返回 AsyncGenerator[ReactOutput, None];@llm_function 的事件流通过 fn.stream(...) 返回。每个产出的项要么是响应(最终输出),要么是事件(生命周期信号)。
ReactOutput
ResponseYield
包含智能体的最终输出:EventYield
包含一个生命周期事件:14 种事件类型
循环生命周期
| 事件 | 触发时机 | 关键字段 |
|---|---|---|
ReactStartEvent | ReAct 循环开始 | — |
ReactIterationStartEvent | 新迭代开始 | iteration |
ReactIterationEndEvent | 迭代完成 | iteration |
ReactEndEvent | 循环终止 | final_messages, response |
LLM 调用
| 事件 | 触发时机 | 关键字段 |
|---|---|---|
LLMCallStartEvent | 调用提供商之前 | messages(LLM 看到的内容) |
LLMChunkArriveEvent | 每个流式数据块到达 | chunk(文本增量) |
LLMCallEndEvent | LLM 响应完成 | usage, content, response, messages |
LLMCallErrorEvent | LLM 调用失败 | error |
工具执行
| 事件 | 触发时机 | 关键字段 |
|---|---|---|
ToolCallsBatchStartEvent | 工具批次开始 | tool_calls |
ToolCallStartEvent | 单个工具开始执行 | tool_name, tool_call_id, arguments |
ToolCallArgumentsDeltaEvent | 流式工具参数 | delta |
ToolCallEndEvent | 工具执行完成 | tool_name, result, execution_time, success |
ToolCallErrorEvent | 工具执行失败 | tool_name, error |
ToolCallsBatchEndEvent | 批次中所有工具完成 | — |
自定义事件
| 事件 | 触发时机 | 关键字段 |
|---|---|---|
CustomEvent | 工具发出自定义数据 | event_name, data, tool_call_id |
ToolEventEmitter 发出——用于流式输出工具结果(例如 PyRepl 的标准输出、shell 输出等)。
便捷过滤器
EventOrigin(分叉路由)
使用 SelfRef 分叉时,事件来自多个智能体。EventOrigin 标识事件来源: