五大框架流式消息处理深度对比
Related topics: [[llm-abstraction-comparison]], [[kosong]], [[republic]], [[litai]], [[pydantic-ai]], [[langchain]]
概述
本文深入对比五个框架对流式(Streaming)消息的处理机制,评估它们是否将流式支持作为一等公民(First-class Citizen)。
一等公民的评判标准
- API 设计:流式是否是核心抽象,还是事后添加的
- 数据流模式:推模式(Push)vs 拉模式(Pull),是否支持背压
- 片段管理: 如何处理流式片段的组装和合并
- 工具调用:流式响应中工具调用的处理能力
- 错误处理:流式过程中的错误传播和恢复
- 取消机制:是否支持优雅的流式取消
1. kosong - 流式原生设计
核心架构:Protocol-based 流式抽象
@runtime_checkable
class StreamedMessage(Protocol):
def __aiter__(self) -> AsyncIterator[StreamedMessagePart]: ...
@property
def id(self) -> str | None: ...
@property
def usage(self) -> "TokenUsage | None": ...