From 3374b14da44b958bd9c28af709c52b886060d4d6 Mon Sep 17 00:00:00 2001 From: Mathieu Santostefano Date: Wed, 17 Sep 2025 17:01:10 +0200 Subject: [PATCH] Add ModelNotFoundException --- .../Completions/ResultConverter.php | 6 ++++++ .../Embeddings/ResultConverter.php | 6 ++++++ .../Exception/ExceedContextSizeException.php | 2 +- .../src/Exception/ModelNotFoundException.php | 19 +++++++++++++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/platform/src/Exception/ModelNotFoundException.php 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 +{ +}