Use symfony AI platform for AI provider

This commit is contained in:
Jan Böhmer 2026-04-23 23:26:23 +02:00
parent 90d327fdaa
commit 9cf16248e6
11 changed files with 1304 additions and 30 deletions

610
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "8fd737684b48f8d24fcad35fce37a297",
"content-hash": "699f421ad81f8a1acacf8e2c4af66491",
"packages": [
{
"name": "amphp/amp",
@ -7821,6 +7821,58 @@
],
"time": "2025-12-09T10:50:49+00:00"
},
{
"name": "oskarstark/enum-helper",
"version": "1.8.4",
"source": {
"type": "git",
"url": "https://github.com/OskarStark/enum-helper.git",
"reference": "14e185f1cc259d7cd3f61eea17f9b174a886a6da"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/OskarStark/enum-helper/zipball/14e185f1cc259d7cd3f61eea17f9b174a886a6da",
"reference": "14e185f1cc259d7cd3f61eea17f9b174a886a6da",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
"conflict": {
"phpunit/phpunit": "<10"
},
"require-dev": {
"ergebnis/php-cs-fixer-config": "^6.58",
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^10.5",
"rector/rector": "^2.3"
},
"type": "library",
"autoload": {
"psr-4": {
"OskarStark\\Enum\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Oskar Stark",
"email": "oskarstark@googlemail.com"
}
],
"description": "This library provides helpers for several enum operations",
"keywords": [
"enum"
],
"support": {
"issues": "https://github.com/OskarStark/enum-helper/issues",
"source": "https://github.com/OskarStark/enum-helper/tree/1.8.4"
},
"time": "2026-02-05T08:59:09+00:00"
},
{
"name": "paragonie/constant_time_encoding",
"version": "v3.1.3",
@ -10341,6 +10393,552 @@
],
"time": "2026-03-23T22:56:56+00:00"
},
{
"name": "symfony/ai-bundle",
"version": "v0.8.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ai-bundle.git",
"reference": "847365e0f885f8814421e9c94f03ce19e0b54bbc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/ai-bundle/zipball/847365e0f885f8814421e9c94f03ce19e0b54bbc",
"reference": "847365e0f885f8814421e9c94f03ce19e0b54bbc",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/ai-platform": "^0.8",
"symfony/clock": "^7.3|^8.0",
"symfony/config": "^7.3|^8.0",
"symfony/console": "^7.3|^8.0",
"symfony/dependency-injection": "^7.3|^8.0",
"symfony/framework-bundle": "^7.3|^8.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/string": "^7.3|^8.0"
},
"require-dev": {
"google/auth": "^1.47",
"phpstan/phpstan": "^2.1",
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^11.5.53",
"symfony/ai-agent": "^0.8",
"symfony/ai-ai-ml-api-platform": "^0.8",
"symfony/ai-albert-platform": "^0.8",
"symfony/ai-amazee-ai-platform": "^0.8",
"symfony/ai-anthropic-platform": "^0.8",
"symfony/ai-azure-platform": "^0.8",
"symfony/ai-azure-search-store": "^0.8",
"symfony/ai-bedrock-platform": "^0.8",
"symfony/ai-cache-message-store": "^0.8",
"symfony/ai-cache-platform": "^0.8",
"symfony/ai-cache-store": "^0.8",
"symfony/ai-cartesia-platform": "^0.8",
"symfony/ai-cerebras-platform": "^0.8",
"symfony/ai-chat": "^0.8",
"symfony/ai-chroma-db-store": "^0.8",
"symfony/ai-click-house-store": "^0.8",
"symfony/ai-cloudflare-message-store": "^0.8",
"symfony/ai-cloudflare-store": "^0.8",
"symfony/ai-decart-platform": "^0.8",
"symfony/ai-deep-seek-platform": "^0.8",
"symfony/ai-docker-model-runner-platform": "^0.8",
"symfony/ai-doctrine-message-store": "^0.8",
"symfony/ai-elasticsearch-store": "^0.8",
"symfony/ai-eleven-labs-platform": "^0.8",
"symfony/ai-failover-platform": "^0.8",
"symfony/ai-gemini-platform": "^0.8",
"symfony/ai-generic-platform": "^0.8",
"symfony/ai-hugging-face-platform": "^0.8",
"symfony/ai-lm-studio-platform": "^0.8",
"symfony/ai-manticore-search-store": "^0.8",
"symfony/ai-maria-db-store": "^0.8",
"symfony/ai-meilisearch-message-store": "^0.8",
"symfony/ai-meilisearch-store": "^0.8",
"symfony/ai-meta-platform": "^0.8",
"symfony/ai-milvus-store": "^0.8",
"symfony/ai-mistral-platform": "^0.8",
"symfony/ai-mongo-db-message-store": "^0.8",
"symfony/ai-mongo-db-store": "^0.8",
"symfony/ai-neo4j-store": "^0.8",
"symfony/ai-ollama-platform": "^0.8",
"symfony/ai-open-ai-platform": "^0.8",
"symfony/ai-open-responses-platform": "^0.8",
"symfony/ai-open-router-platform": "^0.8",
"symfony/ai-open-search-store": "^0.8",
"symfony/ai-perplexity-platform": "^0.8",
"symfony/ai-pinecone-store": "^0.8",
"symfony/ai-pogocache-message-store": "^0.8",
"symfony/ai-postgres-store": "^0.8",
"symfony/ai-qdrant-store": "^0.8",
"symfony/ai-redis-message-store": "^0.8",
"symfony/ai-redis-store": "^0.8",
"symfony/ai-replicate-platform": "^0.8",
"symfony/ai-s3vectors-store": "^0.8",
"symfony/ai-scaleway-platform": "^0.8",
"symfony/ai-session-message-store": "^0.8",
"symfony/ai-sqlite-store": "^0.8",
"symfony/ai-store": "^0.8",
"symfony/ai-supabase-store": "^0.8",
"symfony/ai-surreal-db-message-store": "^0.8",
"symfony/ai-surreal-db-store": "^0.8",
"symfony/ai-transformers-php-platform": "^0.8",
"symfony/ai-typesense-store": "^0.8",
"symfony/ai-vektor-store": "^0.8",
"symfony/ai-vertex-ai-platform": "^0.8",
"symfony/ai-voyage-platform": "^0.8",
"symfony/ai-weaviate-store": "^0.8",
"symfony/expression-language": "^7.3|^8.0",
"symfony/security-core": "^7.3|^8.0",
"symfony/translation": "^7.3|^8.0",
"symfony/validator": "^7.3|^8.0"
},
"type": "symfony-bundle",
"extra": {
"thanks": {
"url": "https://github.com/symfony/ai",
"name": "symfony/ai"
}
},
"autoload": {
"psr-4": {
"Symfony\\AI\\AiBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christopher Hertel",
"email": "mail@christopher-hertel.de"
},
{
"name": "Oskar Stark",
"email": "oskarstark@googlemail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Integration bundle for Symfony AI components",
"support": {
"source": "https://github.com/symfony/ai-bundle/tree/v0.8.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2026-04-20T21:23:24+00:00"
},
{
"name": "symfony/ai-generic-platform",
"version": "v0.8.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ai-generic-platform.git",
"reference": "2e358c0e88c676fad0b61b3df715f9822d29a7e3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/ai-generic-platform/zipball/2e358c0e88c676fad0b61b3df715f9822d29a7e3",
"reference": "2e358c0e88c676fad0b61b3df715f9822d29a7e3",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/ai-platform": "^0.8",
"symfony/http-client": "^7.3|^8.0"
},
"require-dev": {
"phpstan/phpstan": "^2.1",
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^11.5.53"
},
"type": "symfony-ai-platform",
"extra": {
"thanks": {
"url": "https://github.com/symfony/ai",
"name": "symfony/ai"
}
},
"autoload": {
"psr-4": {
"Symfony\\AI\\Platform\\Bridge\\Generic\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christopher Hertel",
"email": "mail@christopher-hertel.de"
},
{
"name": "Oskar Stark",
"email": "oskarstark@googlemail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Generic platform bridge for Symfony AI",
"keywords": [
"Bridge",
"ai",
"generic",
"platform"
],
"support": {
"source": "https://github.com/symfony/ai-generic-platform/tree/v0.8.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2026-04-20T21:23:24+00:00"
},
{
"name": "symfony/ai-lm-studio-platform",
"version": "v0.8.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ai-lm-studio-platform.git",
"reference": "ad1c046dd9e7d6e474bc86554443e2d9400a7826"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/ai-lm-studio-platform/zipball/ad1c046dd9e7d6e474bc86554443e2d9400a7826",
"reference": "ad1c046dd9e7d6e474bc86554443e2d9400a7826",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/ai-generic-platform": "^0.8",
"symfony/ai-platform": "^0.8",
"symfony/http-client": "^7.3|^8.0"
},
"require-dev": {
"phpstan/phpstan": "^2.1",
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^11.5.53"
},
"type": "symfony-ai-platform",
"extra": {
"thanks": {
"url": "https://github.com/symfony/ai",
"name": "symfony/ai"
}
},
"autoload": {
"psr-4": {
"Symfony\\AI\\Platform\\Bridge\\LmStudio\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christopher Hertel",
"email": "mail@christopher-hertel.de"
},
{
"name": "Oskar Stark",
"email": "oskarstark@googlemail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "LM Studio platform bridge for Symfony AI",
"keywords": [
"Bridge",
"ai",
"lmstudio",
"local",
"platform"
],
"support": {
"source": "https://github.com/symfony/ai-lm-studio-platform/tree/v0.8.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2026-04-20T21:23:24+00:00"
},
{
"name": "symfony/ai-open-router-platform",
"version": "v0.8.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ai-open-router-platform.git",
"reference": "eb5ed3176b78bc489bf325c5d6bc4efc255804be"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/ai-open-router-platform/zipball/eb5ed3176b78bc489bf325c5d6bc4efc255804be",
"reference": "eb5ed3176b78bc489bf325c5d6bc4efc255804be",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/ai-generic-platform": "^0.8",
"symfony/ai-platform": "^0.8",
"symfony/http-client": "^7.3|^8.0"
},
"require-dev": {
"phpstan/phpstan": "^2.1",
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^11.5.53"
},
"type": "symfony-ai-platform",
"extra": {
"thanks": {
"url": "https://github.com/symfony/ai",
"name": "symfony/ai"
}
},
"autoload": {
"psr-4": {
"Symfony\\AI\\Platform\\Bridge\\OpenRouter\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christopher Hertel",
"email": "mail@christopher-hertel.de"
},
{
"name": "Oskar Stark",
"email": "oskarstark@googlemail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "OpenRouter platform bridge for Symfony AI",
"keywords": [
"Bridge",
"OpenRouter",
"ai",
"platform"
],
"support": {
"source": "https://github.com/symfony/ai-open-router-platform/tree/v0.8.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2026-04-20T21:23:24+00:00"
},
{
"name": "symfony/ai-platform",
"version": "v0.8.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/ai-platform.git",
"reference": "86ed9396f53cad02b5d1ca8092956ea74f65823f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/ai-platform/zipball/86ed9396f53cad02b5d1ca8092956ea74f65823f",
"reference": "86ed9396f53cad02b5d1ca8092956ea74f65823f",
"shasum": ""
},
"require": {
"ext-fileinfo": "*",
"oskarstark/enum-helper": "^1.5",
"php": ">=8.2",
"phpdocumentor/reflection-docblock": "^5.4|^6.0",
"phpstan/phpdoc-parser": "^2.1",
"psr/log": "^3.0",
"symfony/clock": "^7.3|^8.0",
"symfony/event-dispatcher": "^7.3|^8.0",
"symfony/property-access": "^7.3|^8.0",
"symfony/property-info": "^7.3|^8.0",
"symfony/serializer": "^7.3|^8.0",
"symfony/type-info": "^7.3|^8.0",
"symfony/uid": "^7.3|^8.0"
},
"require-dev": {
"phpstan/phpstan": "^2.1",
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^11.5.53",
"symfony/cache": "^7.3|^8.0",
"symfony/console": "^7.3|^8.0",
"symfony/dotenv": "^7.3|^8.0",
"symfony/expression-language": "^7.3|^8.0",
"symfony/finder": "^7.3|^8.0",
"symfony/http-client": "^7.3|^8.0",
"symfony/http-client-contracts": "^3.5",
"symfony/intl": "^7.3|^8.0",
"symfony/process": "^7.3|^8.0",
"symfony/validator": "^7.3|^8.0",
"symfony/var-dumper": "^7.3|^8.0",
"symfony/yaml": "^7.3|^8.0"
},
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/ai",
"name": "symfony/ai"
}
},
"autoload": {
"psr-4": {
"Symfony\\AI\\Platform\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christopher Hertel",
"email": "mail@christopher-hertel.de"
},
{
"name": "Oskar Stark",
"email": "oskarstark@googlemail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "PHP library for interacting with AI platform provider.",
"keywords": [
"Gemini",
"OpenRouter",
"ai",
"aimlapi",
"albert",
"amazeeai",
"anthropic",
"azure",
"bedrock",
"cerebras",
"dockermodelrunner",
"elevenlabs",
"huggingface",
"inference",
"litellm",
"llama",
"lmstudio",
"meta",
"mistral",
"nova",
"ollama",
"openai",
"ovh",
"perplexity",
"replicate",
"speech",
"transformers",
"vertexai",
"voyage"
],
"support": {
"source": "https://github.com/symfony/ai-platform/tree/v0.8.1"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2026-04-20T21:28:38+00:00"
},
{
"name": "symfony/apache-pack",
"version": "v1.0.1",
@ -19256,12 +19854,12 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
"reference": "f41f65e527608a9a76cfbafd873756ed76c5452d"
"reference": "10b8a93511210c9bae3be31f4fe13c3ff974cad4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/f41f65e527608a9a76cfbafd873756ed76c5452d",
"reference": "f41f65e527608a9a76cfbafd873756ed76c5452d",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/10b8a93511210c9bae3be31f4fe13c3ff974cad4",
"reference": "10b8a93511210c9bae3be31f4fe13c3ff974cad4",
"shasum": ""
},
"conflict": {
@ -19375,7 +19973,7 @@
"cesnet/simplesamlphp-module-proxystatistics": "<3.1",
"chriskacerguis/codeigniter-restserver": "<=2.7.1",
"chrome-php/chrome": "<1.14",
"ci4-cms-erp/ci4ms": "<=0.31.3",
"ci4-cms-erp/ci4ms": "<0.31.5",
"civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3",
"ckeditor/ckeditor": "<4.25",
"clickstorm/cs-seo": ">=6,<6.8|>=7,<7.5|>=8,<8.4|>=9,<9.3",
@ -20304,7 +20902,7 @@
"type": "tidelift"
}
],
"time": "2026-04-21T17:25:01+00:00"
"time": "2026-04-22T18:27:19+00:00"
},
{
"name": "sebastian/cli-parser",