Skip to content

[Bug]: Passing invalid parameters to gemini throws Undefined array key "choices" /www/htdocs/vendor/openai-php/client/src/Responses/Chat/CreateResponse.php 54 #692

@alxlab-zone66x

Description

@alxlab-zone66x

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions