Skip to content

Commit 063a3fd

Browse files
d0niekchr-hertel
authored andcommitted
feat: add support for OpenRouter in configuration (#93)
Resolves #88
1 parent 5fd754a commit 063a3fd

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

src/ai-bundle/src/DependencyInjection/AIExtension.php

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@
3838
use Symfony\AI\Platform\Bridge\OpenAI\Embeddings;
3939
use Symfony\AI\Platform\Bridge\OpenAI\GPT;
4040
use Symfony\AI\Platform\Bridge\OpenAI\PlatformFactory as OpenAIPlatformFactory;
41+
use Symfony\AI\Platform\Bridge\OpenRouter\PlatformFactory as OpenRouterPlatformFactory;
4142
use Symfony\AI\Platform\Bridge\Voyage\Voyage;
43+
use Symfony\AI\Platform\Model;
4244
use Symfony\AI\Platform\ModelClientInterface;
4345
use Symfony\AI\Platform\Platform;
4446
use Symfony\AI\Platform\PlatformInterface;
@@ -214,15 +216,30 @@ private function processPlatformConfig(string $type, array $platform, ContainerB
214216
return;
215217
}
216218

219+
if ('openrouter' === $type) {
220+
$platformId = 'symfony_ai.platform.openrouter';
221+
$definition = (new Definition(Platform::class))
222+
->setFactory(OpenRouterPlatformFactory::class.'::create')
223+
->setAutowired(true)
224+
->setLazy(true)
225+
->addTag('proxy', ['interface' => PlatformInterface::class])
226+
->setArguments(['$apiKey' => $platform['api_key']])
227+
->addTag('symfony_ai.platform');
228+
229+
$container->setDefinition($platformId, $definition);
230+
231+
return;
232+
}
233+
217234
if ('mistral' === $type) {
218-
$platformId = 'llm_chain.platform.mistral';
235+
$platformId = 'symfony_ai.platform.mistral';
219236
$definition = (new Definition(Platform::class))
220237
->setFactory(MistralPlatformFactory::class.'::create')
221238
->setAutowired(true)
222239
->setLazy(true)
223240
->addTag('proxy', ['interface' => PlatformInterface::class])
224241
->setArguments(['$apiKey' => $platform['api_key']])
225-
->addTag('llm_chain.platform');
242+
->addTag('symfony_ai.platform');
226243

227244
$container->setDefinition($platformId, $definition);
228245

@@ -246,6 +263,7 @@ private function processAgentConfig(string $name, array $config, ContainerBuilde
246263
'llama' => Llama::class,
247264
'gemini' => Gemini::class,
248265
'mistral' => Mistral::class,
266+
'openrouter' => Model::class,
249267
default => throw new \InvalidArgumentException(\sprintf('Model "%s" is not supported.', $modelName)),
250268
};
251269
$modelDefinition = new Definition($modelClass);

src/ai-bundle/src/DependencyInjection/Configuration.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ public function getConfigTreeBuilder(): TreeBuilder
6363
->scalarNode('api_key')->isRequired()->end()
6464
->end()
6565
->end()
66+
->arrayNode('openrouter')
67+
->children()
68+
->scalarNode('api_key')->isRequired()->end()
69+
->end()
70+
->end()
6671
->end()
6772
->end()
6873
->arrayNode('agent')

0 commit comments

Comments
 (0)