Test Driving DevExpress Chat Component
If you’re a Blazor developer looking to integrate AI-powered chat functionality into your applications, the new DevExpress DxAIChat component offers a turnkey solution. It’s designed to make building chat interfaces as easy as possible, with out-of-the-box support for simple chats, virtual assistants, and even Retrieval-Augmented Generation (RAG) scenarios.
The best part? You don’t have to start from scratch—DevExpress provides a range of pre-built examples, making it easy to get started and customize to your needs. Whether you’re aiming for a basic chatbot or a more complex AI assistant, this component has you covered.
To use the examples you can use any open A.I compatible service like Ollama, Open A.I and Azure OpenAI, in current devexpress example they use Azure like this
using DevExpress.AIIntegration; ... string azureOpenAIEndpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"); string azureOpenAIKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY"); string deploymentName = "YourModelDeploymentName" ... builder.Services.AddDevExpressBlazor(); builder.Services.AddDevExpressAI((config) => { config.RegisterChatClientOpenAIService new AzureOpenAIClient( new Uri(azureOpenAIEndpoint), new AzureKeyCredential(azureOpenAIKey) ), deploymentName); //or call the following method to use self-hosted Ollama models //config.RegisterChatClientOllamaAIService("http://localhost:11434/api/chat", "llama3.1"); });
I tested with OpenA.I API instead of azure, so my code looks like this
string azureOpenAIEndpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT"); string azureOpenAIKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY"); string OpenAiKey= Environment.GetEnvironmentVariable("OpenAiTestKey"); builder.Services.AddDevExpressBlazor(); builder.Services.AddDevExpressAI((config) => { //var client = new AzureOpenAIClient( // new Uri(azureOpenAIEndpoint), // new AzureKeyCredential(azureOpenAIKey)); //Open Ai models ID are a bit different than azure, Azure=gtp4o OpenAI=gpt-4o var client = new OpenAIClient(new System.ClientModel.ApiKeyCredential(OpenAiKey)); config.RegisterChatClientOpenAIService(client, "gpt-4o"); config.RegisterOpenAIAssistants(client, "gpt-4o"); });
Notice the IDs of the models in Azure and Open A.I are different
- Azure=gtp4o
- OpenAI=gpt-4o
This are the URLs for the different example
- Chat : https://localhost:53340/
- Assistant/RAG: https://localhost:53340/assistant
- Streaming: https://localhost:53340/streaming
I’m super happy that DevExpress components are doing all the heavy lifting and boilerplate code for us, I have developed the same scenarios using semantic kernel even when there is not so much code to write you still have the challenge of develop a responsive U.I
For more information and to see the examples in action, check out the full article.