Open alek-s-andr opened 3 months ago
I created a PR with a fix for this issue: https://github.com/openai-php/client/pull/363
Here is how you can create a completely new install that recreates this error. I have also included the fix
php -v
PHP 8.2.12 (cli) (built: Oct 24 2023 21:15:15) (ZTS Visual C++ 2019 x64) Copyright (c) The PHP Group Zend Engine v4.2.12, Copyright (c) Zend Technologies
composer require openai-php/client
composer dump-autoload
nano index.php
<?php
require __DIR__ . '/vendor/autoload.php';
$client = OpenAI::client('insert-your-key-here');
$response = $client->fineTuning()->listJobs();
?>
php index.php
PHP Warning: Undefined array key "code" in vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php on line 35
Warning: Undefined array key "code" in vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php on line 35 PHP Warning: Undefined array key "param" in vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php on line 36
Warning: Undefined array key "param" in vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php on line 36 PHP Warning: Undefined array key "message" in vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php on line 37
Warning: Undefined array key "message" in vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php on line 37 PHP Fatal error: Uncaught TypeError: OpenAI\Responses\FineTuning\RetrieveJobResponseError::__construct(): Argument #1 ($code) must be of type string, null given, called in vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php on line 34 and defined in vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php:20 Stack trace:
0 vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php(34): OpenAI\Responses\FineTuning\RetrieveJobResponseError->__construct(NULL, NULL, NULL)
1 vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponse.php(70): OpenAI\Responses\FineTuning\RetrieveJobResponseError::from(Array)
2 vendor\openai-php\client\src\Responses\FineTuning\ListJobsResponse.php(45): OpenAI\Responses\FineTuning\RetrieveJobResponse::from(Array, Object(OpenAI\Responses\Meta\MetaInformation))
3 [internal function]: OpenAI\Responses\FineTuning\ListJobsResponse::OpenAI\Responses\FineTuning{closure}(Array)
4 vendor\openai-php\client\src\Responses\FineTuning\ListJobsResponse.php(45): array_map(Object(Closure), Array)
5 vendor\openai-php\client\src\Resources\FineTuning.php(51): OpenAI\Responses\FineTuning\ListJobsResponse::from(Array, Object(OpenAI\Responses\Meta\MetaInformation))
6 index.php(6): OpenAI\Resources\FineTuning->listJobs()
7 {main}
thrown in vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php on line 20
Fatal error: Uncaught TypeError: OpenAI\Responses\FineTuning\RetrieveJobResponseError::__construct(): Argument #1 ($code) must be of type string, null given, called in vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php on line 34 and defined in vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php:20 Stack trace:
0 vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php(34): OpenAI\Responses\FineTuning\RetrieveJobResponseError->__construct(NULL, NULL, NULL)
1 vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponse.php(70): OpenAI\Responses\FineTuning\RetrieveJobResponseError::from(Array)
2 vendor\openai-php\client\src\Responses\FineTuning\ListJobsResponse.php(45): OpenAI\Responses\FineTuning\RetrieveJobResponse::from(Array, Object(OpenAI\Responses\Meta\MetaInformation))
3 [internal function]: OpenAI\Responses\FineTuning\ListJobsResponse::OpenAI\Responses\FineTuning{closure}(Array)
4 vendor\openai-php\client\src\Responses\FineTuning\ListJobsResponse.php(45): array_map(Object(Closure), Array)
5 vendor\openai-php\client\src\Resources\FineTuning.php(51): OpenAI\Responses\FineTuning\ListJobsResponse::from(Array, Object(OpenAI\Responses\Meta\MetaInformation))
6 index.php(6): OpenAI\Resources\FineTuning->listJobs()
7 {main}
thrown in vendor\openai-php\client\src\Responses\FineTuning\RetrieveJobResponseError.php on line 20
private function __construct(
public readonly string $code,
public readonly ?string $param,
public readonly string $message,
) {
}
private function __construct(
public readonly ?string $code,
public readonly ?string $param,
public readonly ?string $message,
) {
}
return new self(
$attributes['code'],
$attributes['param'],
$attributes['message'],
);
return new self(
$attributes['code'] ?? null,
$attributes['param'] ?? null,
$attributes['message'] ?? null,
);
Description
A am getting the error when run any method on the
$openAIClient->fineTuning()
endpoint, for example$openAIClient->fineTuning()->createJob($params);
. This run leads to fatal error:PHP Fatal error: Uncaught TypeError: OpenAI\Responses\FineTuning\RetrieveJobResponseError::__construct(): Argument #1 ($code) must be of type string, null given, called in vendor/openai-php/client/src/Responses/FineTuning/RetrieveJobResponseError.php on line 37 and defined in vendor/openai-php/client/src/Responses/FineTuning/RetrieveJobResponseError.php:20
Steps To Reproduce
Run
$openAIClient->fineTuning()->retrieveJob('ftjob-...');
OpenAI PHP Client Version
v0.8.4
PHP Version
8.1.27
Notes
https://platform.openai.com/docs/api-reference/fine-tuning/object I did a little research and found out that the returned fine-tuning job object from OpenAI API actually contains the parameter error which contains other object with key error (but this is not mentioned in the OpenAI documentation) in the absence of an error: