1from typing import List, Union, Generic, Optional
  2from typing_extensions import Literal
  3
  4from ._types import ParsedChatCompletionSnapshot
  5from ...._models import BaseModel, GenericModel
  6from ..._parsing import ResponseFormatT
  7from ....types.chat import ChatCompletionChunk, ChatCompletionTokenLogprob
  8
  9
 10class ChunkEvent(BaseModel):
 11    type: Literal["chunk"]
 12
 13    chunk: ChatCompletionChunk
 14
 15    snapshot: ParsedChatCompletionSnapshot
 16
 17
 18class ContentDeltaEvent(BaseModel):
 19    """This event is yielded for every chunk with `choice.delta.content` data."""
 20
 21    type: Literal["content.delta"]
 22
 23    delta: str
 24
 25    snapshot: str
 26
 27    parsed: Optional[object] = None
 28
 29
 30class ContentDoneEvent(GenericModel, Generic[ResponseFormatT]):
 31    type: Literal["content.done"]
 32
 33    content: str
 34
 35    parsed: Optional[ResponseFormatT] = None
 36
 37
 38class RefusalDeltaEvent(BaseModel):
 39    type: Literal["refusal.delta"]
 40
 41    delta: str
 42
 43    snapshot: str
 44
 45
 46class RefusalDoneEvent(BaseModel):
 47    type: Literal["refusal.done"]
 48
 49    refusal: str
 50
 51
 52class FunctionToolCallArgumentsDeltaEvent(BaseModel):
 53    type: Literal["tool_calls.function.arguments.delta"]
 54
 55    name: str
 56
 57    index: int
 58
 59    arguments: str
 60    """Accumulated raw JSON string"""
 61
 62    parsed_arguments: object
 63    """The parsed arguments so far"""
 64
 65    arguments_delta: str
 66    """The JSON string delta"""
 67
 68
 69class FunctionToolCallArgumentsDoneEvent(BaseModel):
 70    type: Literal["tool_calls.function.arguments.done"]
 71
 72    name: str
 73
 74    index: int
 75
 76    arguments: str
 77    """Accumulated raw JSON string"""
 78
 79    parsed_arguments: object
 80    """The parsed arguments"""
 81
 82
 83class LogprobsContentDeltaEvent(BaseModel):
 84    type: Literal["logprobs.content.delta"]
 85
 86    content: List[ChatCompletionTokenLogprob]
 87
 88    snapshot: List[ChatCompletionTokenLogprob]
 89
 90
 91class LogprobsContentDoneEvent(BaseModel):
 92    type: Literal["logprobs.content.done"]
 93
 94    content: List[ChatCompletionTokenLogprob]
 95
 96
 97class LogprobsRefusalDeltaEvent(BaseModel):
 98    type: Literal["logprobs.refusal.delta"]
 99
100    refusal: List[ChatCompletionTokenLogprob]
101
102    snapshot: List[ChatCompletionTokenLogprob]
103
104
105class LogprobsRefusalDoneEvent(BaseModel):
106    type: Literal["logprobs.refusal.done"]
107
108    refusal: List[ChatCompletionTokenLogprob]
109
110
111ChatCompletionStreamEvent = Union[
112    ChunkEvent,
113    ContentDeltaEvent,
114    ContentDoneEvent[ResponseFormatT],
115    RefusalDeltaEvent,
116    RefusalDoneEvent,
117    FunctionToolCallArgumentsDeltaEvent,
118    FunctionToolCallArgumentsDoneEvent,
119    LogprobsContentDeltaEvent,
120    LogprobsContentDoneEvent,
121    LogprobsRefusalDeltaEvent,
122    LogprobsRefusalDoneEvent,
123]