Back to Devexpress

IAIDocProcessingService.SummarizeAsync(RichEditDocumentServer, SummarizationMode, CancellationToken) Method

officefileapi-devexpress-dot-aiintegration-dot-docs-dot-iaidocprocessingservice-dot-summarizeasync-x28-richeditdocumentserver-summarizationmode-cancellationtoken-x29.md

latest6.9 KB
Original Source

IAIDocProcessingService.SummarizeAsync(RichEditDocumentServer, SummarizationMode, CancellationToken) Method

Generates a brief summary of a document content.

Namespace : DevExpress.AIIntegration.Docs

Assembly : DevExpress.AIIntegration.Docs.v25.2.dll

NuGet Package : DevExpress.AIIntegration.Docs

Declaration

csharp
Task<string> SummarizeAsync(
    RichEditDocumentServer wordProcessor,
    SummarizationMode mode = SummarizationMode.Abstractive,
    CancellationToken cancellationToken = default(CancellationToken)
)
vb
Function SummarizeAsync(
    wordProcessor As RichEditDocumentServer,
    mode As SummarizationMode = SummarizationMode.Abstractive,
    cancellationToken As CancellationToken = Nothing
) As Task(Of String)

Parameters

NameTypeDescription
wordProcessorRichEditDocumentServer

The RichEditDocumentServer instance which content should be summarized.

|

Optional Parameters

NameTypeDefaultDescription
modeSummarizationModeAbstractive

An enumeration value that indicates summarization mode.

| | cancellationToken | CancellationToken | null |

The token that cancels the task.

|

Returns

TypeDescription
Task<String>

The response that contains AI-generated summary.

|

Example

How to: Obtain Summary and Insert It at the Document Start

The following code snippet obtains an AI-generated summary of a Word document and inserts it at the start:

csharp
using DevExpress.AIIntegration.Docs;
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;

// See "Register AI extension service" section for implementation code
var docProcessingService = defaultAIExtensionsContainer.CreateAIDocProcessingService();

var wordProcessor = new RichEditDocumentServer();
wordProcessor.LoadDocument("Documents/FirstLookShortened.docx");
string summary = await docProcessingService.SummarizeAsync(
    wordProcessor,
    SummarizationMode.Extractive,
    CancellationToken.None);

wordProcessor.Document.Paragraphs.Insert(wordProcessor.Document.Paragraphs[0].Range.Start);

Paragraph summaryParagraph = wordProcessor.Document.Paragraphs[0];

// This method resets formatting for the inserted paragraph
ClearFormatting(summaryParagraph);

wordProcessor.Document.InsertText(
    summaryParagraph.Range.Start,
    "Document Summary:\n" + summary);
wordProcessor.SaveDocument("Documents/SummarizationResult.docx", DocumentFormat.Docx);

void ClearFormatting(Paragraph paragraph)
{
    CharacterProperties cp = wordProcessor.Document.BeginUpdateCharacters(paragraph.Range);
    cp.Reset();
    cp.Style = wordProcessor.Document.CharacterStyles["Normal"];
    wordProcessor.Document.EndUpdateCharacters(cp);
    ParagraphProperties pp = wordProcessor.Document.BeginUpdateParagraphs(paragraph.Range);
    pp.Reset();
    pp.Style = wordProcessor.Document.ParagraphStyles["Normal"];
    wordProcessor.Document.EndUpdateParagraphs(pp);
}
vb
Imports DevExpress.AIIntegration.Docs
Imports DevExpress.XtraRichEdit
Imports DevExpress.XtraRichEdit.API.Native
Imports System.Threading.Tasks
Imports System.Threading

Async Function Main() As Task
    ' See "Register AI extension service" section for implementation code
    var docProcessingService = defaultAIExtensionsContainer.CreateAIDocProcessingService()

    Dim wordProcessor As New RichEditDocumentServer()
    wordProcessor.LoadDocument("Documents/FirstLookShortened.docx")
    Dim summary As String = Await docProcessingService.SummarizeAsync( _
        wordProcessor, _
        SummarizationMode.Extractive, _
        CancellationToken.None)

    wordProcessor.Document.Paragraphs.Insert(wordProcessor.Document.Paragraphs(0).Range.Start)

    Dim summaryParagraph As Paragraph = wordProcessor.Document.Paragraphs(0)

    ' This method resets formatting of the obtained paragraph
    ClearFormatting(wordProcessor, summaryParagraph)

    wordProcessor.Document.InsertText( _
        summaryParagraph.Range.Start, _
        "Document Summary:" & vbLf & summary)
    wordProcessor.SaveDocument("Documents/SummarizationResult.docx", DocumentFormat.Docx)
End Function

Sub ClearFormatting(wordProcessor As RichEditDocumentServer, paragraph As Paragraph)
    Dim cp As CharacterProperties = wordProcessor.Document.BeginUpdateCharacters(paragraph.Range)
    cp.Reset()
    cp.Style = wordProcessor.Document.CharacterStyles("Normal")
    wordProcessor.Document.EndUpdateCharacters(cp)
    Dim pp As ParagraphProperties = wordProcessor.Document.BeginUpdateParagraphs(paragraph.Range)
    pp.Reset()
    pp.Style = wordProcessor.Document.ParagraphStyles("Normal")
    wordProcessor.Document.EndUpdateParagraphs(pp)
End Sub

The following code snippet (auto-collected from DevExpress Examples) contains a reference to the SummarizeAsync(RichEditDocumentServer, SummarizationMode, CancellationToken) method.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

office-file-api-ai-implementation/CS/Controllers/SummarizeController.cs#L47

csharp
case RichEditDocumentPart.WholeDocument:
    summaryText = await docProcessingService.SummarizeAsync(wordProcessor, summarizationMode);
    break;

See Also

IAIDocProcessingService Interface

IAIDocProcessingService Members

DevExpress.AIIntegration.Docs Namespace