main
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]