22using Microsoft . Extensions . AI ;
33using OpenAI . Chat ;
44using System . IO ;
5+ using Telerik . Documents . AI . Core ;
6+
57#if NETWINDOWS
68using Telerik . Windows . Documents . AIConnector ;
79#else
@@ -16,19 +18,22 @@ namespace AIConnectorDemo
1618 internal class Program
1719 {
1820 static int maxTokenCount = 128000 ;
21+ static int maxNumberOfEmbeddingsSent = 50000 ;
1922 static IChatClient iChatClient ;
23+ static string tokenizationEncoding = "cl100k_base" ;
24+ static string model = "gpt-4o-mini" ;
25+ static string key = Environment . GetEnvironmentVariable ( "AZUREOPENAI_KEY" ) ;
26+ static string endpoint = Environment . GetEnvironmentVariable ( "AZUREOPENAI_ENDPOINT" ) ;
2027
2128 static void Main ( string [ ] args )
2229 {
23- Console . WriteLine ( "Hello, World!" ) ;
24-
2530 CreateChatClient ( ) ;
2631
2732 using ( Stream input = File . OpenRead ( "John Grisham.pdf" ) )
2833 {
2934 PdfFormatProvider pdfFormatProvider = new PdfFormatProvider ( ) ;
3035 RadFixedDocument inputPdf = pdfFormatProvider . Import ( input , null ) ;
31- ISimpleTextDocument simpleDocument = inputPdf . ToSimpleTextDocument ( ) ;
36+ SimpleTextDocument simpleDocument = inputPdf . ToSimpleTextDocument ( TimeSpan . FromSeconds ( 10 ) ) ;
3237
3338 Summarize ( simpleDocument ) ;
3439
@@ -44,10 +49,6 @@ static void Main(string[] args)
4449
4550 private static void CreateChatClient ( )
4651 {
47- string key = Environment . GetEnvironmentVariable ( "AZUREOPENAI_KEY" ) ;
48- string endpoint = Environment . GetEnvironmentVariable ( "AZUREOPENAI_ENDPOINT" ) ;
49- string model = "gpt-4o-mini" ;
50-
5152 AzureOpenAIClient azureClient = new (
5253 new Uri ( endpoint ) ,
5354 new Azure . AzureKeyCredential ( key ) ,
@@ -57,10 +58,12 @@ private static void CreateChatClient()
5758 iChatClient = new OpenAIChatClient ( chatClient ) ;
5859 }
5960
60- private static void Summarize ( ISimpleTextDocument simpleDocument )
61+ private static void Summarize ( SimpleTextDocument simpleDocument )
6162 {
62- SummarizationProcessor summarizationProcessor = new SummarizationProcessor ( iChatClient , maxTokenCount ) ;
63- summarizationProcessor . Settings . PromptAddition = "Summarize the text in a few sentences. Be concise and clear." ;
63+ string additionalPrompt = "Summarize the text in a few sentences. Be concise and clear." ;
64+ SummarizationProcessorSettings summarizationProcessorSettings = new SummarizationProcessorSettings ( maxTokenCount , additionalPrompt ) ;
65+ SummarizationProcessor summarizationProcessor = new SummarizationProcessor ( iChatClient , summarizationProcessorSettings ) ;
66+
6467 summarizationProcessor . SummaryResourcesCalculated += SummarizationProcessor_SummaryResourcesCalculated ;
6568
6669 string summary = summarizationProcessor . Summarize ( simpleDocument ) . Result ;
@@ -73,23 +76,25 @@ private static void SummarizationProcessor_SummaryResourcesCalculated(object? se
7376 e . ShouldContinueExecution = true ;
7477 }
7578
76- private static void AskQuestion ( ISimpleTextDocument simpleDocument )
79+ private static void AskQuestion ( SimpleTextDocument simpleDocument )
7780 {
78- CompleteContextQuestionProcessor completeContextQuestionProcessor = new CompleteContextQuestionProcessor ( iChatClient , maxTokenCount ) ;
81+ CompleteContextProcessorSettings completeContextProcessorSettings = new CompleteContextProcessorSettings ( maxTokenCount , model , tokenizationEncoding , false ) ;
82+ CompleteContextQuestionProcessor completeContextQuestionProcessor = new CompleteContextQuestionProcessor ( iChatClient , completeContextProcessorSettings ) ;
7983
8084 string question = "How many pages is the document and what is it about?" ;
8185 string answer = completeContextQuestionProcessor . AnswerQuestion ( simpleDocument , question ) . Result ;
8286 Console . WriteLine ( question ) ;
8387 Console . WriteLine ( answer ) ;
8488 }
8589
86- private static void AskPartialContextQuestion ( ISimpleTextDocument simpleDocument )
90+ private static void AskPartialContextQuestion ( SimpleTextDocument simpleDocument )
8791 {
92+ var settings = EmbeddingSettingsFactory . CreateSettingsForTextDocuments ( maxTokenCount , model , tokenizationEncoding , maxNumberOfEmbeddingsSent ) ;
8893#if NETWINDOWS
89- PartialContextQuestionProcessor partialContextQuestionProcessor = new PartialContextQuestionProcessor ( iChatClient , maxTokenCount , simpleDocument ) ;
94+ PartialContextQuestionProcessor partialContextQuestionProcessor = new PartialContextQuestionProcessor ( iChatClient , settings , simpleDocument ) ;
9095#else
91- IEmbeddingsStorage embeddingsStorage = new OllamaEmbeddingsStorage ( ) ;
92- PartialContextQuestionProcessor partialContextQuestionProcessor = new PartialContextQuestionProcessor ( iChatClient , embeddingsStorage , maxTokenCount , simpleDocument ) ;
96+ IEmbedder embedder = new CustomOpenAIEmbedder ( ) ;
97+ PartialContextQuestionProcessor partialContextQuestionProcessor = new PartialContextQuestionProcessor ( iChatClient , embedder , settings , simpleDocument ) ;
9398#endif
9499 string question = "What is the last book by John Grisham?" ;
95100 string answer = partialContextQuestionProcessor . AnswerQuestion ( question ) . Result ;
0 commit comments