diff --git a/src/Responses/Chat/CreateResponse.php b/src/Responses/Chat/CreateResponse.php index 3d424e8b..254915d1 100644 --- a/src/Responses/Chat/CreateResponse.php +++ b/src/Responses/Chat/CreateResponse.php @@ -41,7 +41,7 @@ private function __construct( /** * Acts as static factory, and returns a new Response instance. * - * @param array{id: string, object: string, created: int, model: string, system_fingerprint?: string, choices: array}, finish_reason: string|null}>, usage: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int, prompt_tokens_details?:array{cached_tokens:int}, completion_tokens_details?:array{audio_tokens?:int, reasoning_tokens:int, accepted_prediction_tokens:int, rejected_prediction_tokens:int}}} $attributes + * @param array{id: string, object: string, created: int, model: string, system_fingerprint?: string, choices: array}, finish_reason: string|null}>, usage: array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int, prompt_tokens_details?:array{cached_tokens:int}, completion_tokens_details?:array{audio_tokens?:int, reasoning_tokens?:int, accepted_prediction_tokens?:int, rejected_prediction_tokens?:int}}} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { diff --git a/src/Responses/Chat/CreateResponseUsage.php b/src/Responses/Chat/CreateResponseUsage.php index 07ba4191..d8899271 100644 --- a/src/Responses/Chat/CreateResponseUsage.php +++ b/src/Responses/Chat/CreateResponseUsage.php @@ -15,7 +15,7 @@ private function __construct( ) {} /** - * @param array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int, prompt_tokens_details?:array{cached_tokens:int}, completion_tokens_details?:array{audio_tokens?:int, reasoning_tokens:int, accepted_prediction_tokens:int, rejected_prediction_tokens:int}} $attributes + * @param array{prompt_tokens: int, completion_tokens: int|null, total_tokens: int, prompt_tokens_details?:array{cached_tokens:int}, completion_tokens_details?:array{audio_tokens?:int, reasoning_tokens?:int, accepted_prediction_tokens?:int, rejected_prediction_tokens?:int}} $attributes */ public static function from(array $attributes): self { diff --git a/src/Responses/Chat/CreateResponseUsageCompletionTokensDetails.php b/src/Responses/Chat/CreateResponseUsageCompletionTokensDetails.php index 989ee27b..041a4477 100644 --- a/src/Responses/Chat/CreateResponseUsageCompletionTokensDetails.php +++ b/src/Responses/Chat/CreateResponseUsageCompletionTokensDetails.php @@ -8,39 +8,47 @@ final class CreateResponseUsageCompletionTokensDetails { private function __construct( public readonly ?int $audioTokens, - public readonly int $reasoningTokens, - public readonly int $acceptedPredictionTokens, - public readonly int $rejectedPredictionTokens + public readonly ?int $reasoningTokens, + public readonly ?int $acceptedPredictionTokens, + public readonly ?int $rejectedPredictionTokens ) {} /** - * @param array{audio_tokens?:int, reasoning_tokens:int, accepted_prediction_tokens:int, rejected_prediction_tokens:int} $attributes + * @param array{audio_tokens?:int, reasoning_tokens?:int, accepted_prediction_tokens?:int, rejected_prediction_tokens?:int} $attributes */ public static function from(array $attributes): self { return new self( $attributes['audio_tokens'] ?? null, - $attributes['reasoning_tokens'], - $attributes['accepted_prediction_tokens'], - $attributes['rejected_prediction_tokens'], + $attributes['reasoning_tokens'] ?? null, + $attributes['accepted_prediction_tokens'] ?? null, + $attributes['rejected_prediction_tokens'] ?? null, ); } /** - * @return array{audio_tokens?:int, reasoning_tokens:int, accepted_prediction_tokens:int, rejected_prediction_tokens:int} + * @return array{audio_tokens?:int, reasoning_tokens?:int, accepted_prediction_tokens?:int, rejected_prediction_tokens?:int} */ public function toArray(): array { - $result = [ - 'reasoning_tokens' => $this->reasoningTokens, - 'accepted_prediction_tokens' => $this->acceptedPredictionTokens, - 'rejected_prediction_tokens' => $this->rejectedPredictionTokens, - ]; + $result = []; - if (! is_null($this->audioTokens)) { + if ($this->audioTokens !== null) { $result['audio_tokens'] = $this->audioTokens; } + if ($this->reasoningTokens !== null) { + $result['reasoning_tokens'] = $this->reasoningTokens; + } + + if ($this->acceptedPredictionTokens !== null) { + $result['accepted_prediction_tokens'] = $this->acceptedPredictionTokens; + } + + if ($this->rejectedPredictionTokens !== null) { + $result['rejected_prediction_tokens'] = $this->rejectedPredictionTokens; + } + return $result; } }