Summarize and Translate Reports in the WPF Document Preview
- 4 minutes to read
Follow instructions in this article to integrate AI-powered Summarize and Translate commands into the DocumentPreviewControl.
- Summarize
- Uses generative AI to summarize report content and displays core insights associated with this report.
- Translate
- Uses AI services to translate report content to another language.
#Activate AI Assistant
#Install NuGet Packages
Install the following NuGet packages:
- Microsoft.Extensions.AI.OpenAI
- Azure.AI.OpenAI,
DevExpress.AIIntegration.Wpf
DevExpress.Reporting.Core
(if you useXtraReport
as a document source)
The following tutorial uses Azure OpenAI. Refer to the requirements section for information about NuGet packages required for other supported AI services.
#Register AI Client
The following code snippet registers an Azure OpenAI client at application startup:
using Azure.AI.OpenAI;
using DevExpress.AIIntegration;
using Microsoft.Extensions.AI;
using System.ClientModel;
// ...
public partial class App : Application {
static string AzureOpenAIEndpoint { get { return "AZURE_OPENAI_ENDPOINT"; } }
static string AzureOpenAIKey { get { return "AZURE_OPENAI_APIKEY"; } }
static string DeploymentName { get { return "gpt-4o-mini"; } }
public App() {
IChatClient client = new AzureOpenAIClient(
new Uri(AzureOpenAIEndpoint),
new ApiKeyCredential(AzureOpenAIKey))
.AsChatClient(DeploymentName);
AIExtensionsContainerDesktop.Default.RegisterChatClient(client);
}
}
Note
Review the following help topic for information on how to register other supported AI services: Register AI Clients.
#Create and Configure AI Assistant Behaviors
Register DocumentSummarizeBehavior and DocumentTranslateBehavior, specify their setting, and assign them to the Document Preview control.
The following settings are available:
SummarizationMode (for Summarize behavior)
Abstractive mode understands the text and rephrases it in a concise form. Extractive mode extracts key sentences or phrases from the original text.
Languages (for Translate behavior)
Specifies target languages/cultures for text translation.
Temperature
Controls the randomness of the output. Lower temperatures (value: 0-1) yield more predictable and focused outputs, while higher temperatures (value: 1-2) produce more diverse and creative responses.
Markup:
xmlns:dxp="http://schemas.devexpress.com/winfx/2008/xaml/printing"
xmlns:dxai="http://schemas.devexpress.com/winfx/2008/xaml/ai"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
...
<dxp:DocumentPreviewControl Name="preview">
<dxmvvm:Interaction.Behaviors>
<dxai:DocumentTranslateBehavior>
<dxai:LanguageInfo Culture="de-DE"/>
<dxai:LanguageInfo Culture="es-ES"/>
<dxai:LanguageInfo Culture="pt-BR"/>
</dxai:DocumentTranslateBehavior>
<dxai:DocumentSummarizeBehavior SummarizationMode="Abstractive" />
</dxmvvm:Interaction.Behaviors>
</dxp:DocumentPreviewControl>
Code-Behind:
using System.Collections.Generic;
using System.Globalization;
using DevExpress.AIIntegration;
using DevExpress.AIIntegration.Wpf;
using DevExpress.Mvvm.UI.Interactivity;
// ...
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
AddAIBehaviors();
}
void AddAIBehaviors() {
var translateBehavior = new DocumentTranslateBehavior() {
Languages = new List<LanguageInfo>() {
new LanguageInfo() { Culture = new CultureInfo("de-DE") },
new LanguageInfo() { Culture = new CultureInfo("es-ES") },
new LanguageInfo() { Culture = new CultureInfo("pt-BR") },
}
};
var summarizeBehavior = new DocumentSummarizeBehavior() {
SummarizationMode = SummarizationMode.Abstractive
};
var behaviors = Interaction.GetBehaviors(preview);
behaviors.Add(translateBehavior);
behaviors.Add(summarizeBehavior);
}
}
#Use Translate Command
You can access the Translate command in the AI context menu of the Document Preview control.
Right-click an opened report or selected report content. Select Translate from the AI Assistant submenu.
A dialog appears. Specify the input text range (selected content, document page, or entire document) and target language. Click “Translate” to generate and display a translation.
Click the copy icon to copy operation output.
#Use Summarize Command
You can access the Summarize command in the AI context menu of the Document Preview control.
Right-click an open report or selected report content. Select Summarize from the AI Assistant submenu.
A dialog appears. Specify the input text range for summarization (selected content, document page, or entire document). Click “Summarize” to display the summary.
Click the copy icon to copy operation output.