Skip to content

Commit acb7f27

Browse files
committed
ref
1 parent aba1562 commit acb7f27

File tree

2 files changed

+79
-2
lines changed

2 files changed

+79
-2
lines changed

src/ai-bundle/src/AiBundle.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1378,7 +1378,9 @@ private function processMessageStoreConfig(string $type, array $messageStores, C
13781378

13791379
$definition = new Definition(CacheMessageStore::class);
13801380
$definition
1381+
->setLazy(true)
13811382
->setArguments($arguments)
1383+
->addTag('proxy', ['interface' => MessageStoreInterface::class])
13821384
->addTag('ai.message_store');
13831385

13841386
$container->setDefinition('ai.message_store.'.$type.'.'.$name, $definition);
@@ -1391,7 +1393,9 @@ private function processMessageStoreConfig(string $type, array $messageStores, C
13911393
foreach ($messageStores as $name => $messageStore) {
13921394
$definition = new Definition(InMemoryStore::class);
13931395
$definition
1396+
->setLazy(true)
13941397
->setArgument(0, $messageStore['identifier'])
1398+
->addTag('proxy', ['interface' => MessageStoreInterface::class])
13951399
->addTag('ai.message_store');
13961400

13971401
$container->setDefinition('ai.message_store.'.$type.'.'.$name, $definition);
@@ -1404,12 +1408,14 @@ private function processMessageStoreConfig(string $type, array $messageStores, C
14041408
foreach ($messageStores as $name => $messageStore) {
14051409
$definition = new Definition(MeilisearchMessageStore::class);
14061410
$definition
1411+
->setLazy(true)
14071412
->setArguments([
14081413
$messageStore['endpoint'],
14091414
$messageStore['api_key'],
14101415
new Reference(ClockInterface::class),
14111416
$messageStore['index_name'],
14121417
])
1418+
->addTag('proxy', ['interface' => MessageStoreInterface::class])
14131419
->addTag('ai.message_store');
14141420

14151421
$container->setDefinition('ai.message_store.'.$type.'.'.$name, $definition);
@@ -1422,12 +1428,14 @@ private function processMessageStoreConfig(string $type, array $messageStores, C
14221428
foreach ($messageStores as $name => $messageStore) {
14231429
$definition = new Definition(PogocacheMessageStore::class);
14241430
$definition
1431+
->setLazy(true)
14251432
->setArguments([
14261433
new Reference('http_client'),
14271434
$messageStore['endpoint'],
14281435
$messageStore['password'],
14291436
$messageStore['key'],
14301437
])
1438+
->addTag('proxy', ['interface' => MessageStoreInterface::class])
14311439
->addTag('ai.message_store');
14321440

14331441
$container->setDefinition('ai.message_store.'.$type.'.'.$name, $definition);
@@ -1447,11 +1455,13 @@ private function processMessageStoreConfig(string $type, array $messageStores, C
14471455

14481456
$definition = new Definition(RedisMessageStore::class);
14491457
$definition
1458+
->setLazy(true)
14501459
->setArguments([
14511460
$redisClient,
14521461
$messageStore['index_name'],
14531462
new Reference('serializer'),
14541463
])
1464+
->addTag('proxy', ['interface' => MessageStoreInterface::class])
14551465
->addTag('ai.message_store');
14561466

14571467
$container->setDefinition('ai.message_store.'.$type.'.'.$name, $definition);
@@ -1464,10 +1474,12 @@ private function processMessageStoreConfig(string $type, array $messageStores, C
14641474
foreach ($messageStores as $name => $messageStore) {
14651475
$definition = new Definition(SessionStore::class);
14661476
$definition
1477+
->setLazy(true)
14671478
->setArguments([
14681479
new Reference('request_stack'),
14691480
$messageStore['identifier'],
14701481
])
1482+
->addTag('proxy', ['interface' => MessageStoreInterface::class])
14711483
->addTag('ai.message_store');
14721484

14731485
$container->setDefinition('ai.message_store.'.$type.'.'.$name, $definition);

src/ai-bundle/tests/DependencyInjection/AiBundleTest.php

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
use Symfony\AI\Store\Document\Transformer\TextTrimTransformer;
2828
use Symfony\AI\Store\Document\Vectorizer;
2929
use Symfony\AI\Store\StoreInterface;
30+
use Symfony\Component\Clock\ClockInterface;
3031
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
3132
use Symfony\Component\DependencyInjection\ContainerBuilder;
3233
use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -387,11 +388,12 @@ public function testCacheStoreWithCustomStrategyCanBeConfigured()
387388

388389
$definition = $container->getDefinition('ai.store.cache.my_cache_store_with_custom_strategy');
389390

390-
$this->assertCount(2, $definition->getArguments());
391+
$this->assertCount(3, $definition->getArguments());
391392
$this->assertInstanceOf(Reference::class, $definition->getArgument(0));
392393
$this->assertSame('cache.system', (string) $definition->getArgument(0));
393394
$this->assertInstanceOf(Reference::class, $definition->getArgument(1));
394395
$this->assertSame('ai.store.distance_calculator.my_cache_store_with_custom_strategy', (string) $definition->getArgument(1));
396+
$this->assertSame('my_cache_store_with_custom_strategy', $definition->getArgument(2));
395397
}
396398

397399
public function testCacheStoreWithCustomStrategyAndKeyCanBeConfigured()
@@ -418,9 +420,9 @@ public function testCacheStoreWithCustomStrategyAndKeyCanBeConfigured()
418420
$this->assertCount(3, $definition->getArguments());
419421
$this->assertInstanceOf(Reference::class, $definition->getArgument(0));
420422
$this->assertSame('cache.system', (string) $definition->getArgument(0));
421-
$this->assertSame('random', $definition->getArgument(2));
422423
$this->assertInstanceOf(Reference::class, $definition->getArgument(1));
423424
$this->assertSame('ai.store.distance_calculator.my_cache_store_with_custom_strategy', (string) $definition->getArgument(1));
425+
$this->assertSame('random', $definition->getArgument(2));
424426
}
425427

426428
public function testInMemoryStoreWithoutCustomStrategyCanBeConfigured()
@@ -2778,6 +2780,10 @@ public function testCacheMessageStoreCanBeConfiguredWithCustomKey()
27782780
$this->assertSame('cache.app', (string) $cacheMessageStoreDefinition->getArgument(0));
27792781

27802782
$this->assertSame('custom', (string) $cacheMessageStoreDefinition->getArgument(1));
2783+
2784+
$this->assertTrue($cacheMessageStoreDefinition->hasTag('proxy'));
2785+
$this->assertSame([['interface' => MessageStoreInterface::class]], $cacheMessageStoreDefinition->getTag('proxy'));
2786+
$this->assertTrue($cacheMessageStoreDefinition->hasTag('ai.message_store'));
27812787
}
27822788

27832789
public function testCacheMessageStoreCanBeConfiguredWithCustomTtl()
@@ -2797,11 +2803,70 @@ public function testCacheMessageStoreCanBeConfiguredWithCustomTtl()
27972803

27982804
$cacheMessageStoreDefinition = $container->getDefinition('ai.message_store.cache.custom');
27992805

2806+
$this->assertTrue($cacheMessageStoreDefinition->isLazy());
28002807
$this->assertInstanceOf(Reference::class, $cacheMessageStoreDefinition->getArgument(0));
28012808
$this->assertSame('cache.app', (string) $cacheMessageStoreDefinition->getArgument(0));
28022809

28032810
$this->assertSame('custom', (string) $cacheMessageStoreDefinition->getArgument(1));
28042811
$this->assertSame(3600, (int) $cacheMessageStoreDefinition->getArgument(2));
2812+
2813+
$this->assertTrue($cacheMessageStoreDefinition->hasTag('proxy'));
2814+
$this->assertSame([['interface' => MessageStoreInterface::class]], $cacheMessageStoreDefinition->getTag('proxy'));
2815+
$this->assertTrue($cacheMessageStoreDefinition->hasTag('ai.message_store'));
2816+
}
2817+
2818+
public function testMemoryMessageStoreCanBeConfiguredWithCustomKey()
2819+
{
2820+
$container = $this->buildContainer([
2821+
'ai' => [
2822+
'message_store' => [
2823+
'memory' => [
2824+
'custom' => [
2825+
'identifier' => 'foo',
2826+
],
2827+
],
2828+
],
2829+
],
2830+
]);
2831+
2832+
$memoryMessageStoreDefinition = $container->getDefinition('ai.message_store.memory.custom');
2833+
2834+
$this->assertTrue($memoryMessageStoreDefinition->isLazy());
2835+
$this->assertSame('foo', $memoryMessageStoreDefinition->getArgument(0));
2836+
2837+
$this->assertTrue($memoryMessageStoreDefinition->hasTag('proxy'));
2838+
$this->assertSame([['interface' => MessageStoreInterface::class]], $memoryMessageStoreDefinition->getTag('proxy'));
2839+
$this->assertTrue($memoryMessageStoreDefinition->hasTag('ai.message_store'));
2840+
}
2841+
2842+
public function testMeilisearchMessageStoreIsConfigured()
2843+
{
2844+
$container = $this->buildContainer([
2845+
'ai' => [
2846+
'message_store' => [
2847+
'meilisearch' => [
2848+
'custom' => [
2849+
'endpoint' => 'http://127.0.0.1:7700',
2850+
'api_key' => 'foo',
2851+
'index_name' => 'test',
2852+
],
2853+
],
2854+
],
2855+
],
2856+
]);
2857+
2858+
$meilisearchMessageStoreDefinition = $container->getDefinition('ai.message_store.meilisearch.custom');
2859+
2860+
$this->assertTrue($meilisearchMessageStoreDefinition->isLazy());
2861+
$this->assertSame('http://127.0.0.1:7700', $meilisearchMessageStoreDefinition->getArgument(0));
2862+
$this->assertSame('foo', $meilisearchMessageStoreDefinition->getArgument(1));
2863+
$this->assertInstanceOf(Reference::class, $meilisearchMessageStoreDefinition->getArgument(2));
2864+
$this->assertSame(ClockInterface::class, (string) $meilisearchMessageStoreDefinition->getArgument(2));
2865+
$this->assertSame('test', $meilisearchMessageStoreDefinition->getArgument(3));
2866+
2867+
$this->assertTrue($meilisearchMessageStoreDefinition->hasTag('proxy'));
2868+
$this->assertSame([['interface' => MessageStoreInterface::class]], $meilisearchMessageStoreDefinition->getTag('proxy'));
2869+
$this->assertTrue($meilisearchMessageStoreDefinition->hasTag('ai.message_store'));
28052870
}
28062871

28072872
private function buildContainer(array $configuration): ContainerBuilder

0 commit comments

Comments
 (0)