Releases: dotnet/extensions
Releases · dotnet/extensions
v10.0.0
What's Changed
- Give FunctionInvokingChatClient span a more OTELy name by @verdie-g in #6911
- Update repository branding from 9.10 to 10.0 by @Copilot in #6907
- Clean up local function names in AIFunctionFactory by @Copilot in #6909
- Update OpenTelemetryChatClient to output data on all tools by @stephentoub in #6906
- Update ToChatResponse{Async} to also factor in AuthorName by @stephentoub in #6910
- add support for background responses by @SergeyMenshykh in #6854
- Fix
METGEN004error message: print return type inErrorInvalidMethodReturnTypeby @eduherminio in #6905 - Fix OpenTelemetryChatClient failing on unknown content types by @stephentoub in #6915
- Add support for Connector ID and other follow ups by @jozkee in #6881
- Update AI lib changelogs by @stephentoub in #6920
- Merge internal changes by @joperezr in #6921
- Add Workstream, Stage, and PackageValidationBaselineVersion metadata to ServiceDiscovery libraries by @Copilot in #6919
- Add back Uri ctor to HostedMcpServerTool by @jozkee in #6926
- Set DisableNETStandardCompatErrors in ServiceDiscovery libraries by @eerhardt in #6927
- Update Package validation baseline version to 9.10.0 by @Copilot in #6922
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #6802
- Extend service discovery to support Consul-based DNS lookups: by @bart-vmware in #6914
- Update AsOpenAIResponseItems to roundtrip User AIContent ResponseItems by @stephentoub in #6931
- Special-case AIContent returned from AIFunctionFactory.Create AIFunctions to not be serialized by @stephentoub in #6935
- Preserve function content in
SummarizingChatReducerby @MackinnonBuck in #6908 - Tool reduction by @MackinnonBuck in #6781
- Fix coalescing of TextReasoningContent with ProtectedData by @stephentoub in #6936
- Doc updates by @gewarren in #6930
- Support DisplayNameAttribute for name resolution in AI libraries by @Copilot in #6942
- Fix EquivalenceEvaluator MaxOutputTokens to meet Azure OpenAI minimum requirement by @Copilot in #6948
- Support DefaultValueAttribute in AIFunctionFactory parameter handling by @Copilot in #6947
- Bump vite from 6.3.6 to 6.4.1 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript by @dependabot[bot] in #6938
- Introduce Microsoft.Extensions.DataIngestion.Abstractions by @adamsitnik in #6949
- Update to latest schema version (accepted by MCP registry) by @joelverhagen in #6956
- Introduce IngestionChunkWriter build on top of MEVD by @adamsitnik in #6951
- Update AI Chat Web dependencies by @MackinnonBuck in #6955
- Add AITool -> OpenAI.Responses.ResponseTool conversion utility by @rogerbarreto in #6958
- Update AI changelogs for 9.10.1 by @stephentoub in #6950
- Add Name property to OtelMessage to store ChatMessage.AuthorName per OpenTelemetry semantic conventions by @Copilot in #6953
- Fix serialization of UserInputRequest/ResponseContent by @stephentoub in #6962
- Expose building blocks for external service discovery implementations by @bart-vmware in #6946
- Bump validator from 13.15.0 to 13.15.20 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript by @dependabot[bot] in #6974
- Add eng/sdl-tsa-vars.config for TSA integration by @Copilot in #6980
- Add CodeInterpreterToolCall/ResultContent content types by @stephentoub in #6964
- Update to 1.38 of the otel genai standard convention by @stephentoub in #6981
- Introduce set of built-in Enrichers by @adamsitnik in #6957
- Allow ChatOptions.ConversationId to be an OpenAI conversation ID with Responses by @stephentoub in #6960
- Fix warning breaking official build, enable warningAsError in all pipelines by @ericstj in #6988
- Introduce HeaderChunker by @adamsitnik in #6979
- Introduce Markdown readers by @adamsitnik in #6969
- Add usage telemetry for aieval dotnet tool by @shyamnamboodiripad in #6773
- Update to OpenAI 2.6.0 by @stephentoub in #6996
- Don't specify MaxOutputTokens for EquivalenceEvaluator by @shyamnamboodiripad in #7006
- Fix Assert.Throws to validate parameter names by @stephentoub in #7007
- [MEDI] Remove collection key type workaround by @adamsitnik in #7010
- Enable binskim to extract packages by @ericstj in #6989
- Added net10.0 targeting to all packages and flowed RC2 dependency versions. by @joperezr in #6995
- [MEDI] Pipeline by @adamsitnik in #6993
- Add Semantic Similarity chunker by @KrystofS in #6994
New Contributors
- @SergeyMenshykh made their first contribution in #6854
- @bart-vmware made their first contribution in #6914
Full Changelog: v9.10.0...v10.0.0
v9.10.0
What's Changed
- Branding updates for 9.10 by @Copilot in #6769
- Doc improvements by @gewarren in #6794
- Bump vite from 6.3.5 to 6.3.6 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript by @dependabot[bot] in #6793
- Updated changelogs for AI libs by @stephentoub in #6787
- Update MCP server template by @jeffkl in #6772
- Add support for using ConversationID for AzureOpenAI and OpenAI by @ViveliDuCh in #6770
- Merging internal commits by @joperezr in #6801
- Merge changes from release/9.9 branch by @joperezr in #6803
- Support keyed HybridCache with keyed DistributedCaches and named options by @kelly-yinn in #6694
- Inventory as code by @wtgodbe in #6820
- Increase output token limit for EquivalenceEvaluator by @shyamnamboodiripad in #6835
- Fix KeyNotFoundException on HttpRequestLatencyListener.OnEventWritten for uknown event sources by @ssmelov in #6821
- Add project name normalization to match aspire's code generator logic by @ViveliDuCh in #6818
- Disable really noisy analyzers, part 1 by @stephentoub in #6837
- Fix
KeyNotFoundExceptioninHttpRequestLatencyListener.OnEventWrittenby @pentp in #6823 - Update global.json to use .NET 9.0.0 stable instead of RC 1 by @Copilot in #6846
- Add measures and tags with mediator object to the HttpClientLatencyLogEnricher by @rainsxng in #6783
- Add comprehensive .github/copilot-instructions.md for dotnet/extensions repository by @Copilot in #6792
- Update to .NET 10 SDK by @eerhardt in #6863
- Update Microsoft.Extensions.AI changelog files with current NuGet versions by @Copilot in #6849
- Fix GenerateImagesAsync_SingleImageGeneration integration test by @stephentoub in #6843
- Re-enable IDE0032 by @stephentoub in #6866
- Add OpenTelemetrySpeechToTextClient and friends by @stephentoub in #6845
- Update
ModelContextProtocolversion in MCP template by @MackinnonBuck in #6870 - Scope Ollama resilience settings to Web/Program.cs and restore ServiceDefaults by @ViveliDuCh in #6850
- Update Aspire by @Varorbc in #6858
- Update MCP template for new registry specification by @Copilot in #6796
- Add support for
HostApplicationBuilderin AmbientMetadata extension by @eduherminio in #6867 - Fix mcpserver test baselines by @jeffhandley in #6874
- Move Microsoft.Extensions.ServiceDiscovery to dotnet/extensions by @eerhardt in #6868
- Add copy constructors to option types (ChatOptions, etc.) by @stephentoub in #6882
- Fix ChatMessage.CreatedAt being always overwritten by the latest timestamp. by @Copilot in #6885
- Small doc fixes by @gewarren in #6887
- Update AI changelogs with some recent additions by @stephentoub in #6886
- Fix Assistants IChatClient handling of unrelated tool calls in history by @stephentoub in #6891
- Fix duplication between OpenAI Assistants pre-configured tools by @stephentoub in #6896
- Update MCP Server Template to adhere to 2025-09-29 server.json schema by @joelverhagen in #6888
- Remove Azure.AI.OpenAI dependency from templates and tests by @Copilot in #6873
- Remove UnsafeRelaxedJsonEscaping by @peterwald in #6899
- Fix bug to yield remaining buffered FCC by @westey-m in #6903
- Fix serialization of [Experimental] AIContent-derived types by @stephentoub in #6900
New Contributors
- @westey-m made their first contribution in #6745
- @jeffkl made their first contribution in #6772
- @ViveliDuCh made their first contribution in #6770
- @kelly-yinn made their first contribution in #6694
- @ssmelov made their first contribution in #6821
- @Varorbc made their first contribution in #6858
Full Changelog: v9.9.0...v9.10.0
v9.9.0
Highlights
AI
- Abstractions for remote MCP servers; response/approval flow support via new experimental types
- Function approvals via new experimental types (e.g.,
ApprovalRequiredAIFunction, user input/approval request & response content). - Reasoning text streaming for OpenAI Responses ChatClient streaming.
AIFunctionsplit into a base class to improve extensibility.IChatReducermoved toMicrosoft.Extensions.AI.Abstractions.- Updated to OpenAI 2.4.0 and genai standard convention 1.37.
- Coalescing logic now treats
ChatMessage.Rolechanges as new messages. GetResponseAsync<T>now reads only the last message (bug fix).- OpenTelemetry ChatClient/EmbeddingGenerator logs raw additional properties (no key mangling).
- Fixed empty annotated text chunk handling in streaming with OpenAI Assistants.
Telemetry & Diagnostics
- HTTP diagnostics log query string params with proper redaction (emitted on
url.query). server.addresstelemetry emits host only (per OpenTelemetry semantic conventions).- Heuristics added to detect well-known model hosts.
- Resource monitoring can consider
Environment.CpuUsage.
New Contributors
- @ykumashev made their first contribution in #6696
Full Changelog: v9.8.0...v9.9.0
v9.8.0
What's Changed
- Align EventId generation with M.E.Logging source-gen by @xakep139 in #6566
- Add resiliency mechanism to CPU and memory utilization checks by @amadeuszl in #6528
- Suppress flaky test until fixed by @joelverhagen in #6568
- Create a project template for an MCP server by @joelverhagen in #6547
- Use dnx instead of dotnet tool exec in MCP server template README by @joelverhagen in #6571
- Add reporting tests that show NLP results. by @peterwald in #6574
- Branding updates for 9.8.0 by @joperezr in #6573
- Fix
ConfigureEvaluationTests.ps1script when$ConfigRootis not supplied by @peterwald in #6575 - Refactor Resource Monitoring by @evgenyfedorov2 in #6554
- Update McpServer template for 0.3.0-preview.2 by @stephentoub in #6578
- Add container.cpu.time metric by @evgenyfedorov2 in #5806
- Add netstandard2.0 compatibility to Microsoft.Extensions.Diagnostics.Testing and dependencies by @bdovaz in #6219
- Add netstandard2.0 compatibility to Microsoft.Extensions.Telemetry and dependencies by @bdovaz in #6218
- Simplify Http.Diagnostics by @pentp in #6174
- Add netstandard2.0 compatibility to Microsoft.Extensions.Http.Resilience and dependencies by @bdovaz in #6582
- Ingore null loggers returned by LogProviders in ELoggerFactory by @petrroll in #6585
- Merging changes from internal by @joperezr in #6588
- [Logging] Fixes LogProperties and LogPropertyIgnore attributes to work if an object being logged resides in a different assembly than the logging method by @iliar-turdushev in #6600
- Add memory usage metric by @evgenyfedorov2 in #6586
- Add schema version to server.json in MCP template by @joelverhagen in #6606
- Merge release/9.7 into main by @joperezr in #6589
- Update MCP server template readme to show both VS Code and Visual Studio notes by @Copilot in #6591
- Update Azure Open AI package referenced by eval integration tests by @shyamnamboodiripad in #6609
- Target .NET 8 for more stable runtime requirement by @joelverhagen in #6617
- Add support for new Azure AI Foundry project type for Safety evals by @shyamnamboodiripad in #6621
- M.E.AI.AzureAIInference - Azure.AI.Inference Package Bump by @rogerbarreto in #6624
- Add DataContent.Name property by @stephentoub in #6616
- Fix handling of multiple responses messages by @stephentoub in #6627
- Expose additional chat model conversion helpers by @stephentoub in #6629
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #6633
- [Http.Resilience] The DisableFor method should try to retrieve the request object from the resilience context by @iliar-turdushev in #6618
- Bump Package validation baseline version to 9.7.0 by @Copilot in #6650
- Fix internal package version detection for project templates by @MackinnonBuck in #6651
- Remove
Microsoft.Extensions.AI.Ollamaby @MackinnonBuck in #6655 - Fix M.E.AI package refs by @stephentoub in #6654
- Add [Description] to DataContent.Uri by @stephentoub in #6615
- Fix duplicate solution file when creating an AI Chat Web app from VS by @MackinnonBuck in #6653
- Add ChatMessage.CreatedAt by @stephentoub in #6657
- Add TextContent.Annotations by @stephentoub in #6619
- Add FunctionInvokingChatClient.AdditionalTools by @stephentoub in #6661
- Fix unintentional test env var change by @stephentoub in #6660
- Add more openai conversion helpers by @stephentoub in #6662
- Add OriginalRepoCommitHash to assemblies by @BrennanConroy in #6667
- Include a trivial items keyword if missing. by @eiriktsarpalis in #6669
- Add resolution of function parameter level data annotation attributes. by @eiriktsarpalis in #6671
- Fix issue with NetSourceIndexStage1 for dependency conflict versions by @joperezr in #6672
- Expose streaming conversion utility methods by @stephentoub in #6636
- Couple of fixes for MEAI.Evaluation by @shyamnamboodiripad in #6673
- Fix one more version conflict on the docs transport package by @joperezr in #6675
- Introduce metadata to identify built-in evaluation metrics by @shyamnamboodiripad in #6674
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #6679
- Emit {OriginalFormat} in HttpClient logger by @iliar-turdushev in #6682
- Update to OpenAI 2.3.0 by @stephentoub in #6684
- Remove AdjustTime from experimental by @amadeuszl in #6668
- Allow custom filtering logic for FakeLogger by @Demo30 in #5848
- Mark packages as stable and update to .NET Servicing versions by @joperezr in #6700
- [release/9.8] Backport several AI-related PRs by @stephentoub in #6703
- [release/9.8] Update Azure.AI.OpenAI by @github-actions[bot] in #6710
- [release/9.8] Add support for text-to-image by @ericstj in #6711
- [release/9.8] Use Azure hosting integrations in Aspire AI Chat Web template by @MackinnonBuck in #6712
- [release/9.8] Add middleware for reducing chat history by @github-actions[bot] in #6713
New Contributors
- @joelverhagen made their first contribution in #6568
- @bdovaz made their first contribution in #6219
- @petrroll made their first contribution in #6585
Full Changelog: v9.7.0...v9.8.0
v9.7.2
Packages Released
What's Changed
- Target .NET 8 for more stable runtime requirement by @joelverhagen in #6617
Full Changelog: v9.7.1...v9.7.2
v9.7.1
Packages Released
- Microsoft.Extensions.AI 9.7.1
- Microsoft.Extensions.AI.Abstractions 9.7.1
- Microsoft.Extensions.AI.OpenAI 9.7.1-preview.1.25365.4
- Microsoft.Extensions.AI.AzureAIInference 9.7.1-preview.1.25365.4
- Microsoft.Extensions.AI.Templates 9.7.1-preview.3.25365.4
What's Changed
- Merging changes from internal by @joperezr in #6588
- Bump FunctionInvokingChatClient.MaximumIterationsPerRequest from 10 to 40 by @stephentoub in #6599
- Expose M.E.AI.OpenAI input message conversions by @stephentoub in #6601
- Add schema version to server.json in MCP template by @joelverhagen in #6606
- Update MCP server template readme to show both VS Code and Visual Studio notes by @jeffhandley in #6591
- Fix schema generation for Nullable function parameters. by @eiriktsarpalis in #6596
- Branding updates for 9.7.1 by @joperezr in #6611
- Add DelegatingAIFunction by @stephentoub in #6565
- Add FunctionInvokingChatClient.FunctionInvoker delegate by @stephentoub in #6564
- Enable specifying "strict" for OpenAI clients via ChatOptions by @stephentoub in #6552
- AIFunctionFactory: tolerate JSON string function parameters. by @eiriktsarpalis in #6572
- AIFunctionFactory: add test coverage for JSON comments. by @eiriktsarpalis in #6576
- Update M.E.AI.OpenAI for latest OpenAI release by @stephentoub in #6577
- Update OpenTelemetry semantic conventions version from 1.35 to 1.36 by @Copilot in #6579
- AIFunctionFactory: add a flag for disabling return schema generation. by @eiriktsarpalis in #6551
- Bump FunctionInvokingChatClient.MaximumIterationsPerRequest from 10 to 40 by @stephentoub in #6599
- Expose M.E.AI.OpenAI input message conversions by @stephentoub in #6601
- Fix schema generation for Nullable function parameters. by @eiriktsarpalis in #6596
Full Changelog: v9.7.0...v9.7.1
v9.7.0
What's Changed
- Branding updates for 9.7 by @joperezr in #6495
- Fix name of genai input/output tokens tag by @stephentoub in #6494
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #6503
- Improve handling of RawRepresentation in OpenAI{Response}ChatClient by @stephentoub in #6500
- Bring back AsIChatClient for OpenAI AssistantClient by @stephentoub in #6501
- Add resiliency to Resource Monitoring in Linux by @amadeuszl in #6489
- Merging changes from the internal fork by @joperezr in #6508
- Workaround OpenAI assistant's RunCreationOption's tools override by @stephentoub in #6512
- Add ChatOptions.Instructions by @stephentoub in #6505
- Introduce evaluators for agentic workflows by @shyamnamboodiripad in #6514
- Allow a CachingChatClient to control per-request caching by @stephentoub in #6524
- Tweak OpenAI JSON schema transforms by @stephentoub in #6523
- Merging changes from release/9.6 branch by @joperezr in #6516
- Augment AIJsonUtilities.CreateJsonSchema for more types and annotations by @stephentoub in #6540
- Added conversions from AIFunction to various OpenAI tools by @KrzysztofCwalina in #6539
- Add SpeechToTextResponse.Usage by @stephentoub in #6546
- Implement BLEU score evaluation for NLP tests by @peterwald in #6537
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro[bot] in #6553
- #5962 Change to early return of OS instead of throwing by @juliankock in #5963
- Mark log sampling & buffering API as stable by @evgenyfedorov2 in #6534
- Update GenAI otel impl for v1.35 by @stephentoub in #6557
- Implement GLEU and F1 NLP evaluators by @peterwald in #6555
- Update tokenizer algorithm to use is [..] by @peterwald in #6561
- Rename some constants to match convention by @shyamnamboodiripad in #6562
- Add DistributedCachingChatClient/EmbeddingGenerator.AdditionalCacheKeyValues by @stephentoub in #6558
New Contributors
- @KrzysztofCwalina made their first contribution in #6539
- @juliankock made their first contribution in #5963
Full Changelog: v9.6.0...v9.7.0
v9.6.0
What's Changed
- Branding updates for 9.6.0 by @joperezr in #6399
- Add log buffering info to README.md by @evgenyfedorov2 in #6403
- Fix dynamic config update for log buffering by @evgenyfedorov2 in #6435
- Remove unused select param from CreateRecordsForDocumentAsync by @jongalloway in #6341
- Merge internal changes by @joperezr in #6437
- Reduce per-lookup overhead from key validation in HybridCache by @MihaZupan in #6441
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #6443
- Merge release/9.5 into main by @joperezr in #6448
- Fix up comments in eval API json files by @shyamnamboodiripad in #6452
- Remove preview tag on Azure DevOps extension by @peterwald in #6456
- Bump PackageValidation against 9.5.0 and enable for stable MEAI packages by @joperezr in #6458
- Fix paramref tag by @gewarren in #6459
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #6462
- Add a script to diff the contents of folders that match a specific pattern across two branches by @shyamnamboodiripad in #6453
- Remove
titleanddescriptionkeywords from root-level schemas in AIFunctionFactory. by @eiriktsarpalis in #6465 - Replace JSON vector store with SQLite by @MackinnonBuck in #6438
- Update chat template
Microsoft.SemanticKerneldependency to 1.53.0 by @MackinnonBuck in #6470 - Update chat template external dependencies by @MackinnonBuck in #6471
- Exclude provider URI from cache key computation by default by @shyamnamboodiripad in #6473
- Make hashing stable w.r.t. indentation settings and property ordering. by @eiriktsarpalis in #6476
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #6481
- Add default value for namedArg in Microsoft.Gen.Metrics.parser by @BowenYang666 in #6238
- Update OpenTelemetryChatClient to 1.34 by @stephentoub in #6466
- Delete M.E.AI changelog files by @stephentoub in #6467
- Add comma to remarks by @gewarren in #6485
- Implement disk io metrics for linux by @makazeu in #6374
- Add
AIFunction.ReturnJsonSchemaby @eiriktsarpalis in #6447
New Contributors
- @MihaZupan made their first contribution in #6441
- @BowenYang666 made their first contribution in #6238
Full Changelog: v9.5.0...v9.6.0
v9.5.0
What's Changed
- Add TextReasoningContent by @stephentoub in #6222
- Use ErrorContent in OpenAIResponseChatClient by @stephentoub in #6231
- OpenAI: Parse detail additional property by @jozkee in #6225
- Branding updates for 9.5 by @joperezr in #6233
- In telemetry, treat AdditionalProperties as sensitive by @SteveSandersonMS in #6239
- Use SHA384 and make key more explicit by @SteveSandersonMS in #6237
- Disable STJ default reflection and fix a number of failing tests. by @eiriktsarpalis in #6241
- Add button to report to download dataset as JSON by @peterwald in #6243
- Introduce Content Safety evaluators by @shyamnamboodiripad in #6223
- Bump vite from 6.2.4 to 6.2.5 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript by @dependabot in #6249
- Only display tags from the latest execution by @shyamnamboodiripad in #6251
- Avoid duplicate data in downloaded report file by @shyamnamboodiripad in #6252
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #6253
- Remove use of ConfigureAwait from Microsoft.Extensions.AI.dll for AIFunction invocations by @stephentoub in #6250
- Update dev-server data import to reflect runtime import quirks by @peterwald in #6257
- [release/9.2] Merging internal changes by @joperezr in #6263
- Merging release/9.4 changes by @joperezr in #6264
- Add logging buffering by @evgenyfedorov2 in #5635
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #6270
- Add test for optional parameters being required with RequireAllProperties by @jozkee in #6265
- Add fuzzy filtering to the evaluation reports by @peterwald in #6262
- Updating package validation version to 9.4.0 by @joperezr in #6272
- Adding reference to an unsupported built-in tool on OpenAI Chat API no longer throws by @artl93 in #6276
- Update M.E.AI changelogs by @stephentoub in #6269
- Add missing reference to M.E.AI.OpenAI in chat template by @MackinnonBuck in #6275
- Fix two paramref tags by @gewarren in #6281
- Support response caching for safety evaluators by @shyamnamboodiripad in #6277
- Bump vite from 6.2.5 to 6.2.6 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript by @dependabot in #6287
- Display images in conversation for report by @shyamnamboodiripad in #6286
- Augment UseDistributedCache XML docs by @stephentoub in #6256
- Update README.md with keyless auth guidance by @jmatthiesen in #6261
- Augment AIFunctionFactory.Create XML docs by @stephentoub in #6255
- Rename EmbeddingGeneratorExtensions.GenerateEmbedding extension methods by @roji in #6295
- Augment FunctionInvokingChatClient's span with token counts by @stephentoub in #6296
- Rename ChatThreadId to ConversationId by @SteveSandersonMS in #6300
- Repackage azure-devops-extensions-api to fix Azure DevOps report plugin by @peterwald in #6299
- Fix build error by @shyamnamboodiripad in #6301
- Add note on extending timeout for Ollama client by @jongalloway in #6258
- Improve CPU metrics calculations for CgroupV2 by @nivebb8 in #6289
- Restore deleted members as obsolete by @jeffhandley in #6304
- move to AwesomeAssertions by @danmoseley in #6308
- Update chat template dependencies, fix OpenAI/Aspire config, and address build warnings by @MackinnonBuck in #6280
- Support [FromKeyedServices] in AIFunctionFactory by @stephentoub in #6310
- Introduce Context property on EvaluationMetric by @shyamnamboodiripad in #6316
- Utilize IServiceProviderIsService in AIFunctionFactory by @stephentoub in #6317
- Fix Process Metric calculation in CgroupsV2 by @nivebb8 in #6321
- Remove the abstraction for token counting from the main evaluation API by @shyamnamboodiripad in #6320
- Remove AsChatClient/AsEmbeddingGenerator APIs by @jeffhandley in #6327
- Add ChatOptions.AllowMultipleToolCalls by @SteveSandersonMS in #6326
- Disable default required property schema generation and OpenAI strict mode. by @eiriktsarpalis in #6285
- Accessibility fixes for the HTML report by @peterwald in #6329
- Add Windows disk I/O metrics to ResourceMonitoring by @makazeu in #6181
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #6336
- Update prompts for quality evaluators by @shyamnamboodiripad in #6328
- Reduce allocations in LogSamplingRuleSelector by @evgenyfedorov2 in #6339
- A couple of minor fixes by @shyamnamboodiripad in #6340
- Update readmes by @shyamnamboodiripad in #6345
- Expose AIContent constructor by @stephentoub in #6346
- Add PDF support to OpenAI AsIChatClient by @stephentoub in #6344
- Make
CreateJsonSchematolerate JSO inputs that don't have a resolver set. by @eiriktsarpalis in #6348 - Skip messages that have no text when rendering conversations as part of evaluation prompts by @shyamnamboodiripad in #6349
- Enhance Function Invocation Extensibility for Microsoft.Extensions.AI by @rogerbarreto in #6325
- Upgrade to Issue Labeler v2.0.0 by @jeffhandley in #6357
- Issue Labeler - Predict PR labels for main and dev branches by @jeffhandley in #6358
- Update CHANGELOGS for M.E.AI libs by @stephentoub in #6359
- Add project template build tests + CG reporting by @MackinnonBuck in #6355
- Fix keys for EvaluationResult.Metrics dictionary to reflect the correct metric names for Safety evaluators by @shyamnamboodiripad in #6361
- Update branding for Azure service used by Safety evaluators by @shyamnamboodiripad in #6362
- Use ConversationId instead of ChatThreadId in README by @gewarren in #6367
- Add Disk IO time metric for Windows in ResourceMonitoring by @makazeu in #6338
- Fix an issue in OSFileSystem's ReadAllByLines method where last line may be dropped by @makazeu in #6373
- Update OpenTelemetryChatClient/EmbeddingGenerator to 1.33 by @stephentoub in #6366
- Add AsIEmbeddingGenerator for Azure.AI.Inference ImageEmbeddingsClient by @stephentoub in #6363
- Add DataContent.Base64Data by @stephentoub in #6365
- Fix AIFunctionFactory handling of default struct arguments by @eiriktsarpalis in #6381
- Add JS dependency update instructions to chat template README by @MackinnonBuck in #6376
- Add see also links to conceptual docs by @gewarren in #6368
- Using nr_periods from cpu.stat to get time elapsed by @nivebb8 in #6335
- Translate OpenAI refusals to ErrorContent by @stephentoub in #6393
- Rename useJsonSchema parameter by @stephentoub in #6394
- Add JSON schema transformation functionality to
AIJsonUtilitiesby @eiriktsarpalis in #6383 - Remove CacheOptions from DiskBasedResponseCache by @shyamnamboodiripad in #6395
- Add back net9.0 version of the aieval dotnet tool by @shyamnamboodiripad i...
v9.4.0
What's Changed
- Fix various build failures by @RussKie in #6039
- Proposal for tweaks to IChatClient contract by @stephentoub in #5998
- Onboard dotnet/issue-labeler workflows for automated area labels by @jeffhandley in #6047
- Only predict area labels for PRs into main and dev by @jeffhandley in #6049
- Upgrade workflows to issue-labeler v1.0.1 by @jeffhandley in #6050
- Fix evaluation report generation by @shyamnamboodiripad in #6061
- Automatically add 'untriaged' label to new issues without milestones by @jeffhandley in #6060
- Address M.E.VectorData feedback for IEmbeddingGenerator by @stephentoub in #6058
- Fix grouping of ChatResponseUpdate into ChatMessage by @SteveSandersonMS in #6074
- Fix handling of empty messages in AzureAIInferenceChatClient by @stephentoub in #6072
- Update OpenTelemetryChatClient/EmbeddingGenerator to v1.31 of genai standard convention by @stephentoub in #6073
- Merging internal changes by @joperezr in #6081
- Merging release/9.3 branch into main by @joperezr in #6082
- Update ordering in CODEOWNERS by @shyamnamboodiripad in #6085
- Bump Package Validation by @joperezr in #6084
- Add types from AIJsonUtilities.JsonContext to reporting JsonContext by @peterwald in #6078
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #6097
- Introduce Reason property on EvaluationMetric by @shyamnamboodiripad in #6087
- [AI Evaluation] Add versioning to reporting and caching by @peterwald in #6070
- Add assignments for @dotnet/dotnet-extensions-ai-templates by @RussKie in #6105
- Test templates by @RussKie in #6086
- Add favicon for AiChatWeb template by @makazeu in #6104
- Move manual dependencies in correct group to reduce conflicts by @RussKie in #6108
- Memory usage in CG Slice path could be 0 by @makazeu in #6110
- Add an option to log unsupported route by @amadeuszl in #6077
- Fix tree expansion in evaluation report by @shyamnamboodiripad in #6107
- Use just-built packages in the AI chat template by default by @MackinnonBuck in #6096
- Avoid multiple enumerations of messages in FunctionInvokingChatClient by @stephentoub in #6119
- Add AsChatClient for OpenAIResponseClient by @stephentoub in #6103
- [AI extensions] Add jsonSchemaIsStrict option to OpenAI options mapping by @danielwinkler in #6064
- pin actions by @danmoseley in #6123
- Expose failed Verify asserts as CI artifacts by @RussKie in #6129
- Create a directory for the AIChatWeb template if name is specified by @makazeu in #6122
- Add AIJsonSchemaCreateOptions.IncludeParameter filter by @stephentoub in #6125
- Update html-reporting package dependencies by @peterwald in #6115
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #6131
- Fix AIFunctionFactory functions to fail for missing required parameters by @stephentoub in #6135
- Update changelogs for M.E.AI by @stephentoub in #6079
- Fix chat template test version scrubbing by @MackinnonBuck in #6140
- [Telemetry, Logging] Emit {OriginalFormat} as the last property of the log record by @iliar-turdushev in #6111
- HybridCache: richer detection for field-only types (ref STJ) by @mgravell in #6118
- [Http Resilience] Update instructions how to fix a compatibility issue with App Insights by @iliar-turdushev in #6147
- Fix indentation in chat template readme by @SteveSandersonMS in #6134
- In chat template, display preformatted/code snippet outputs sensibly by @SteveSandersonMS in #6137
- Use only a single TFM for M.E.AI.Eval.Reporting.Console by @peterwald in #6148
- Update algorithm spelling in /// by @gewarren in #6149
- Fix to show AI template config options in VS Code - Update framework symbol casing in chat template by @timheuer in #6117
- Extend M.E.AI.Evaluation.Console to support Azure Storage options by @peterwald in #6152
- Add license info to the Azure DevOps package by @peterwald in #6160
- Change AIFunction.InvokeAsync to accept AIFunctionArguments by @stephentoub in #6158
- Add some comments clarifying model choice for quality evaluators by @shyamnamboodiripad in #6165
- Fix build failing when running
./build.cmd -vs AImultiple times by @MackinnonBuck in #6171 - Update tsaoptions.json by @danmoseley in #6170
- Add MessageId to ChatMessage and ChatResponseUpdate by @SteveSandersonMS in #6172
- Enable custom argument binding with AIFunctionFactory by @stephentoub in #6162
- Enable JSON-schema based structured output by default by @SteveSandersonMS in #6159
- Simplify function calling error handling by @SteveSandersonMS in #6169
- Update to latest OpenAI, Azure.AI.OpenAI, and Azure.AI.Inference packages by @stephentoub in #6178
- Add custom result marshaling support to AIFunctionFactory by @stephentoub in #6175
- Fix dynamic config update for Random probabilistic sampler by @evgenyfedorov2 in #6187
- Unit test to show how function calling already permits resumption by @SteveSandersonMS in #6186
- Add "see also" links to conceptual docs by @gewarren in #6177
- Fix chat template input form submission on Firefox by @MackinnonBuck in #6188
- Support adding tags to scenarios by @shyamnamboodiripad in #6189
- Couple of minor reporting layout fixes by @shyamnamboodiripad in #6192
- A couple more minor eval report fixes by @shyamnamboodiripad in #6197
- Bump vite from 6.2.2 to 6.2.3 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript by @dependabot in #6190
- Enable AIFunctionFactory.Create to use Activator{Utilities}.Create by @stephentoub in #6193
- Remove experimental attribute from TagNameAttribute by @dariusclay in #6200
- Fix load order of ProjectStaging and restrict package version validation to only official builds by @RussKie in #6041
- Strip
defaultkeyword in generated schemas when RequireAllProperties is specified. by @eiriktsarpalis in #6204 - Template: Remove if'ed code for ollama by @jozkee in #6205
- Remove non-AsXx surface area from M.E.AI.OpenAI/AzureAIInference by @stephentoub in #6138
- Add Aspire support to chat template by @MackinnonBuck in #6102
- Add trending views for both leaf-level scenario runs and aggregated scenario groups. by @peterwald in #6207
- Update AI chat template dependencies by @MackinnonBuck in #6220
- Fix execution order when reporting from Azure by @peterwald in #6217
- Bump vite from 6.2.3 to 6.2.4 in /src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript by @dependabot in #6216
- Mirror integration tests for OllamaSharp by @jozkee in #6209
- Update otel semantic convention version in comment by @stephentoub in #6227
- Update README with Logging sampling information by @evgenyfedorov2 in #6226
- Lower M.E.AI ...