@@ -26,6 +26,7 @@ public function completions(array $data, array $options)
26
26
if (isset ($ options ['stream ' ])) {
27
27
$ data ['stream ' ] = true ;
28
28
}
29
+ var_export ($ data );
29
30
$ stream = !empty ($ data ['stream ' ]) && isset ($ options ['stream ' ]);
30
31
$ options = $ this ->formatOptions ($ options );
31
32
$ requestOptions = [
@@ -76,6 +77,15 @@ public function completions(array $data, array $options)
76
77
*/
77
78
public static function formatResponse ($ buffer )
78
79
{
80
+ if (!$ buffer || $ buffer [0 ] === '' ) {
81
+ return [
82
+ 'error ' => [
83
+ 'code ' => 'parse_error ' ,
84
+ 'error ' => 'Unable to parse response ' ,
85
+ 'detail ' => $ buffer
86
+ ]
87
+ ];
88
+ }
79
89
$ json = json_decode ($ buffer , true );
80
90
if ($ json ) {
81
91
return $ json ;
@@ -84,6 +94,9 @@ public static function formatResponse($buffer)
84
94
$ content = '' ;
85
95
$ finishReason = null ;
86
96
$ model = '' ;
97
+ $ promptFilterResults = null ;
98
+ $ contentFilterResults = null ;
99
+ $ contentFilterOffsets = null ;
87
100
foreach ($ chunks as $ chunk ) {
88
101
if ($ chunk === "" ) {
89
102
continue ;
@@ -94,6 +107,12 @@ public static function formatResponse($buffer)
94
107
}
95
108
try {
96
109
$ data = json_decode ($ chunk , true );
110
+ if (isset ($ data ['model ' ])) {
111
+ $ model = $ data ['model ' ];
112
+ }
113
+ if (isset ($ data ['prompt_filter_results ' ])) {
114
+ $ promptFilterResults = $ data ['prompt_filter_results ' ];
115
+ }
97
116
if (isset ($ data ['error ' ])) {
98
117
$ content .= $ data ['error ' ]['message ' ] ?? "" ;
99
118
} else {
@@ -102,25 +121,19 @@ public static function formatResponse($buffer)
102
121
if (isset ($ item ['finish_reason ' ])) {
103
122
$ finishReason = $ item ['finish_reason ' ];
104
123
}
124
+ if (isset ($ item ['content_filter_results ' ])) {
125
+ $ contentFilterResults = $ item ['content_filter_results ' ];
126
+ }
127
+ if (isset ($ item ['content_filter_offsets ' ])) {
128
+ $ contentFilterOffsets = $ item ['content_filter_offsets ' ];
129
+ }
105
130
}
106
131
}
107
- if (isset ($ data ['model ' ])) {
108
- $ model = $ data ['model ' ];
109
- }
110
132
} catch (Throwable $ e ) {
111
133
echo $ e ;
112
134
}
113
135
}
114
- if ($ content === '' ) {
115
- return [
116
- 'error ' => [
117
- 'code ' => 'parse_error ' ,
118
- 'error ' => 'Unable to parse response ' ,
119
- 'detail ' => $ buffer
120
- ]
121
- ];
122
- }
123
- return [
136
+ $ result = [
124
137
'choices ' => [
125
138
[
126
139
'finish_reason ' => $ finishReason ,
@@ -133,6 +146,16 @@ public static function formatResponse($buffer)
133
146
],
134
147
'model ' => $ model ,
135
148
];
149
+ if ($ promptFilterResults ) {
150
+ $ result ['prompt_filter_results ' ] = $ promptFilterResults ;
151
+ }
152
+ if ($ contentFilterResults ) {
153
+ $ result ['choices ' ][0 ]['content_filter_results ' ] = $ contentFilterResults ;
154
+ }
155
+ if ($ contentFilterOffsets ) {
156
+ $ result ['choices ' ][0 ]['content_filter_offsets ' ] = $ contentFilterOffsets ;
157
+ }
158
+ return $ result ;
136
159
}
137
160
138
161
}
0 commit comments