Releases: symfony/ai
Releases · symfony/ai
v0.6.0
Changelog (v0.5.0...v0.6.0)
- feature #1636 Add
TranslationCollectorFormatterfor Symfony profiler (@wachterjohannes) - feature #1644 Add support for prompt caching (@fabpot)
- feature #1706 Add SummaryGeneratorTransformer for LLM-based document summaries (@wachterjohannes)
- feature #1683 Make JSON schema generation extensible (v2) (@valtzu)
- bug #1454 Fix for invalid parameter number (@michielvaneerd)
- bug #1714 Fix FallbackModelCatalog (@fabpot)
- feature #1701 Add bridge (@chr-hertel)
- bug #1694 Fix on
ElevenLabsplatform (@Guikingone) - bug #1720 stream response when using SSE (@soyuka)
- feature #1719 Replace Chat Completions client with Responses API client (@paulkothmair)
- feature #1717 Resolve models.dev JSON from symfony/models-dev Composer package (@fabpot)
- bug #1711 Throw InvalidArgumentException when ModelClient receives a string payload (@fabpot)
- bug #1712 Skip specialized bridge check when a custom baseUrl is provided (@fabpot)
- bug #1703 Improve Elevenlabs error handling (@chr-hertel)
- feature #1631 Implement PSR-16 adapter session storage (@EdouardCourty)
- feature #1661 Support API key authentication with global endpoint (@botjaeger)
- bug #1690 Fix OpenAI tool call serialization (@fabpot)
- bug #1695 Improvement on
ScopingHttpClientsupport (@Guikingone) - bug #1702 Fix composer setup of examples before 0.6 (@chr-hertel)
- feature #1689 Add well-known base URLs for providers with dedicated npm packages (@fabpot)
- bug #1698 fix typo in model name (no 's') (@tacman)
- bug #1691 Fix scientific notation strings being cast to int instead of float in model option parsing (@fabpot)
- bug #1675 Fix ai profiler page (@pkothmair)
- feature #1556 Support structured output for
ClaudeModelClient(@aszenz) - feature #1678 Add support for
gemini-3.1-pro-preview(@alex-ception) - feature #1680 Add setup_options to store config (@plachance)
- feature #1671 Run Vektor integration test in pipeline (@chr-hertel)
- feature #1614 Add
MailerCollectorFormatterfor Symfony profiler (@wachterjohannes) - bug #1670 Fix AssistantMessageNormalizer producing null content for Anthropic API (@fabpot)
- feature #1633 Support for
ScopingHttpClientimproved (@Guikingone) - feature #1561 Add bridge (@Guikingone)
- feature #1654
TraceableStoreimplemented (@Guikingone) - feature #1554 Add bridge (@aszenz)
- feature #1656
TraceableAgentimplemented (@Guikingone) - feature #1653 Move debug service decorating to compiler pass (@HypeMC)
v0.5.0
Changelog (v0.4.0...v0.5.0)
- feature #1652 Make OVH platform configurable (@loicsapone)
- bug #1639 Fix
DataCollectorfailing when iterables areRewindableGenerator(@ahmed-bhs) - feature #1641 Add
setup_optionsto store config (@OskarStark) - feature #1615 Improve support for
ScopingHttpClient(@Guikingone)
v0.4.0
Changelog (v0.3.3...v0.4.0)
- feature #1594 Add bridge (@colorfield)
- feature #1635 Add thinking support (@fabpot)
- feature #1634 Update models (@fabpot)
- feature #1622 Add
ModelResolver(@fabpot) - feature #1533 add
ResetInterfaceto prevent memory leaks (@santysisi) - feature #1626 Add support for
gemini-3-flash-preview(@alex-ception) - bug #1618 Fix
AssistantMessageNormalizerto support tools properly (@fabpot) - feature #1620 Allow to override dataPath and default Contract (@fabpot)
- bug #1607 Keep lazy iterator alive (@chr-hertel)
- bug #1610 Skip streaming candidates without content parts (@stijnkuppens)
- bug #1609 Improve support for
ScopingHttpClient(@Guikingone) - feature #1570 Add query abstraction with filter support (@wachterjohannes)
- feature #1550 Add support for object instances in structured output (@wachterjohannes)
- feature #1576 Add bridge (@fabpot)
- feature #1600 Add support for object serialization in template variables (@wachterjohannes)
- bug #1603 Fix profiler collector names to use short names (@wachterjohannes)
- feature #1599 Add structured output and tool calling support (@4lxndr)
- bug #1604 Bug: JsonException with SSE comments in RawHttpResult (@bigdevlarry)
- feature #1512 Implement remove method for SurrealDb store (@chr-hertel)
- feature #1509 Implement remove method for Typesense store (@chr-hertel)
- feature #1503 Implement remove() method (@chr-hertel)
- feature #1513 Implement remove method for Weaviate store (@chr-hertel)
- feature #1506 Implement remove() method (@chr-hertel)
- feature #1500 Implement remove method for Milvus store (@chr-hertel)
- feature #1505 Implement remove method for Redis store (@chr-hertel)
- feature #1496 Implement remove() method (@chr-hertel)
- feature #1502 Implement remove() method (@chr-hertel)
- feature #1497 Implement remove() method (@chr-hertel)
- bug #1569 Fix ResultNormalizer parse-time import causing fatal error (@wachterjohannes)
- feature #1580 Add
JsonFileLoader(@bigdevlarry) - feature #1553 improv: Better defaults, preserve tool msgs (@aszenz)
- feature #1537 Add CSV loader to load data from CSV file as text documents (@RamyHakam)
- feature #1581 Add
MarkdownLoader(@Guikingone) - feature #1571 Introduce Open Responses Platform Bridge by extracting from OpenAI (@chr-hertel)
- feature #1578 Add
HasSourcesTraittoSubagent(@janssensglenn) - bug #1560 Add
metadatatoAssistantMessage(@janssensglenn) - feature #1504 Implement remove() method (@chr-hertel)
- feature #1498 Implement remove method for MariaDb store (@chr-hertel)
- feature #1492 Implement remove() method (@chr-hertel)
- feature #1499 Implement remove method for Meilisearch store (@chr-hertel)
- feature #1494 Implement remove() method (@chr-hertel)
- bug #1535 Read discriminator mapping from serializer metadata (@valtzu)
- feature #1521 Add bridge (@loicsapone)
- bug #1530 Add missing EMBEDDINGS capability to embedding models (@RamyHakam)
- feature #1546 Add Filesystem wrapper tool as Agent bridge (@chr-hertel)
- feature #1551 Add
DocumentIndexersupport when no loader is configured (@chr-hertel) - feature #1495 Implement ChromaDb store remove() method (@chr-hertel)
- feature #1493 Implement remove() method (@chr-hertel)
- feature #1538 Add
chatsdata fromDataCollectorto thedata_collector.html.twigtemplate (@santysisi) - feature #1490 Implement remove() method (@chr-hertel)
- bug #1527 Add missing bundle configuration (@OskarStark)
- feature #1491 Implement remove method for AzureSearch store (@chr-hertel)
- bug #1518 Fix to proper delay handling, more than once but also not after last element (@chr-hertel)
- feature #1520 Add support for token usage on generic bridge (@chr-hertel)
- feature #1517 Allow iterable of source in Indexer::index() + doesn't break lazyness (@lyrixx)
- feature #1464 Make
Indexerstateless by moving source toindex()parameter (@chr-hertel) - feature #1389 Add support for "remove" operation (@MolloKhan)
v0.3.3
Changelog (v0.3.2...v0.3.3)
- bug #1462 Expose chunk size and delay via construct to actually override via container (@chr-hertel)
v0.3.2
Changelog (v0.3.1...v0.3.2)
- bug #1459 Condition for message stores packages moved into the loop (@Guikingone)
v0.3.1
Changelog (v0.3.0...v0.3.1)
- bug #1424 Handle tool calls in streaming mode (HKandulla)
- bug #1456 Remove cache result normalizer if package is not available (chr-hertel)
- bug #1448 Split bundle options into smaller chunks (@chr-hertel)
v0.3.0
What's Changed
- [Mate] Fix mate logger failing when log directory doesn't exist by @wachterjohannes in #1372
- [Chat] Fixes on
DoctrineDbalMessageStoreby @Guikingone in #1356 - [MCP Bundle] Extend bundle config for covering description, icons and website url as well by @chr-hertel in #1381
- [Mate] Merge bridge tests from mate/Tests into bridge tests by @wachterjohannes in #1380
- [MCP Bundle] bump php-sdk to 0.3 by @soyuka in #1377
- [Mate] Add mcp:tools:list command by @wachterjohannes in #1379
- [Mate] Add support for extension exclusion in Mate by @wachterjohannes in #1392
- [Agent][Platform] fix: update phpdocumentor/reflection-docblock version constraint to support 6.0 by @Spomky in #1390
- [Mate] Bump mcp/php-sdk in mate to 0.3 by @wachterjohannes in #1388
- [Doc] Add managing stores for
Storecomponent by @Guikingone in #1386 - [AI Bundle] Add missing package checks for message stores by @Guikingone in #1383
- [Mate] Add mcp:tools:inspect command for detailed tool introspection by @wachterjohannes in #1387
- [Agent] Add test for toolboxes StreamResult behavior by @chr-hertel in #1393
- [Platform][OpenRouter] Add Cached HTTP client example for OpenRouter ModelApiCatalog by @lochmueller in #1385
- [Agent][Platform][OpenAI] Add stream usage support by @oesteve in #754
- [Mate] Fix instantiation of CapabilityCollector after #1388 merge by @chr-hertel in #1395
- [Agent][Platform] Introduce stream listener as extension point by @chr-hertel in #1394
- [Agent] Use old full FQCN for removed
StreamResultclass inUPGRADE.mdby @OskarStark in #1399 - [Platform] Change
TokenUsageAggregation::__constructfrom variadic to array by @OskarStark in #1398 - [Platform][TransformersPhp] Allow passing pipeline input options by @hwawshy in #1378
- [Platform] Move
TokenUsagetests to correct namespace by @OskarStark in #1405 - [Agent] Fix propagation of tokens on tool calls again by @chr-hertel in #1407
- [Agent] Clean up AgentProcessorTest of Toolbox by @chr-hertel in #1409
- [Platform] Add TokenUsageAggregation::count() and TokenUsageAggregation::add() by @chr-hertel in #1408
- Add
testsandphpunit.xml.distto export-ignore in .gitattributes by @sasezaki in #1413 - [Agent][Platform] Slim down stream listener and event api by @chr-hertel in #1414
- [Platform]
ElevenLabsApiCatalogfix on key / headers by @Guikingone in #1410 - [Platform] Use generic PlatformFactory for generic based factories by @lochmueller in #1403
- [Agent] Track sources and tokens across all tool calls by @chr-hertel in #1396
- [Store] Allow
idto beint|string|UuidforVectorDocumentandTextDocumentby @MolloKhan in #1397 - [Agent] ToolCallArgumentResolver use and implement interface by @chriskapp in #1416
- [Platform][ElevenLabs] Support
voice_settingsoptions by @laszlo-karpati in #1400 - [Demo] Lower store dependency for demo by @chr-hertel in #1417
- [Agent] Rename
SourceMaptoSourceCollection, its methods and add toToolResultdirectly by @chr-hertel in #1418 - [Platform][OpenRouter] Streamline openrouter specific routing and add bodybuilder by @lochmueller in #1421
- [Agent] Updates AsTool namespace by @NicolasGraph in #1420
- [Platform][OpenRouter] Add the new audio output capabilities by @lochmueller in #1422
- [Agent][Platform] Restrict phpdocumentor/reflection-docblock to ^5.4 by @OskarStark in #1426
- [Docs] Fix incorrect namespaces and add proper RST directives by @OskarStark in #1427
- [Platform] Rename
CachePlatformand split it as a separate package by @Guikingone in #1339 - [Agent] Introduce the
Ollamatool for web search / webpage fetch by @Guikingone in #1411 - Bump deptrac for SF 8 by @chr-hertel in #1430
- [Agent] Support limiting iteration loop when tool calling by @lochmueller in #1429
- [Agent] Enforce pipeline installs PR-specific platform component by @chr-hertel in #1419
- [Agent] Implement countable and iterator of SourceCollection by @chr-hertel in #1431
- [Mate] Add mcp:tools:call command for tool execution via JSON input by @wachterjohannes in #1412
- [Agent][Platform] Generalize Stream Metadata Propagation by @chr-hertel in #1415
- Print table of sources by @chr-hertel in #1432
- [Platform] Move StructuredOutputSerializer to feature namespace by @chr-hertel in #1433
- [Examples] Update Weaviate Image by @chr-hertel in #1435
- [Demo][Examples] Small fixes while testing for release: Add rate-limiter to examples, css and model fixes by @chr-hertel in #1434
- [Mate] Add agent-instructions support for MCP extensions by @wachterjohannes in #1425
- [Platform][Perplexity] Fix Metadata handling on Perplexity streams by @chr-hertel in #1436
- [Mate][Symfony] Add optional profiler data access capabilities by @wachterjohannes in #1320
- Add branch-alias to bump tool by @chr-hertel in #1443
- CS follows Symfony rules update by @chr-hertel in #1445
- [Demo] Update config reference of demo by @chr-hertel in #1449
- [AI Bundle] Switching profiler logo to Symfony "AI" logo by @chr-hertel in #1450
- [Platform] Allow response_format option without class-string by @chr-hertel in #1447
- Bump versions and aliases for v0.3.0 release by @chr-hertel in #1444
New Contributors
- @sasezaki made their first contribution in #1413
- @chriskapp made their first contribution in #1416
- @laszlo-karpati made their first contribution in #1400
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
- [Mate] Add descriptions to CLI commands by @Nyholm in #1286
- [Mate] Add bridges to CI by @Nyholm in #1291
- [Mate] Add missing tests for Capability tools by @wachterjohannes in #1287
- [Mate] add github template for mate component to close PRs by @Nyholm in #1294
- [Store] Add github template for mate component to close PRs by @Nyholm in #1295
- [Mate] Support SF5.4 and SF6.4 by @Nyholm in #1292
- [Mate] Use compiled container by @Nyholm in #1260
- [Mate] Add command to stop running server by @Nyholm in #1280
- [Mate] Remove $_ENV['MATE_ROOT_DIR'] by @Nyholm in #1297
- [Mate] Add support for _composer_autoload_path super global by @Nyholm in #1296
- [Mate] Refactor ContainerFactory to extract mixed concerns by @wachterjohannes in #1288
- Fix CS by @OskarStark in #1300
- Remove deptrac for Symfony 8 in CI by @OskarStark in #1303
- [Run examples] Fix build-packages path in run-examples workflow by @OskarStark in #1304
- [AI Bundle] Remove suffix from aliased arguments for injection by @bigdevlarry in #1285
- Remove redundant
phpstan/phpstan-strict-rulespackage from rootcomposer.jsonby @OskarStark in #1305 - Update doctor-rst version directives to 0.2 by @OskarStark in #1307
- Update
CLAUDE.mdandAGENTS.mdby @OskarStark in #1308 - Add
prefer-stableto rootcomposer.jsonby @OskarStark in #1306 - [Demo] Exclude
demo/matefolder from PHP-CS-Fixer by @OskarStark in #1309 - [Platform] Cleanup Structured Output PlatformSubscriber by @chr-hertel in #1312
- [Platform] Add Whisper verbose support by @chr-hertel in #1313
- [Platform][OpenAI] Add whisper verbose feature to changelog by @chr-hertel in #1314
- [Demo] Add bundle and chroma recipe to demo app by @chr-hertel in #1316
- [Mate] Rename ComposerTypeDiscovery to ComposerExtensionDiscovery by @wachterjohannes in #1318
- [Mate] Refactor discovery loader to extract per-extension logic by @wachterjohannes in #1319
- Remove redundant
doctrine/dbaldependency from examples by @OskarStark in #1327 - [Chat] Fix
Cloudflareon pagination while creating/dropping namespaces by @Guikingone in #1284 - [Mate] Add
debug:capabilitiescommand by @wachterjohannes in #1293 - [Mate] Add
debug:extensionscommand by @wachterjohannes in #1325 - [CI] Improvements by @OskarStark in #1328
- [Store] Change
StoreInterface::add()from variadic toVectorDocument|arrayparameter by @OskarStark in #1298 - [Gemini] Add example by @aszenz in #1322
- [AI Bundle][VertexAI] Add
http_clientoption configuration by @OskarStark in #1329 - [Mate] Put log file inside
mate.root_dirby @Nyholm in #1299 - [Platform][Gemini][VertexAI] Fix nullable parameter type handling in
ToolNormalizerby @OskarStark in #1330 - [Chat] Fix keys access for
Cloudflareby @Guikingone in #1331 - [Agent][Demo] Remove variadic argument on memory feature by @chr-hertel in #1317
- [AI Bundle][Platform][TransformersPhp] Allow configuring platform via bundle config by @hwawshy in #1341
- Use current google models in the examples by @lochmueller in #1342
- [Mate] CS fixes by @lochmueller in #1343
- [Mate] Remove exception factory methods by @wachterjohannes in #1326
- [Platform] Remove variadics from
ChoiceResultconstructor by @chr-hertel in #1346 - [Mate] Add error handling for PID file creation in ServeCommand by @wachterjohannes in #1333
- [Mate] Improve error message handling in Logger exception path by @wachterjohannes in #1335
- [Mate] Refactor ComposerExtensionDiscovery to improve code quality by @wachterjohannes in #1336
- [Platform][Ollama] Fix request options for client by @sonnymilton in #1290
- [Mate] Revert " Execute PHP-CS-Fixer" by @chr-hertel in #1347
- [Platform] Better error handling for structure output by @lochmueller in #1348
- [Platform][VertexAI] Add support for API key authentication by @nicodemuz in #1139
- [Platform][AIMLAPI] Fix AIML API example with Gemini model by @chr-hertel in #1349
- [Chat] Adding document support to message normalizer by @Muneer-Shafi in #1332
- [Platform][OpenRouter] Add streaming and structure output capabilities by @lochmueller in #1345
- [AI Bundle] Only throw if a store is actually configured by @chr-hertel in #1350
- Bump branch alias to 0.2.x-dev by @chr-hertel in #1351
- [Platform] Change on
PlainConverternamespace by @Guikingone in #1352 - [AI Bundle][Platform][TransformersPhp] Convert vector result by @hwawshy in #1344
- [Mate] Add file size protection to prevent memory issues in LogReader by @wachterjohannes in #1334
- [Platform][TransformersPhp] Fix dependency by @OskarStark in #1353
- [AI Bundle][Agent][Store] Require symfony/ai-platform ^0.2 by @OskarStark in #1354
- [Platform] Require symfony/ai-platform ^0.2 in all bridges by @OskarStark in #1355
- [Platform] Add
FailoverPlatformby @Guikingone in #1126 - [Store][MariaDb][Postgres] Fix store for Doctrine DBAL 4 by @lyrixx in #1359
- [Store] Update
forceoption description by @Guikingone in #1361 - [Core] Change tests
executionOrderto random by @Guikingone in #1357 - Update
CLAUDE.md&AGENTS.mdby @OskarStark in #1363 - Fix AGENTS.md header and description by @OskarStark in #1364
- [Platform][Mistral] Extend catalog - add devstral open models by @igornast in #1365
- [Core] Update CI scripts on demo by @Guikingone in #1366
- Update composer.json by @OskarStark in #1362
- [Demo] Update for 0.1 changes recipes & config by @chr-hertel in #1368
- Hide binary output in by subprocesses in runner by @chr-hertel in #1369
- Prepare for release v0.2 by @chr-hertel in #1360
New Contributors
- @bigdevlarry made their first contribution in #1285
- @hwawshy made their first contribution in #1341
- @nicodemuz made their first contribution in #1139
- @igornast made their first contribution in #1365
Full Changelog: v0.1.0...v0.2.0