Skip to content

Commit

Permalink
Properly create meta information from azure headers
Browse files Browse the repository at this point in the history
  • Loading branch information
gehrisandro committed Dec 22, 2023
1 parent 7cc0478 commit 57a9067
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 16 deletions.
12 changes: 6 additions & 6 deletions src/Responses/Meta/MetaInformation.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,21 @@ public static function from(array $headers): self
'processingMs' => isset($headers['openai-processing-ms'][0]) ? (int) $headers['openai-processing-ms'][0] : null,
]);

if (isset($headers['x-ratelimit-limit-requests'][0])) {
if (isset($headers['x-ratelimit-remaining-requests'][0])) {
$requestLimit = MetaInformationRateLimit::from([
'limit' => (int) $headers['x-ratelimit-limit-requests'][0],
'limit' => isset($headers['x-ratelimit-limit-requests'][0]) ? (int) $headers['x-ratelimit-limit-requests'][0] : null,
'remaining' => (int) $headers['x-ratelimit-remaining-requests'][0],
'reset' => $headers['x-ratelimit-reset-requests'][0],
'reset' => $headers['x-ratelimit-reset-requests'][0] ?? null,
]);
} else {
$requestLimit = null;
}

if (isset($headers['x-ratelimit-limit-tokens'][0])) {
if (isset($headers['x-ratelimit-remaining-tokens'][0])) {
$tokenLimit = MetaInformationRateLimit::from([
'limit' => (int) $headers['x-ratelimit-limit-tokens'][0],
'limit' => isset($headers['x-ratelimit-limit-tokens'][0]) ? (int) $headers['x-ratelimit-limit-tokens'][0] : null,
'remaining' => (int) $headers['x-ratelimit-remaining-tokens'][0],
'reset' => $headers['x-ratelimit-reset-tokens'][0],
'reset' => $headers['x-ratelimit-reset-tokens'][0] ?? null,
]);
} else {
$tokenLimit = null;
Expand Down
6 changes: 3 additions & 3 deletions src/Responses/Meta/MetaInformationRateLimit.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
final class MetaInformationRateLimit
{
private function __construct(
public readonly int $limit,
public readonly ?int $limit,
public readonly int $remaining,
public readonly string $reset,
public readonly ?string $reset,
) {
}

/**
* @param array{limit: int, remaining: int, reset: string} $attributes
* @param array{limit: ?int, remaining: int, reset: ?string} $attributes
*/
public static function from(array $attributes): self
{
Expand Down
2 changes: 2 additions & 0 deletions tests/Fixtures/Meta.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ function metaHeadersFromAzure(): array
'openai-model' => ['gpt-3.5-turbo-instruct'],
'openai-processing-ms' => [3482.8264],
'x-request-id' => ['3813fa4fa3f17bdf0d7654f0f49ebab4'],
'x-ratelimit-remaining-requests' => ['119'],
'x-ratelimit-remaining-tokens' => ['119968'],
];
}

Expand Down
29 changes: 22 additions & 7 deletions tests/Responses/Meta/MetaInformation.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,25 @@
->openai->organization->toBeNull()
->openai->version->toBeNull()
->openai->processingMs->toBe(3482)
->requestLimit->toBeInstanceOf(MetaInformationRateLimit::class)
->requestLimit->limit->toBeNull()
->requestLimit->remaining->toBe(119)
->requestLimit->reset->toBeNull()
->tokenLimit->toBeInstanceOf(MetaInformationRateLimit::class)
->tokenLimit->limit->toBeNull()
->tokenLimit->remaining->toBe(119968)
->tokenLimit->reset->toBeNull();
});

test('from azure response headers without rate limit headers ', function () {
$headers = metaHeadersFromAzure();
unset($headers['x-ratelimit-remaining-requests']);
unset($headers['x-ratelimit-remaining-tokens']);

$meta = MetaInformation::from((new \GuzzleHttp\Psr7\Response(headers: $headers))->getHeaders());

expect($meta)
->toBeInstanceOf(MetaInformation::class)
->requestLimit->toBeNull()
->tokenLimit->toBeNull();
});
Expand All @@ -59,14 +78,8 @@

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();
->openai->processingMs->toBeNull();
});

test('as array accessible', function () {
Expand Down Expand Up @@ -103,6 +116,8 @@
->toBe([
'openai-model' => 'gpt-3.5-turbo-instruct',
'openai-processing-ms' => 3482,
'x-ratelimit-remaining-requests' => 119,
'x-ratelimit-remaining-tokens' => 119968,
'x-request-id' => '3813fa4fa3f17bdf0d7654f0f49ebab4',
]);
});

0 comments on commit 57a9067

Please sign in to comment.