From 2e4b267f8c61ddb553d886906e2a05ef6e99fc1a Mon Sep 17 00:00:00 2001 From: gehrisandro Date: Sat, 21 Oct 2023 10:45:37 +0200 Subject: [PATCH] Fix: processingMs ond MetaInformationOpenAI may be null - fixes #218 --- src/Responses/Meta/MetaInformation.php | 6 +++--- src/Responses/Meta/MetaInformationOpenAI.php | 4 ++-- tests/Responses/Meta/MetaInformation.php | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/Responses/Meta/MetaInformation.php b/src/Responses/Meta/MetaInformation.php index 686b0382..58910023 100644 --- a/src/Responses/Meta/MetaInformation.php +++ b/src/Responses/Meta/MetaInformation.php @@ -6,12 +6,12 @@ use OpenAI\Responses\Concerns\ArrayAccessible; /** - * @implements MetaInformationContract + * @implements MetaInformationContract */ final class MetaInformation implements MetaInformationContract { /** - * @use ArrayAccessible + * @use ArrayAccessible */ use ArrayAccessible; @@ -34,7 +34,7 @@ public static function from(array $headers): self 'model' => $headers['openai-model'][0] ?? null, 'organization' => $headers['openai-organization'][0] ?? null, 'version' => $headers['openai-version'][0] ?? null, - 'processingMs' => (int) $headers['openai-processing-ms'][0], + 'processingMs' => isset($headers['openai-processing-ms'][0]) ? (int) $headers['openai-processing-ms'][0] : null, ]); if (isset($headers['x-ratelimit-limit-requests'][0])) { diff --git a/src/Responses/Meta/MetaInformationOpenAI.php b/src/Responses/Meta/MetaInformationOpenAI.php index e9f72e83..aa2ae15b 100644 --- a/src/Responses/Meta/MetaInformationOpenAI.php +++ b/src/Responses/Meta/MetaInformationOpenAI.php @@ -8,12 +8,12 @@ public function __construct( public readonly ?string $model, public readonly ?string $organization, public readonly ?string $version, - public readonly int $processingMs, + public readonly ?int $processingMs, ) { } /** - * @param array{model: ?string, organization: ?string, version: ?string, processingMs: int} $attributes + * @param array{model: ?string, organization: ?string, version: ?string, processingMs: ?int} $attributes */ public static function from(array $attributes): self { diff --git a/tests/Responses/Meta/MetaInformation.php b/tests/Responses/Meta/MetaInformation.php index 26533c85..9bc3f56f 100644 --- a/tests/Responses/Meta/MetaInformation.php +++ b/tests/Responses/Meta/MetaInformation.php @@ -40,6 +40,24 @@ ->tokenLimit->toBeNull(); }); +test('from azure response headers without processing time', function () { + $headers = metaHeadersFromAzure(); + unset($headers['openai-processing-ms']); + + $meta = MetaInformation::from((new \GuzzleHttp\Psr7\Response(headers: $headers))->getHeaders()); + + expect($meta) + ->toBeInstanceOf(MetaInformation::class) + ->requestId->toBe('3813fa4fa3f17bdf0d7654f0f49ebab4') + ->openai->toBeInstanceOf(MetaInformationOpenAI::class) + ->openai->model->toBe('gpt-3.5-turbo-instruct') + ->openai->organization->toBeNull() + ->openai->version->toBeNull() + ->openai->processingMs->toBeNull() + ->requestLimit->toBeNull() + ->tokenLimit->toBeNull(); +}); + test('as array accessible', function () { $meta = MetaInformation::from(metaHeaders());