Skip to content

Commit 10585c9

Browse files
committed
Use model FQCN for indexer config, to allow any Symfony\AI\Platform\Model child class
1 parent acc9010 commit 10585c9

File tree

4 files changed

+19
-19
lines changed

4 files changed

+19
-19
lines changed

src/ai-bundle/config/options.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,8 @@
196196
->end()
197197
->arrayNode('model')
198198
->children()
199-
->scalarNode('name')->isRequired()->end()
200-
->scalarNode('version')->defaultNull()->end()
199+
->scalarNode('class')->isRequired()->end()
200+
->scalarNode('name')->defaultNull()->end()
201201
->arrayNode('options')
202202
->variablePrototype()->end()
203203
->end()

src/ai-bundle/doc/index.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,11 @@ Configuration
9090
collection: 'my_collection'
9191
indexer:
9292
default:
93-
# platform: 'symfony_ai.platform.anthropic'
93+
# platform: 'symfony_ai.platform.mistral'
9494
# store: 'symfony_ai.store.chroma_db.default'
9595
model:
96-
name: 'Embeddings'
97-
version: 'text-embedding-ada-002'
96+
class: 'Symfony\AI\Platform\Bridge\Mistral\Embeddings'
97+
name: !php/const Symfony\AI\Platform\Bridge\Mistral\Embeddings::MISTRAL_EMBED
9898
9999
Usage
100100
-----

src/ai-bundle/src/AIBundle.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,9 @@
3535
use Symfony\AI\Platform\Bridge\Meta\Llama;
3636
use Symfony\AI\Platform\Bridge\Mistral\Mistral;
3737
use Symfony\AI\Platform\Bridge\Mistral\PlatformFactory as MistralPlatformFactory;
38-
use Symfony\AI\Platform\Bridge\OpenAI\Embeddings;
3938
use Symfony\AI\Platform\Bridge\OpenAI\GPT;
4039
use Symfony\AI\Platform\Bridge\OpenAI\PlatformFactory as OpenAIPlatformFactory;
4140
use Symfony\AI\Platform\Bridge\OpenRouter\PlatformFactory as OpenRouterPlatformFactory;
42-
use Symfony\AI\Platform\Bridge\Voyage\Voyage;
4341
use Symfony\AI\Platform\Model;
4442
use Symfony\AI\Platform\ModelClientInterface;
4543
use Symfony\AI\Platform\Platform;
@@ -473,20 +471,22 @@ private function processStoreConfig(string $type, array $stores, ContainerBuilde
473471
*/
474472
private function processIndexerConfig(int|string $name, array $config, ContainerBuilder $container): void
475473
{
476-
['name' => $modelName, 'version' => $version, 'options' => $options] = $config['model'];
474+
['class' => $modelClass, 'name' => $name, 'options' => $options] = $config['model'];
477475

478-
$modelClass = match (strtolower((string) $modelName)) {
479-
'embeddings' => Embeddings::class,
480-
'voyage' => Voyage::class,
481-
default => throw new \InvalidArgumentException(\sprintf('Model "%s" is not supported.', $modelName)),
482-
};
483-
$modelDefinition = (new Definition($modelClass));
484-
if (null !== $version) {
485-
$modelDefinition->setArgument('$name', $version);
476+
if (!is_a($modelClass, Model::class, true)) {
477+
throw new \InvalidArgumentException(\sprintf('"%s" class is not extending Symfony\AI\Platform\Model.', $modelClass));
486478
}
479+
480+
$modelDefinition = (new Definition((string) $modelClass));
481+
482+
if (null !== $name) {
483+
$modelDefinition->setArgument('$name', $name);
484+
}
485+
487486
if ([] !== $options) {
488487
$modelDefinition->setArgument('$options', $options);
489488
}
489+
490490
$modelDefinition->addTag('symfony_ai.model.embeddings_model');
491491
$container->setDefinition('symfony_ai.indexer.'.$name.'.model', $modelDefinition);
492492

src/ai-bundle/tests/AIBundleTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,10 @@ private function getFullConfig(): array
137137
'indexer' => [
138138
'my_text_indexer' => [
139139
'store' => 'my_azure_search_store_service_id',
140-
'platform' => 'google_platform_service_id',
140+
'platform' => 'mistral_platform_service_id',
141141
'model' => [
142-
'name' => 'embeddings',
143-
'version' => 'text-embedding-004',
142+
'class' => 'Symfony\AI\Platform\Bridge\Mistral\Embeddings',
143+
'name' => 'text-embedding-004',
144144
'options' => ['dimension' => 768],
145145
],
146146
],

0 commit comments

Comments
 (0)