Description
While testing gemini I noticed that passing invalid chat parameters doesn't throw the appropriate exception. It throws:
Undefined array key "choices" /www/htdocs/vendor/openai-php/client/src/Responses/Chat/CreateResponse.php 54
The reason the error isn't caught is because the error is returned as:
array (
0 =>
array (
'error' =>
array (
'code' => 400,
'message' => 'Invalid JSON payload received. Unknown name "ddd": Cannot find field.',
'status' => 'INVALID_ARGUMENT',
'details' =>
array (
0 =>
array (
'@type' => 'type.googleapis.com/google.rpc.BadRequest',
'fieldViolations' =>
array (
0 =>
array (
'description' => 'Invalid JSON payload received. Unknown name "ddd": Cannot find field.',
),
),
),
),
),
),
)
The HttpTransporter::throwIfJsonError() only checks for $response['error']
, but in this case it's $response[0]['error']
.
Steps To Reproduce
$client = \OpenAI::factory()
->withApiKey('YOUR-KEY')
->withBaseUri('https://generativelanguage.googleapis.com/v1beta/openai')
->make();
$result = $client->chat()->create($params = [
'model' => 'gemini-2.5-flash',
'messages' => [
['role' => 'system', 'content' => 'You can use tools if needed.'],
['role' => 'user', 'content' => 'Hello you.'],
],
'ddd' => 'auto',
]);
OpenAI PHP Client Version
v0.16.1
PHP Version
8.2.5
Notes
No response