diff --git a/src/ai-bundle/config/services.php b/src/ai-bundle/config/services.php index b135a090b..80083aa58 100644 --- a/src/ai-bundle/config/services.php +++ b/src/ai-bundle/config/services.php @@ -30,7 +30,6 @@ use Symfony\AI\Platform\Bridge\Anthropic\Contract\AnthropicContract; use Symfony\AI\Platform\Bridge\Anthropic\ModelCatalog as AnthropicModelCatalog; use Symfony\AI\Platform\Bridge\Anthropic\TokenOutputProcessor as AnthropicTokenOutputProcessor; -use Symfony\AI\Platform\Bridge\Azure\Meta\ModelCatalog as AzureMetaModelCatalog; use Symfony\AI\Platform\Bridge\Azure\OpenAi\ModelCatalog as AzureOpenAiModelCatalog; use Symfony\AI\Platform\Bridge\Cerebras\ModelCatalog as CerebrasModelCatalog; use Symfony\AI\Platform\Bridge\DeepSeek\ModelCatalog as DeepSeekModelCatalog; @@ -41,6 +40,7 @@ use Symfony\AI\Platform\Bridge\Gemini\TokenOutputProcessor as GeminiTokenOutputProcessor; use Symfony\AI\Platform\Bridge\HuggingFace\ModelCatalog as HuggingFaceModelCatalog; use Symfony\AI\Platform\Bridge\LmStudio\ModelCatalog as LmStudioModelCatalog; +use Symfony\AI\Platform\Bridge\Meta\ModelCatalog as AzureMetaModelCatalog; use Symfony\AI\Platform\Bridge\Mistral\ModelCatalog as MistralModelCatalog; use Symfony\AI\Platform\Bridge\Mistral\TokenOutputProcessor as MistralTokenOutputProcessor; use Symfony\AI\Platform\Bridge\Ollama\Contract\OllamaContract; diff --git a/src/platform/src/Bridge/Azure/Meta/PlatformFactory.php b/src/platform/src/Bridge/Azure/Meta/PlatformFactory.php index 067d282cb..63547362f 100644 --- a/src/platform/src/Bridge/Azure/Meta/PlatformFactory.php +++ b/src/platform/src/Bridge/Azure/Meta/PlatformFactory.php @@ -11,6 +11,7 @@ namespace Symfony\AI\Platform\Bridge\Azure\Meta; +use Symfony\AI\Platform\Bridge\Meta\ModelCatalog; use Symfony\AI\Platform\Contract; use Symfony\AI\Platform\ModelCatalog\ModelCatalogInterface; use Symfony\AI\Platform\Platform; diff --git a/src/platform/src/Bridge/Azure/OpenAi/ModelCatalog.php b/src/platform/src/Bridge/Azure/OpenAi/ModelCatalog.php deleted file mode 100644 index 7fe5d20c3..000000000 --- a/src/platform/src/Bridge/Azure/OpenAi/ModelCatalog.php +++ /dev/null @@ -1,125 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\AI\Platform\Bridge\Azure\OpenAi; - -use Symfony\AI\Platform\Bridge\OpenAi\Embeddings; -use Symfony\AI\Platform\Bridge\OpenAi\Gpt; -use Symfony\AI\Platform\Bridge\OpenAi\Whisper; -use Symfony\AI\Platform\Capability; -use Symfony\AI\Platform\ModelCatalog\AbstractModelCatalog; - -/** - * @author Oskar Stark - */ -final class ModelCatalog extends AbstractModelCatalog -{ - /** - * @param array}> $additionalModels - */ - public function __construct(array $additionalModels = []) - { - $defaultModels = [ - // GPT models - 'gpt-4o' => [ - 'class' => Gpt::class, - 'capabilities' => [ - Capability::INPUT_TEXT, - Capability::INPUT_IMAGE, - Capability::INPUT_AUDIO, - Capability::OUTPUT_TEXT, - Capability::OUTPUT_AUDIO, - Capability::OUTPUT_STREAMING, - Capability::TOOL_CALLING, - ], - ], - 'gpt-4o-mini' => [ - 'class' => Gpt::class, - 'capabilities' => [ - Capability::INPUT_TEXT, - Capability::INPUT_IMAGE, - Capability::OUTPUT_TEXT, - Capability::OUTPUT_STREAMING, - Capability::TOOL_CALLING, - ], - ], - 'gpt-4-turbo' => [ - 'class' => Gpt::class, - 'capabilities' => [ - Capability::INPUT_TEXT, - Capability::INPUT_IMAGE, - Capability::OUTPUT_TEXT, - Capability::OUTPUT_STREAMING, - Capability::TOOL_CALLING, - ], - ], - 'gpt-4' => [ - 'class' => Gpt::class, - 'capabilities' => [ - Capability::INPUT_TEXT, - Capability::OUTPUT_TEXT, - Capability::OUTPUT_STREAMING, - Capability::TOOL_CALLING, - ], - ], - 'gpt-35-turbo' => [ - 'class' => Gpt::class, - 'capabilities' => [ - Capability::INPUT_TEXT, - Capability::OUTPUT_TEXT, - Capability::OUTPUT_STREAMING, - Capability::TOOL_CALLING, - ], - ], - // Whisper models - 'whisper' => [ - 'class' => Whisper::class, - 'capabilities' => [ - Capability::INPUT_AUDIO, - Capability::OUTPUT_TEXT, - Capability::SPEECH_TO_TEXT, - ], - ], - 'whisper-1' => [ - 'class' => Whisper::class, - 'capabilities' => [ - Capability::INPUT_AUDIO, - Capability::OUTPUT_TEXT, - Capability::SPEECH_TO_TEXT, - ], - ], - // Embedding models - 'text-embedding-ada-002' => [ - 'class' => Embeddings::class, - 'capabilities' => [ - Capability::INPUT_TEXT, - Capability::OUTPUT_STRUCTURED, - ], - ], - 'text-embedding-3-small' => [ - 'class' => Embeddings::class, - 'capabilities' => [ - Capability::INPUT_TEXT, - Capability::OUTPUT_STRUCTURED, - ], - ], - 'text-embedding-3-large' => [ - 'class' => Embeddings::class, - 'capabilities' => [ - Capability::INPUT_TEXT, - Capability::OUTPUT_STRUCTURED, - ], - ], - ]; - - $this->models = array_merge($defaultModels, $additionalModels); - } -} diff --git a/src/platform/src/Bridge/Azure/OpenAi/PlatformFactory.php b/src/platform/src/Bridge/Azure/OpenAi/PlatformFactory.php index 819f1cd7c..23595c759 100644 --- a/src/platform/src/Bridge/Azure/OpenAi/PlatformFactory.php +++ b/src/platform/src/Bridge/Azure/OpenAi/PlatformFactory.php @@ -13,6 +13,7 @@ use Symfony\AI\Platform\Bridge\OpenAi\Embeddings; use Symfony\AI\Platform\Bridge\OpenAi\Gpt; +use Symfony\AI\Platform\Bridge\OpenAi\ModelCatalog; use Symfony\AI\Platform\Bridge\OpenAi\Whisper; use Symfony\AI\Platform\Bridge\OpenAi\Whisper\AudioNormalizer; use Symfony\AI\Platform\Contract; diff --git a/src/platform/src/Bridge/Azure/Meta/ModelCatalog.php b/src/platform/src/Bridge/Meta/ModelCatalog.php similarity index 97% rename from src/platform/src/Bridge/Azure/Meta/ModelCatalog.php rename to src/platform/src/Bridge/Meta/ModelCatalog.php index 13754d35c..422499cca 100644 --- a/src/platform/src/Bridge/Azure/Meta/ModelCatalog.php +++ b/src/platform/src/Bridge/Meta/ModelCatalog.php @@ -9,9 +9,8 @@ * file that was distributed with this source code. */ -namespace Symfony\AI\Platform\Bridge\Azure\Meta; +namespace Symfony\AI\Platform\Bridge\Meta; -use Symfony\AI\Platform\Bridge\Meta\Llama; use Symfony\AI\Platform\Capability; use Symfony\AI\Platform\ModelCatalog\AbstractModelCatalog; diff --git a/src/platform/tests/Bridge/Azure/OpenAi/ModelCatalogTest.php b/src/platform/tests/Bridge/Azure/OpenAi/ModelCatalogTest.php deleted file mode 100644 index dd89c3d6f..000000000 --- a/src/platform/tests/Bridge/Azure/OpenAi/ModelCatalogTest.php +++ /dev/null @@ -1,45 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\AI\Platform\Tests\Bridge\Azure\OpenAi; - -use Symfony\AI\Platform\Bridge\Azure\OpenAi\ModelCatalog; -use Symfony\AI\Platform\Bridge\OpenAi\Embeddings; -use Symfony\AI\Platform\Bridge\OpenAi\Gpt; -use Symfony\AI\Platform\Bridge\OpenAi\Whisper; -use Symfony\AI\Platform\Capability; -use Symfony\AI\Platform\ModelCatalog\ModelCatalogInterface; -use Symfony\AI\Platform\Test\ModelCatalogTestCase; - -/** - * @author Oskar Stark - */ -final class ModelCatalogTest extends ModelCatalogTestCase -{ - public static function modelsProvider(): iterable - { - yield 'gpt-4o' => ['gpt-4o', Gpt::class, [Capability::INPUT_TEXT, Capability::INPUT_IMAGE, Capability::INPUT_AUDIO, Capability::OUTPUT_TEXT, Capability::OUTPUT_AUDIO, Capability::OUTPUT_STREAMING, Capability::TOOL_CALLING]]; - yield 'gpt-4o-mini' => ['gpt-4o-mini', Gpt::class, [Capability::INPUT_TEXT, Capability::INPUT_IMAGE, Capability::OUTPUT_TEXT, Capability::OUTPUT_STREAMING, Capability::TOOL_CALLING]]; - yield 'gpt-4-turbo' => ['gpt-4-turbo', Gpt::class, [Capability::INPUT_TEXT, Capability::INPUT_IMAGE, Capability::OUTPUT_TEXT, Capability::OUTPUT_STREAMING, Capability::TOOL_CALLING]]; - yield 'gpt-4' => ['gpt-4', Gpt::class, [Capability::INPUT_TEXT, Capability::OUTPUT_TEXT, Capability::OUTPUT_STREAMING, Capability::TOOL_CALLING]]; - yield 'gpt-35-turbo' => ['gpt-35-turbo', Gpt::class, [Capability::INPUT_TEXT, Capability::OUTPUT_TEXT, Capability::OUTPUT_STREAMING, Capability::TOOL_CALLING]]; - yield 'whisper' => ['whisper', Whisper::class, [Capability::INPUT_AUDIO, Capability::OUTPUT_TEXT, Capability::SPEECH_TO_TEXT]]; - yield 'whisper-1' => ['whisper-1', Whisper::class, [Capability::INPUT_AUDIO, Capability::OUTPUT_TEXT, Capability::SPEECH_TO_TEXT]]; - yield 'text-embedding-ada-002' => ['text-embedding-ada-002', Embeddings::class, [Capability::INPUT_TEXT, Capability::OUTPUT_STRUCTURED]]; - yield 'text-embedding-3-small' => ['text-embedding-3-small', Embeddings::class, [Capability::INPUT_TEXT, Capability::OUTPUT_STRUCTURED]]; - yield 'text-embedding-3-large' => ['text-embedding-3-large', Embeddings::class, [Capability::INPUT_TEXT, Capability::OUTPUT_STRUCTURED]]; - } - - protected function createModelCatalog(): ModelCatalogInterface - { - return new ModelCatalog(); - } -} diff --git a/src/platform/tests/Bridge/Azure/Meta/ModelCatalogTest.php b/src/platform/tests/Bridge/Meta/ModelCatalogTest.php similarity index 96% rename from src/platform/tests/Bridge/Azure/Meta/ModelCatalogTest.php rename to src/platform/tests/Bridge/Meta/ModelCatalogTest.php index 8666f90a1..f5e8b922f 100644 --- a/src/platform/tests/Bridge/Azure/Meta/ModelCatalogTest.php +++ b/src/platform/tests/Bridge/Meta/ModelCatalogTest.php @@ -9,10 +9,10 @@ * file that was distributed with this source code. */ -namespace Symfony\AI\Platform\Tests\Bridge\Azure\Meta; +namespace Symfony\AI\Platform\Tests\Bridge\Meta; -use Symfony\AI\Platform\Bridge\Azure\Meta\ModelCatalog; use Symfony\AI\Platform\Bridge\Meta\Llama; +use Symfony\AI\Platform\Bridge\Meta\ModelCatalog; use Symfony\AI\Platform\Capability; use Symfony\AI\Platform\ModelCatalog\ModelCatalogInterface; use Symfony\AI\Platform\Test\ModelCatalogTestCase;