Skip to main content
All docs
V25.1
  • AIExtensionsContainerDesktop Class

    A container that manages registered AI clients in WinForms and WPF applications.

    Namespace: DevExpress.AIIntegration

    Assembly: DevExpress.AIIntegration.Desktop.v25.1.dll

    NuGet Package: DevExpress.AIIntegration.Desktop

    Declaration

    public static class AIExtensionsContainerDesktop

    Remarks

    DevExpress AI-powered extensions operate within the AIExtensionsContainerDesktop.Default container. This container manages all registered AI clients so that DevExpress UI controls can automatically leverage AI services.

    The following code snippet registers an Azure OpenAI client in a WinForms application:

    using Microsoft.Extensions.AI;
    using DevExpress.AIIntegration;
    
    internal static class Program {
        [STAThread]
        static void Main() {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
    
            IChatClient azureChatClient = new Azure.AI.OpenAI.AzureOpenAIClient(new Uri(AzureOpenAIEndpoint),
            new System.ClientModel.ApiKeyCredential(AzureOpenAIKey))
            .GetChatClient("gpt-4o-mini").AsIChatClient();
    
            AIExtensionsContainerDesktop.Default.RegisterChatClient(azureChatClient);
    
            Application.Run(new Form1());
        }
        static string AzureOpenAIEndpoint { get { return Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"); } }
        static string AzureOpenAIKey { get { return Environment.GetEnvironmentVariable("AZURE_OPENAI_APIKEY"); } }
    }
    

    The default container for AI services (AIExtensionsContainerDesktop.Default) can store only one registered AI client. An exception is raised if you attempt to register a second AI client.

    To switch between AI chat clients, call the UnregisterChatClient method to unregister the currently registered AI chat client and then register another AI chat client:

    using DevExpress.AIIntegration;
    using Microsoft.Extensions.AI;
    
    //...
    IChatClient asChatClientOpenAI;
    IChatClient asChatClientAzureOpenAI;
    
    //...
    //Initialize asChatClientOpenAI and asChatClientAzureOpenAI
    InitializeChatClientOpenAI();
    InitializeChatClientAzureOpenAI();
    
    // Register an OpenAI client.
    RegisterChatClient(asChatClientOpenAI);
    
    // Unregister the previously registered AI client.
    AIExtensionsContainerDesktop.Default.UnregisterChatClient();
    // Register an Azure OpenAI client.
    RegisterChatClient(asChatClientAzureOpenAI);
    

    Inheritance

    Object
    AIExtensionsContainerDesktop
    See Also