diff --git a/src/Providers/OpenAI/OpenAI.php b/src/Providers/OpenAI/OpenAI.php index 236467fc..b00207a1 100644 --- a/src/Providers/OpenAI/OpenAI.php +++ b/src/Providers/OpenAI/OpenAI.php @@ -132,10 +132,33 @@ public function handleRequestException(string $model, RequestException $e): neve ), 529 => throw PrismProviderOverloadedException::make(ProviderName::OpenAI), 413 => throw PrismRequestTooLargeException::make(ProviderName::OpenAI), + 400 => $this->handleResponseErrors($model, $e), default => throw PrismException::providerRequestError($model, $e), }; } + protected function handleResponseErrors(string $model, RequestException $e): never + { + $data = $e->response->json(); + if ($data && data_get($data, 'error')) { + $message = data_get($data, 'error.message'); + $message = is_array($message) ? implode(', ', $message) : $message; + + throw PrismException::providerResponseError(vsprintf( + 'OpenAI Error: [%s] %s (param: %s, code: %s)', + [ + data_get($data, 'error.type', 'unknown'), + $message, + data_get($data, 'error.param', 'None'), + data_get($data, 'error.code', 'None'), + + ] + )); + } + + throw PrismException::providerRequestError($model, $e); + } + /** * @param array $options * @param array $retry