Skip to content

Commit 3c6d16f

Browse files
committed
[Store] Add logging to Vectorizer
1 parent 98246e1 commit 3c6d16f

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

src/AiBundle.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,6 +1057,7 @@ private function processVectorizerConfig(string $name, array $config, ContainerB
10571057
$vectorizerDefinition = new Definition(Vectorizer::class, [
10581058
new Reference($config['platform']),
10591059
new Reference('ai.vectorizer.'.$name.'.model'),
1060+
new Reference('logger', ContainerInterface::IGNORE_ON_INVALID_REFERENCE),
10601061
]);
10611062
$vectorizerDefinition->addTag('ai.vectorizer', ['name' => $name]);
10621063
$container->setDefinition('ai.vectorizer.'.$name, $vectorizerDefinition);

tests/DependencyInjection/AiBundleTest.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use Symfony\AI\Store\Document\Vectorizer;
2323
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
2424
use Symfony\Component\DependencyInjection\ContainerBuilder;
25+
use Symfony\Component\DependencyInjection\ContainerInterface;
2526
use Symfony\Component\DependencyInjection\Definition;
2627
use Symfony\Component\DependencyInjection\Reference;
2728

@@ -622,6 +623,41 @@ public function testVectorizerConfiguration()
622623
$this->assertTrue($modelDefinition->hasTag('ai.model.embeddings_model'));
623624
}
624625

626+
public function testVectorizerWithLoggerInjection()
627+
{
628+
$container = $this->buildContainer([
629+
'ai' => [
630+
'vectorizer' => [
631+
'my_vectorizer' => [
632+
'platform' => 'my_platform_service_id',
633+
'model' => [
634+
'class' => 'Symfony\AI\Platform\Bridge\OpenAi\Embeddings',
635+
'name' => 'text-embedding-3-small',
636+
],
637+
],
638+
],
639+
],
640+
]);
641+
642+
$vectorizerDefinition = $container->getDefinition('ai.vectorizer.my_vectorizer');
643+
$arguments = $vectorizerDefinition->getArguments();
644+
645+
$this->assertCount(3, $arguments, 'Vectorizer should have 3 arguments: platform, model, and logger');
646+
647+
// First argument should be platform reference
648+
$this->assertInstanceOf(Reference::class, $arguments[0]);
649+
$this->assertSame('my_platform_service_id', (string) $arguments[0]);
650+
651+
// Second argument should be model reference
652+
$this->assertInstanceOf(Reference::class, $arguments[1]);
653+
$this->assertSame('ai.vectorizer.my_vectorizer.model', (string) $arguments[1]);
654+
655+
// Third argument should be logger reference with IGNORE_ON_INVALID_REFERENCE
656+
$this->assertInstanceOf(Reference::class, $arguments[2]);
657+
$this->assertSame('logger', (string) $arguments[2]);
658+
$this->assertSame(ContainerInterface::IGNORE_ON_INVALID_REFERENCE, $arguments[2]->getInvalidBehavior());
659+
}
660+
625661
public function testIndexerWithConfiguredVectorizer()
626662
{
627663
$container = $this->buildContainer([

0 commit comments

Comments
 (0)