@@ -28,30 +28,75 @@ class TopLogprob(BaseModel, extra="allow"):
2828 bytes : Optional [List [int ]] = None
2929 logprob : Optional [float ] = None
3030
31+ def __str__ (self ):
32+ return json .dumps (self .dict (), indent = 4 )
33+
34+ def __getitem__ (self , key ):
35+ return getattr (self , key , None )
36+
37+ def get (self , key : str , default : Optional [Any ] = None ):
38+ return getattr (self , key , None ) or default
39+
3140
3241class ChatCompletionTokenLogprob (BaseModel , extra = "allow" ):
3342 token : Optional [str ] = None
3443 bytes : Optional [List [int ]] = None
3544 logprob : Optional [float ] = None
3645 top_logprobs : Optional [List [TopLogprob ]] = None
3746
47+ def __str__ (self ):
48+ return json .dumps (self .dict (), indent = 4 )
49+
50+ def __getitem__ (self , key ):
51+ return getattr (self , key , None )
52+
53+ def get (self , key : str , default : Optional [Any ] = None ):
54+ return getattr (self , key , None ) or default
55+
3856
3957class ChoiceLogprobs (BaseModel , extra = "allow" ):
4058 content : Optional [List [ChatCompletionTokenLogprob ]] = None
4159 refusal : Optional [List [ChatCompletionTokenLogprob ]] = None
4260
61+ def __str__ (self ):
62+ return json .dumps (self .dict (), indent = 4 )
63+
64+ def __getitem__ (self , key ):
65+ return getattr (self , key , None )
66+
67+ def get (self , key : str , default : Optional [Any ] = None ):
68+ return getattr (self , key , None ) or default
69+
4370
4471class CompletionTokensDetails (BaseModel , extra = "allow" ):
4572 accepted_prediction_tokens : Optional [int ] = None
4673 audio_tokens : Optional [int ] = None
4774 reasoning_tokens : Optional [int ] = None
4875 rejected_prediction_tokens : Optional [int ] = None
4976
77+ def __str__ (self ):
78+ return json .dumps (self .dict (), indent = 4 )
79+
80+ def __getitem__ (self , key ):
81+ return getattr (self , key , None )
82+
83+ def get (self , key : str , default : Optional [Any ] = None ):
84+ return getattr (self , key , None ) or default
85+
5086
5187class PromptTokensDetails (BaseModel , extra = "allow" ):
5288 audio_tokens : Optional [int ] = None
5389 cached_tokens : Optional [int ] = None
5490
91+ def __str__ (self ):
92+ return json .dumps (self .dict (), indent = 4 )
93+
94+ def __getitem__ (self , key ):
95+ return getattr (self , key , None )
96+
97+ def get (self , key : str , default : Optional [Any ] = None ):
98+ return getattr (self , key , None ) or default
99+
55100
56101class Usage (BaseModel , extra = "allow" ):
57102 prompt_tokens : Optional [int ] = None
@@ -60,25 +105,61 @@ class Usage(BaseModel, extra="allow"):
60105 completion_tokens_details : Optional [CompletionTokensDetails ] = None
61106 prompt_tokens_details : Optional [PromptTokensDetails ] = None
62107
108+ def __str__ (self ):
109+ return json .dumps (self .dict (), indent = 4 )
110+
111+ def __getitem__ (self , key ):
112+ return getattr (self , key , None )
113+
114+ def get (self , key : str , default : Optional [Any ] = None ):
115+ return getattr (self , key , None ) or default
116+
63117
64118class DeltaToolCallFunction (BaseModel , extra = "allow" ):
65119 arguments : Optional [str ] = None
66120 name : Optional [str ] = None
67121
122+ def __str__ (self ):
123+ return json .dumps (self .dict (), indent = 4 )
124+
125+ def __getitem__ (self , key ):
126+ return getattr (self , key , None )
127+
128+ def get (self , key : str , default : Optional [Any ] = None ):
129+ return getattr (self , key , None ) or default
130+
68131
69132class DeltaToolCall (BaseModel , extra = "allow" ):
70133 index : Optional [int ] = None
71134 id : Optional [str ] = None
72135 function : Optional [DeltaToolCallFunction ] = None
73136 type : Optional [str ] = None
74137
138+ def __str__ (self ):
139+ return json .dumps (self .dict (), indent = 4 )
140+
141+ def __getitem__ (self , key ):
142+ return getattr (self , key , None )
143+
144+ def get (self , key : str , default : Optional [Any ] = None ):
145+ return getattr (self , key , None ) or default
146+
75147
76148class Delta (BaseModel , extra = "allow" ):
77149 role : Optional [str ] = None
78150 content : Optional [str ] = ""
79151 tool_calls : Optional [List [DeltaToolCall ]] = None
80152 refusal : Optional [str ] = None
81153
154+ def __str__ (self ):
155+ return json .dumps (self .dict (), indent = 4 )
156+
157+ def __getitem__ (self , key ):
158+ return getattr (self , key , None )
159+
160+ def get (self , key : str , default : Optional [Any ] = None ):
161+ return getattr (self , key , None ) or default
162+
82163
83164class StreamChoice (BaseModel , extra = "allow" ):
84165 index : Optional [int ] = None
@@ -100,19 +181,46 @@ class FunctionCall(BaseModel, extra="allow"):
100181 arguments : Optional [str ] = None
101182 name : Optional [str ] = None
102183
184+ def __str__ (self ):
185+ return json .dumps (self .dict (), indent = 4 )
186+
187+ def __getitem__ (self , key ):
188+ return getattr (self , key , None )
189+
190+ def get (self , key : str , default : Optional [Any ] = None ):
191+ return getattr (self , key , None ) or default
192+
103193
104194class ChatCompletionMessageToolCall (BaseModel , extra = "allow" ):
105195 id : Optional [str ] = None
106196 function : Optional [FunctionCall ] = None
107197 type : Optional [str ] = None
108198
199+ def __str__ (self ):
200+ return json .dumps (self .dict (), indent = 4 )
201+
202+ def __getitem__ (self , key ):
203+ return getattr (self , key , None )
204+
205+ def get (self , key : str , default : Optional [Any ] = None ):
206+ return getattr (self , key , None ) or default
207+
109208
110209class ChatCompletionAudio (BaseModel , extra = "allow" ):
111210 id : Optional [str ] = None
112211 data : Optional [str ] = None
113212 expires_at : Optional [int ] = None
114213 transcript : Optional [str ] = None
115214
215+ def __str__ (self ):
216+ return json .dumps (self .dict (), indent = 4 )
217+
218+ def __getitem__ (self , key ):
219+ return getattr (self , key , None )
220+
221+ def get (self , key : str , default : Optional [Any ] = None ):
222+ return getattr (self , key , None ) or default
223+
116224
117225class ChatCompletionMessage (BaseModel , extra = "allow" ):
118226 content : Optional [Union [str , List [Any ]]] = None
@@ -122,13 +230,31 @@ class ChatCompletionMessage(BaseModel, extra="allow"):
122230 refusal : Optional [str ] = None
123231 audio : Optional [ChatCompletionAudio ] = None
124232
233+ def __str__ (self ):
234+ return json .dumps (self .dict (), indent = 4 )
235+
236+ def __getitem__ (self , key ):
237+ return getattr (self , key , None )
238+
239+ def get (self , key : str , default : Optional [Any ] = None ):
240+ return getattr (self , key , None ) or default
241+
125242
126243class Choice (BaseModel , extra = "allow" ):
127244 finish_reason : Optional [str ] = None
128245 index : Optional [int ] = None
129246 logprobs : Optional [ChoiceLogprobs ] = None
130247 message : Optional [ChatCompletionMessage ] = None
131248
249+ def __str__ (self ):
250+ return json .dumps (self .dict (), indent = 4 )
251+
252+ def __getitem__ (self , key ):
253+ return getattr (self , key , None )
254+
255+ def get (self , key : str , default : Optional [Any ] = None ):
256+ return getattr (self , key , None ) or default
257+
132258
133259class ChatCompletions (BaseModel , extra = "allow" ):
134260 id : Optional [str ] = None
0 commit comments