New release devlooped/Extensions.AI@v2.0.0 #72
kzu
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
v2 is a significant release with breaking changes across the entire library. The changes focus on
improved extensibility for chat client creation, namespace reorganization of provider-specific
types, and removal of components that are no longer needed.
Breaking Changes
ExtendedChatOptionsremovedExtendedChatOptions(and itsReasoningEffort/Verbosityproperties) has been removed fromDevlooped.Extensions.AI. Provider-specific options now live in their own namespaces.Before:
After (OpenAI-specific):
Verbositymoved toDevlooped.Extensions.AI.OpenAI,ReasoningEffortremovedBoth types have been moved out of the root namespace and into
Devlooped.Extensions.AI.OpenAI.ReasoningEfforthas been removed entirely.Verbosityis now anOpenAI-specific conceptsurfaced via
OpenAIChatOptions.The official MS.E.AI API now exposes
Reasoningoptions out of the box at theChatOptionslevel.ChatExtensionsno longer exposesReasoningEffort/Verbosityextension propertiesOnly
Verbosityis now an extension property onChatOptionsexposed byOpenAIExtensionsinDevlooped.Extensions.AI.OpenAI.OpenAIChatClient,AzureOpenAIChatClient, andAzureInferenceChatClientremovedThe three concrete chat client wrapper classes in
Devlooped.Extensions.AI.OpenAIhave beenremoved from the public API surface. Client creation is now handled by the new factory/provider
model (see below).
WebSearchToolmoved toDevlooped.Extensions.AI.OpenAIWebSearchToolhas moved fromDevlooped.Extensions.AItoDevlooped.Extensions.AI.OpenAIand its constructor parameter is now optional (
string? country = null). TheCity,Region,TimeZone, and a newAllowedDomainsproperty are now first-class properties on the typeinstead of extension properties.
OpenAIWebSearchToolExtensionshas been removed.Before:
After:
JsonConsoleOptions,JsonConsoleLoggingExtensions, and related types removedJsonConsoleOptionsand theUseJsonConsoleLoggingextensions (both forChatClientBuilderandClientPipelineOptions) have been removed from the library into their own separate package(
Devlooped.Extensions.AI.Console).ConfigurableChatClient.Optionsproperty removed; constructor changedThe
object? Optionsproperty has been removed fromConfigurableChatClient. The constructornow accepts an explicit
configurecallback parameter rather than deriving configuration fromthe
Optionsproperty.AddChatClientsgains auseDefaultProvidersparameterThe
AddChatClientsextension methods onIServiceCollectionandIHostApplicationBuildernowhave an additional
bool useDefaultProviders = trueparameter. This is a source-compatibleaddition but callers passing arguments by position should verify their call sites.
New Features
Factory/Provider model for chat client creation (
IChatClientFactory,IChatClientProvider,ChatClientFactory)v2 introduces a first-class extensibility model for how
IChatClientinstances are resolvedfrom configuration. The three key types are:
IChatClientProvider— implement this to support a new AI provider. ExposesProviderName,BaseUri,HostSuffix, and aCreate(IConfigurationSection)method.IChatClientFactory— takes a collection ofIChatClientProviderinstances and resolvesthe right one for a given configuration section.
ChatClientFactory— the default implementation. OverrideResolveProviderorMatchesBaseUrito customise resolution logic. UseChatClientFactory.CreateDefault()toget a factory pre-loaded with the built-in providers.
ChatClientFactoryExtensions— DI registration helpersNew extension methods on
IServiceCollectionandIHostApplicationBuilderfor registering thefactory and providers:
Chatstatic factory forChatMessageA new
Chatclass provides concise static factory methods for constructingChatMessageobjects:OpenAIChatOptionsA new
OpenAIChatOptionsclass inDevlooped.Extensions.AI.OpenAIgroups OpenAI-specific chatoptions (currently
Verbosity) in a single place, consistent with how options are structuredfor other providers.
WebSearchTool.AllowedDomainsThe moved
WebSearchToolnow exposes anAllowedDomainsproperty (string[]?) for restrictingsearch results to specific domains.
What's Changed
✨ Implemented enhancements
🔨 Other
Full Changelog: devlooped/Extensions.AI@v1.0.0...v2.0.0
Sponsors
The following sponsors made this release possible: @clarius, @MFB-Technologies-Inc, @sandrock, @drivenet, @Keflon, @tbolon, @kfrancis, @unoplatform, @rbnswartz, @jfoshee, @Mrxx99, @eajhnsn1, @Jonathan-Hickey, @KenBonny, @SimonCropp, @agileworks-eu, @arsdragonfly, @vezel-dev, @ChilliCream, @4OTC, @DominicSchell, @adalon, @Eule02, @torutek, @mccaffers, @SeikaLogiciel, @wizardness.
Thanks 💜
🔗 View Release
Beta Was this translation helpful? Give feedback.
All reactions