Skip to main content
All docs
V25.1
  • AIIntegration.SmartSearchAsync(IAIExtensionsContainer, SmartSearchRequest, CancellationToken) Method

    Filters items to offer results that are more aligned with the search string, even if the input contains misspellings.

    Namespace: DevExpress.AIIntegration

    Assembly: DevExpress.AIIntegration.v25.1.dll

    NuGet Package: DevExpress.AIIntegration

    Declaration

    public static Task<SmartSearchResponse> SmartSearchAsync(
        this IAIExtensionsContainer container,
        SmartSearchRequest request,
        CancellationToken cancellationToken = default(CancellationToken)
    )

    Parameters

    Name Type Description
    container IAIExtensionsContainer

    The AI extensions container.

    request SmartSearchRequest

    The Smart Search request.

    Optional Parameters

    Name Type Default Description
    cancellationToken CancellationToken null

    The token that cancels the task.

    Returns

    Type Description
    Task<SmartSearchResponse>

    The Smart Search response.

    Remarks

    The following example registers an Azure OpenAI client and uses the Smart Search AI-powered extension to filter items based on the searchQuery:

    using Azure;
    using Azure.AI.OpenAI;
    using Microsoft.Extensions.AI;
    using DevExpress.AIIntegration;
    using DevExpress.AIIntegration.Extensions;
    
    SetEnvironmentVariables();
    
    // Register an Azure OpenAI client
    AIExtensionsContainerDefault defaultAIExtensionsContainer = RegisterAzureOpenAIClient(
        Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"),
        Environment.GetEnvironmentVariable("AZURE_OPENAI_APIKEY")
    );
    
    string searchQuery = "furniture";
    var response = await defaultAIExtensionsContainer.SmartSearchAsync(
        new SmartSearchRequest(searchQuery, new List<SmartSearchRequest.ItemInfo>() {
            new SmartSearchRequest.ItemInfo("item1", "chair"),
            new SmartSearchRequest.ItemInfo("item2", "sofa"),
            new SmartSearchRequest.ItemInfo("item3", "knife"),
            new SmartSearchRequest.ItemInfo("item4", "clock"),
            new SmartSearchRequest.ItemInfo("item5", "bed"),
        })
    );
    
    foreach (SmartSearchResponse.ItemInfo info in response.Values)
        Console.WriteLine(string.Format("{0}: {1}", info.Id, info.Value));
    
    /* Output:
     * item1: chair
     * item2: sofa
     * item5: bed
     */
    
    AIExtensionsContainerDefault RegisterAzureOpenAIClient(string azureOpenAIEndpoint, string azureOpenAIKey) {
        IChatClient client = new Azure.AI.OpenAI.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