diff --git a/src/platform/src/Bridge/HuggingFace/ModelCatalog.php b/src/platform/src/Bridge/HuggingFace/ModelCatalog.php index 3a53ae244..727414f32 100644 --- a/src/platform/src/Bridge/HuggingFace/ModelCatalog.php +++ b/src/platform/src/Bridge/HuggingFace/ModelCatalog.php @@ -11,12 +11,12 @@ namespace Symfony\AI\Platform\Bridge\HuggingFace; -use Symfony\AI\Platform\ModelCatalog\DynamicModelCatalog; +use Symfony\AI\Platform\ModelCatalog\FallbackModelCatalog; /** * @author Oskar Stark */ -final class ModelCatalog extends DynamicModelCatalog +final class ModelCatalog extends FallbackModelCatalog { // HuggingFace supports a wide range of models dynamically // Models are identified by repository/model format (e.g., "microsoft/DialoGPT-medium") diff --git a/src/platform/src/Bridge/LmStudio/ModelCatalog.php b/src/platform/src/Bridge/LmStudio/ModelCatalog.php index 9713489aa..9ee29bc51 100644 --- a/src/platform/src/Bridge/LmStudio/ModelCatalog.php +++ b/src/platform/src/Bridge/LmStudio/ModelCatalog.php @@ -11,12 +11,12 @@ namespace Symfony\AI\Platform\Bridge\LmStudio; -use Symfony\AI\Platform\ModelCatalog\DynamicModelCatalog; +use Symfony\AI\Platform\ModelCatalog\FallbackModelCatalog; /** * @author Oskar Stark */ -final class ModelCatalog extends DynamicModelCatalog +final class ModelCatalog extends FallbackModelCatalog { // LmStudio can use any model that is loaded locally // Models are dynamically available based on what's loaded in LmStudio diff --git a/src/platform/src/Bridge/OpenRouter/ModelCatalog.php b/src/platform/src/Bridge/OpenRouter/ModelCatalog.php index 4324272a6..14fb9c7c7 100644 --- a/src/platform/src/Bridge/OpenRouter/ModelCatalog.php +++ b/src/platform/src/Bridge/OpenRouter/ModelCatalog.php @@ -11,12 +11,12 @@ namespace Symfony\AI\Platform\Bridge\OpenRouter; -use Symfony\AI\Platform\ModelCatalog\DynamicModelCatalog; +use Symfony\AI\Platform\ModelCatalog\FallbackModelCatalog; /** * @author Oskar Stark */ -final class ModelCatalog extends DynamicModelCatalog +final class ModelCatalog extends FallbackModelCatalog { // OpenRouter provides access to many different models from various providers // Models are dynamically available and identified by provider/model format diff --git a/src/platform/src/Bridge/TransformersPhp/ModelCatalog.php b/src/platform/src/Bridge/TransformersPhp/ModelCatalog.php index b846d5443..cbcd4989a 100644 --- a/src/platform/src/Bridge/TransformersPhp/ModelCatalog.php +++ b/src/platform/src/Bridge/TransformersPhp/ModelCatalog.php @@ -11,12 +11,12 @@ namespace Symfony\AI\Platform\Bridge\TransformersPhp; -use Symfony\AI\Platform\ModelCatalog\DynamicModelCatalog; +use Symfony\AI\Platform\ModelCatalog\FallbackModelCatalog; /** * @author Oskar Stark */ -final class ModelCatalog extends DynamicModelCatalog +final class ModelCatalog extends FallbackModelCatalog { // TransformersPhp can use various models from HuggingFace // dynamically loaded through transformers.php library diff --git a/src/platform/src/ModelCatalog/DynamicModelCatalog.php b/src/platform/src/ModelCatalog/FallbackModelCatalog.php similarity index 85% rename from src/platform/src/ModelCatalog/DynamicModelCatalog.php rename to src/platform/src/ModelCatalog/FallbackModelCatalog.php index 9e43c5c32..a4a1fe72c 100644 --- a/src/platform/src/ModelCatalog/DynamicModelCatalog.php +++ b/src/platform/src/ModelCatalog/FallbackModelCatalog.php @@ -11,8 +11,11 @@ namespace Symfony\AI\Platform\ModelCatalog; -/* - * A dynamic model catalog that accepts any model name and creates models with all capabilities. +use Symfony\AI\Platform\Capability; +use Symfony\AI\Platform\Model; + +/** + * A fallback model catalog that accepts any model name and creates models with all capabilities. * * This class is useful for platforms that support a wide range of models dynamically * without needing to predefine them in a static catalog. Since we don't know what specific @@ -20,10 +23,7 @@ * * @author Oskar Stark */ -use Symfony\AI\Platform\Capability; -use Symfony\AI\Platform\Model; - -class DynamicModelCatalog extends AbstractModelCatalog +class FallbackModelCatalog extends AbstractModelCatalog { public function __construct() { diff --git a/src/platform/src/Test/InMemoryPlatform.php b/src/platform/src/Test/InMemoryPlatform.php index 42cb174fe..d107a8a2e 100644 --- a/src/platform/src/Test/InMemoryPlatform.php +++ b/src/platform/src/Test/InMemoryPlatform.php @@ -12,7 +12,7 @@ namespace Symfony\AI\Platform\Test; use Symfony\AI\Platform\Model; -use Symfony\AI\Platform\ModelCatalog\DynamicModelCatalog; +use Symfony\AI\Platform\ModelCatalog\FallbackModelCatalog; use Symfony\AI\Platform\ModelCatalog\ModelCatalogInterface; use Symfony\AI\Platform\PlatformInterface; use Symfony\AI\Platform\Result\DeferredResult; @@ -37,7 +37,7 @@ class InMemoryPlatform implements PlatformInterface */ public function __construct(private readonly \Closure|string $mockResult) { - $this->modelCatalog = new DynamicModelCatalog(); + $this->modelCatalog = new FallbackModelCatalog(); } public function invoke(string $model, array|string|object $input, array $options = []): DeferredResult diff --git a/src/platform/src/Test/ModelCatalogTestCase.php b/src/platform/src/Test/ModelCatalogTestCase.php index ee94e0644..55750359c 100644 --- a/src/platform/src/Test/ModelCatalogTestCase.php +++ b/src/platform/src/Test/ModelCatalogTestCase.php @@ -16,7 +16,7 @@ use Symfony\AI\Platform\Capability; use Symfony\AI\Platform\Exception\ModelNotFoundException; use Symfony\AI\Platform\Model; -use Symfony\AI\Platform\ModelCatalog\DynamicModelCatalog; +use Symfony\AI\Platform\ModelCatalog\FallbackModelCatalog; use Symfony\AI\Platform\ModelCatalog\ModelCatalogInterface; /** @@ -61,8 +61,8 @@ public function testGetModelThrowsExceptionForUnknownModel() { $catalog = $this->createModelCatalog(); - // Skip this test for catalogs that accept any model (like DynamicModelCatalog) - if ($catalog instanceof DynamicModelCatalog) { + // Skip this test for catalogs that accept any model (like FallbackModelCatalog) + if ($catalog instanceof FallbackModelCatalog) { $this->markTestSkipped('This catalog accepts any model name'); } @@ -77,8 +77,8 @@ public function testGetModels() $catalog = $this->createModelCatalog(); $models = $catalog->getModels(); - // Skip this test for catalogs that accept any model (like DynamicModelCatalog) - if ($catalog instanceof DynamicModelCatalog) { + // Skip this test for catalogs that accept any model (like FallbackModelCatalog) + if ($catalog instanceof FallbackModelCatalog) { $this->markTestSkipped('This catalog accepts any model name'); } @@ -99,8 +99,8 @@ public function testAllModelsHaveValidClass() { $catalog = $this->createModelCatalog(); - // Skip this test for catalogs that accept any model (like DynamicModelCatalog) - if ($catalog instanceof DynamicModelCatalog) { + // Skip this test for catalogs that accept any model (like FallbackModelCatalog) + if ($catalog instanceof FallbackModelCatalog) { $this->markTestSkipped('This catalog accepts any model name'); } diff --git a/src/platform/tests/Bridge/TransformersPhp/ModelCatalogTest.php b/src/platform/tests/Bridge/TransformersPhp/ModelCatalogTest.php index e118e9f93..345479666 100644 --- a/src/platform/tests/Bridge/TransformersPhp/ModelCatalogTest.php +++ b/src/platform/tests/Bridge/TransformersPhp/ModelCatalogTest.php @@ -25,7 +25,7 @@ final class ModelCatalogTest extends ModelCatalogTestCase public static function modelsProvider(): iterable { // TransformersPhp can use various models from HuggingFace, so we test with example model names - // Since it extends DynamicModelCatalog, all capabilities are provided + // Since it extends FallbackModelCatalog, all capabilities are provided yield 'microsoft/DialoGPT-medium' => ['microsoft/DialoGPT-medium', Model::class, Capability::cases()]; yield 'sentence-transformers/all-MiniLM-L6-v2' => ['sentence-transformers/all-MiniLM-L6-v2', Model::class, Capability::cases()]; yield 'xenova/text-generation-webui' => ['xenova/text-generation-webui', Model::class, Capability::cases()]; diff --git a/src/platform/tests/DynamicModelCatalogTest.php b/src/platform/tests/FallbackModelCatalogTest.php similarity index 88% rename from src/platform/tests/DynamicModelCatalogTest.php rename to src/platform/tests/FallbackModelCatalogTest.php index dc4297340..4a4436eb5 100644 --- a/src/platform/tests/DynamicModelCatalogTest.php +++ b/src/platform/tests/FallbackModelCatalogTest.php @@ -15,16 +15,16 @@ use PHPUnit\Framework\TestCase; use Symfony\AI\Platform\Capability; use Symfony\AI\Platform\Model; -use Symfony\AI\Platform\ModelCatalog\DynamicModelCatalog; +use Symfony\AI\Platform\ModelCatalog\FallbackModelCatalog; /** * @author Oskar Stark */ -final class DynamicModelCatalogTest extends TestCase +final class FallbackModelCatalogTest extends TestCase { public function testGetModelReturnsModelWithAllCapabilities() { - $catalog = new DynamicModelCatalog(); + $catalog = new FallbackModelCatalog(); $model = $catalog->getModel('test-model'); $this->assertInstanceOf(Model::class, $model); @@ -38,7 +38,7 @@ public function testGetModelReturnsModelWithAllCapabilities() public function testGetModelWithOptions() { - $catalog = new DynamicModelCatalog(); + $catalog = new FallbackModelCatalog(); $model = $catalog->getModel('test-model?temperature=0.7&max_tokens=1000'); $this->assertInstanceOf(Model::class, $model); @@ -59,7 +59,7 @@ public function testGetModelWithOptions() #[TestWith(['custom-local-model'])] public function testGetModelAcceptsAnyModelName(string $modelName) { - $catalog = new DynamicModelCatalog(); + $catalog = new FallbackModelCatalog(); $model = $catalog->getModel($modelName); $this->assertInstanceOf(Model::class, $model); diff --git a/src/store/tests/Document/VectorizerTest.php b/src/store/tests/Document/VectorizerTest.php index bad7f3e24..f920109be 100644 --- a/src/store/tests/Document/VectorizerTest.php +++ b/src/store/tests/Document/VectorizerTest.php @@ -18,7 +18,7 @@ use Symfony\AI\Platform\Capability; use Symfony\AI\Platform\Model; use Symfony\AI\Platform\ModelCatalog\AbstractModelCatalog; -use Symfony\AI\Platform\ModelCatalog\DynamicModelCatalog; +use Symfony\AI\Platform\ModelCatalog\FallbackModelCatalog; use Symfony\AI\Platform\PlatformInterface; use Symfony\AI\Platform\Result\DeferredResult; use Symfony\AI\Platform\Result\RawResultInterface; @@ -446,7 +446,7 @@ public function testVectorizeTextDocumentsPassesOptionsToInvoke() $vector = new Vector([0.1, 0.2, 0.3]); $options = ['max_tokens' => 1000, 'temperature' => 0.5]; - // Use DynamicModelCatalog which provides all capabilities including INPUT_MULTIPLE + // Use FallbackModelCatalog which provides all capabilities including INPUT_MULTIPLE // This ensures batch mode is used and the test expectation matches the behavior $platform = PlatformTestHandler::createPlatform(new VectorResult($vector)); $vectorizer = new Vectorizer($platform, 'test-embedding-with-batch'); @@ -464,7 +464,7 @@ public function testVectorizeTextDocumentsWithEmptyOptions() $vector = new Vector([0.1, 0.2, 0.3]); - // Use DynamicModelCatalog which provides all capabilities including INPUT_MULTIPLE + // Use FallbackModelCatalog which provides all capabilities including INPUT_MULTIPLE // This ensures batch mode is used and the test expectation matches the behavior $platform = PlatformTestHandler::createPlatform(new VectorResult($vector)); $vectorizer = new Vectorizer($platform, 'test-embedding-with-batch'); diff --git a/src/store/tests/Double/PlatformTestHandler.php b/src/store/tests/Double/PlatformTestHandler.php index 349695d51..bc0e923e0 100644 --- a/src/store/tests/Double/PlatformTestHandler.php +++ b/src/store/tests/Double/PlatformTestHandler.php @@ -12,7 +12,7 @@ namespace Symfony\AI\Store\Tests\Double; use Symfony\AI\Platform\Model; -use Symfony\AI\Platform\ModelCatalog\DynamicModelCatalog; +use Symfony\AI\Platform\ModelCatalog\FallbackModelCatalog; use Symfony\AI\Platform\ModelCatalog\ModelCatalogInterface; use Symfony\AI\Platform\ModelClientInterface; use Symfony\AI\Platform\Platform; @@ -33,7 +33,7 @@ public function __construct( ) { } - public static function createPlatform(?ResultInterface $create = null, ModelCatalogInterface $modelCatalog = new DynamicModelCatalog()): Platform + public static function createPlatform(?ResultInterface $create = null, ModelCatalogInterface $modelCatalog = new FallbackModelCatalog()): Platform { $handler = new self($create);