Skip to content

Commit 75b900e

Browse files
authored
Merge pull request #315 from Portkey-AI/feat/responseFormatChatCompletion
get() for Chat Completion Response
2 parents 4d36620 + dd6e887 commit 75b900e

File tree

3 files changed

+136
-1
lines changed

3 files changed

+136
-1
lines changed

portkey_ai/api_resources/apis/generation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ def create(
230230
top_p: Optional[float] = None,
231231
extra_headers: Mapping[str, str] = {},
232232
**kwargs,
233-
) -> Union[PromptCompletion, Stream[PromptCompletionChunk],]:
233+
) -> Union[PromptCompletion, Stream[PromptCompletionChunk]]:
234234
"""Prompt completions Method"""
235235
if config is None:
236236
config = retrieve_config()

portkey_ai/api_resources/types/chat_complete_type.py

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

3241
class 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

3957
class 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

4471
class 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

5187
class 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

56101
class 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

64118
class 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

69132
class 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

76148
class 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

83164
class 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

104194
class 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

110209
class 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

117225
class 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

126243
class 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

133259
class ChatCompletions(BaseModel, extra="allow"):
134260
id: Optional[str] = None

portkey_ai/api_resources/types/complete_type.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@ class Logprobs(BaseModel, extra="allow"):
2020
tokens: Optional[List[str]] = None
2121
top_logprobs: Optional[List[Optional[Dict[str, float]]]] = None
2222

23+
def __str__(self):
24+
return json.dumps(self.dict(), indent=4)
25+
26+
def __getitem__(self, key):
27+
return getattr(self, key, None)
28+
29+
def get(self, key: str, default: Optional[Any] = None):
30+
return getattr(self, key, None) or default
31+
2332

2433
class CompletionChoice(BaseModel, extra="allow"):
2534
finish_reason: Optional[str] = None

0 commit comments

Comments
 (0)