Skip to main content
All docs
V25.2
  • AIIntegration.PromptToExpressionAsync<TRequest>(IAIExtensionsContainer, TRequest, CancellationToken) Method

    Converts natural language into a valid DevExpress filter or expression.

    Namespace: DevExpress.AIIntegration

    Assembly: DevExpress.AIIntegration.v25.2.dll

    NuGet Package: DevExpress.AIIntegration

    Declaration

    public static Task<PromptToExpressionResponse> PromptToExpressionAsync<TRequest>(
        this IAIExtensionsContainer container,
        TRequest request,
        CancellationToken cancellationToken = default(CancellationToken)
    )
        where TRequest : PromptToExpressionRequestBase

    Parameters

    Name Type Description
    container IAIExtensionsContainer

    The AI extensions container.

    request TRequest

    The request to convert natural language into a valid DevExpress filter or expression.

    Optional Parameters

    Name Type Default Description
    cancellationToken CancellationToken null

    The token that cancels the task.

    Type Parameters

    Name Description
    TRequest

    The request type.

    Returns

    Type Description
    Task<DevExpress.AIIntegration.Extensions.PromptToExpressionResponse>

    The response that contains AI-generated text.

    Remarks

    The following code snippet registers an Azure OpenAI client to use the AI-powered Prompt to Expression extension in a .NET Console application to generate a valid filter expression:

    using Azure.AI.OpenAI;
    using DevExpress.AIIntegration;
    using DevExpress.AIIntegration.Extensions;
    using Microsoft.Extensions.AI;
    
    // Register an Azure OpenAI client.
    AIExtensionsContainerDefault defaultAIExtensionsContainer = RegisterAzureOpenAIClient(
        Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"),
        Environment.GetEnvironmentVariable("AZURE_OPENAI_APIKEY")
    );
    
    // PromptToExpressionAsync converts a human-readable request into
    // a machine-readable expression based on the available columns and functions.
    var response = await defaultAIExtensionsContainer.PromptToExpressionAsync(
        new PromptToExpressionRequest(
            "Display orders from the last month where the total amount is greater than $500.",  // The user's instruction written in natural language.
            string.Empty,
            new List<PromptToExpressionRequestBase.ColumnInfo>(){                               // Describes data fields that the AI is allowed
                new PromptToExpressionRequestBase.ColumnInfo(){ ColumnName = "OrderID" },       // to reference in the generated expression.
                new PromptToExpressionRequestBase.ColumnInfo(){ ColumnName = "Price" },
                new PromptToExpressionRequestBase.ColumnInfo(){ ColumnName = "OrderDate"}
            },
            null)                                                                               // (optional) Specifies custom or supported functions
                                                                                                // that the AI can use when building expressions.
    );
    
    Console.WriteLine("Generated Expression: " + response);
    
    // Expected output (the actual output may vary):
    // Generated Expression: [OrderDate] >= DateTime.Now.AddMonths(-1) && [Price] > 500
    
    AIExtensionsContainerDefault RegisterAzureOpenAIClient(string azureOpenAIEndpoint, string azureOpenAIKey) {
        IChatClient client = new AzureOpenAIClient(new Uri(azureOpenAIEndpoint),
            new System.ClientModel.ApiKeyCredential(azureOpenAIKey)).GetChatClient("gpt-4o-mini").AsIChatClient();
    
        return AIExtensionsContainerConsole.CreateDefaultAIExtensionContainer(client);
    }
    
    void SetEnvironmentVariables() {
        Environment.SetEnvironmentVariable("AZURE_OPENAI_ENDPOINT", {SPECIFY_YOUR_AZURE_ENDPOINT});
        Environment.SetEnvironmentVariable("AZURE_OPENAI_APIKEY", {SPECIFY_YOU_AZURE_KEY});
    }
    
    See Also