diff --git a/src/platform/src/Bridge/DockerModelRunner/Completions/ResultConverter.php b/src/platform/src/Bridge/DockerModelRunner/Completions/ResultConverter.php index 3aa25c136..68bcb56a0 100644 --- a/src/platform/src/Bridge/DockerModelRunner/Completions/ResultConverter.php +++ b/src/platform/src/Bridge/DockerModelRunner/Completions/ResultConverter.php @@ -14,6 +14,7 @@ use Symfony\AI\Platform\Bridge\DockerModelRunner\Completions; use Symfony\AI\Platform\Exception\ContentFilterException; use Symfony\AI\Platform\Exception\ExceedContextSizeException; +use Symfony\AI\Platform\Exception\ModelNotFoundException; use Symfony\AI\Platform\Exception\RuntimeException; use Symfony\AI\Platform\Model; use Symfony\AI\Platform\Result\ChoiceResult; @@ -46,6 +47,11 @@ public function convert(RawResultInterface|RawHttpResult $result, array $options return new StreamResult($this->convertStream($result->getObject())); } + if (404 === $result->getObject()->getStatusCode() + && str_contains(strtolower($result->getObject()->getContent(false)), 'model not found')) { + throw new ModelNotFoundException($result->getObject()->getContent(false)); + } + $data = $result->getData(); if (isset($data['error']['type']) && 'exceed_context_size_error' === $data['error']['type']) { diff --git a/src/platform/src/Bridge/DockerModelRunner/Embeddings/ResultConverter.php b/src/platform/src/Bridge/DockerModelRunner/Embeddings/ResultConverter.php index a83f4a96f..a63af9b55 100644 --- a/src/platform/src/Bridge/DockerModelRunner/Embeddings/ResultConverter.php +++ b/src/platform/src/Bridge/DockerModelRunner/Embeddings/ResultConverter.php @@ -12,6 +12,7 @@ namespace Symfony\AI\Platform\Bridge\DockerModelRunner\Embeddings; use Symfony\AI\Platform\Bridge\DockerModelRunner\Embeddings; +use Symfony\AI\Platform\Exception\ModelNotFoundException; use Symfony\AI\Platform\Exception\RuntimeException; use Symfony\AI\Platform\Model; use Symfony\AI\Platform\Result\RawResultInterface; @@ -31,6 +32,11 @@ public function supports(Model $model): bool public function convert(RawResultInterface $result, array $options = []): VectorResult { + if (404 === $result->getObject()->getStatusCode() + && str_contains(strtolower($result->getObject()->getContent(false)), 'model not found')) { + throw new ModelNotFoundException($result->getObject()->getContent(false)); + } + $data = $result->getData(); if (!isset($data['data'])) { diff --git a/src/platform/src/Exception/ExceedContextSizeException.php b/src/platform/src/Exception/ExceedContextSizeException.php index 80827ae27..ec14a7b2d 100644 --- a/src/platform/src/Exception/ExceedContextSizeException.php +++ b/src/platform/src/Exception/ExceedContextSizeException.php @@ -14,6 +14,6 @@ /** * @author Mathieu Santostefano */ -class ExceedContextSizeException extends InvalidArgumentException +class ExceedContextSizeException extends InvalidArgumentException implements ExceptionInterface { } diff --git a/src/platform/src/Exception/ModelNotFoundException.php b/src/platform/src/Exception/ModelNotFoundException.php new file mode 100644 index 000000000..bf3d7c7db --- /dev/null +++ b/src/platform/src/Exception/ModelNotFoundException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\AI\Platform\Exception; + +/** + * @author Mathieu Santostefano + */ +class ModelNotFoundException extends \InvalidArgumentException implements ExceptionInterface +{ +}