| """ | |
| OpenAI 语义的结构化流事件(唯一流式中间态)。 | |
| 整条链路:插件产出字符串流 → core 包装为 content_delta + finish → | |
| 协议适配层消费事件、编码为各协议 SSE(OpenAI / Anthropic / 未来 Kimi 等)。 | |
| """ | |
| from __future__ import annotations | |
| from typing import Any, Literal | |
| from pydantic import BaseModel, Field | |
| class OpenAIToolCallDelta(BaseModel): | |
| """OpenAI stream delta 中的 tool_calls[?] 片段(最小必要字段)。""" | |
| index: int = 0 | |
| id: str | None = None | |
| type: Literal["function"] = "function" | |
| function: dict[str, Any] = Field(default_factory=dict) | |
| class OpenAIStreamEvent(BaseModel): | |
| """ | |
| OpenAI 语义的“内部流事件”。 | |
| - content_delta:增量文本(delta.content) | |
| - tool_call_delta:工具调用增量(delta.tool_calls) | |
| - finish:结束(finish_reason) | |
| - error:错误 | |
| 协议适配层负责将事件序列化为目标协议的 SSE/JSON。 | |
| """ | |
| type: Literal["content_delta", "tool_call_delta", "finish", "error"] | |
| # content_delta | |
| content: str | None = None | |
| # tool_call_delta | |
| tool_calls: list[OpenAIToolCallDelta] | None = None | |
| # finish | |
| finish_reason: str | None = None | |
| # error | |
| error: str | None = None | |