-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathAzureOpenAIMarkdownDocumentDataExtractor.cs
More file actions
36 lines (31 loc) · 1.25 KB
/
AzureOpenAIMarkdownDocumentDataExtractor.cs
File metadata and controls
36 lines (31 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System.Globalization;
using System.Text;
using Azure.AI.OpenAI;
using EvaluationTests.Shared.Markdown;
using EvaluationTests.Shared.Storage;
namespace EvaluationTests.Shared.Extraction.AzureOpenAI;
public class AzureOpenAIMarkdownDocumentDataExtractor(
OpenAIClient client,
ChatCompletionsOptions chatCompletionOptions,
IDocumentMarkdownConverter markdownConverter,
TestOutputStorage? outputStorage = null)
: AzureOpenAIDocumentDataExtractor(client, chatCompletionOptions, outputStorage)
{
public override async Task<DataExtractionResult> FromDocumentBytesAsync(
byte[] documentBytes,
CancellationToken cancellationToken = default)
{
var result = new DataExtractionResult();
var markdownContent = await markdownConverter.FromByteArrayAsync(documentBytes, cancellationToken);
if (markdownContent == null)
{
return result;
}
if (OutputStorage != null)
{
await OutputStorage.SaveBytesAsync(markdownContent,
$"{DateTime.UtcNow.ToString("yy-MM-dd", CultureInfo.InvariantCulture)}.Markdown.md");
}
return await GetChatCompletionsAsync(new ChatRequestUserMessage(Encoding.UTF8.GetString(markdownContent)));
}
}