@@ -27,25 +27,28 @@ public async Task RunSample2()
2727 {
2828 var services = new ServiceCollection ( ) ;
2929
30- var apiKey = Dotenv . Get ( "COHERE_API_KEY" ) ! ;
31- var cohereBaseUrl = Dotenv . Get ( "COHERE_BASE_API_KEY" ) ;
32- if ( string . IsNullOrEmpty ( cohereBaseUrl ) )
30+ var cohereAzureBaseUrl = Dotenv . Get ( "COHERE_AZURE_BASE_URL" ) ;
31+ if ( string . IsNullOrEmpty ( cohereAzureBaseUrl ) )
3332 {
33+ var apiKey = Dotenv . Get ( "COHERE_API_KEY" ) ! ;
3434 services . ConfigureCohereChat ( apiKey ) ;
3535 }
3636 else
3737 {
38- services . ConfigureCohereChat ( apiKey , cohereBaseUrl ) ;
38+ var azureApiKey = Dotenv . Get ( "COHERE_AZURE_API_KEY" ) ;
39+ services . ConfigureCohereChat ( azureApiKey , cohereAzureBaseUrl ) ;
3940 }
4041 //verify if rerank has a different api key (because the apikey point on azure ai studio)
41- var rerankApiKey = Dotenv . Get ( "COHERE_RERANK_API_KEY " ) ;
42- if ( string . IsNullOrEmpty ( rerankApiKey ) )
42+ var rerankAzureBaseUrl = Dotenv . Get ( "COHERE_AZURE_RERANK_BASE_URL " ) ;
43+ if ( string . IsNullOrEmpty ( rerankAzureBaseUrl ) )
4344 {
45+ var apiKey = Dotenv . Get ( "COHERE_API_KEY" ) ! ;
4446 services . ConfigureCohereRerank ( apiKey ) ;
4547 }
4648 else
4749 {
48- services . ConfigureCohereRerank ( rerankApiKey ) ;
50+ var azureReRankApiKey = Dotenv . Get ( "COHERE_AZURE_RERANK_API_KEY" ) ;
51+ services . ConfigureCohereRerank ( azureReRankApiKey , rerankAzureBaseUrl ) ;
4952 }
5053
5154 services . AddHttpClient < RawCohereChatClient > ( )
@@ -89,12 +92,15 @@ public async Task RunSample2()
8992 . Title ( "Select query rewriter" )
9093 . AddChoices ( [ "Semantic Kernel Base" , "Semantic Kernel Handlebar" ] ) ) ;
9194
95+ var useHyde = AnsiConsole . Confirm ( "Do you want to use HyDe? (y/n)" , false ) ;
96+
9297 var kernelBuider = CreateBasicKernelBuilder ( ) ;
9398 var builder = CreateBasicKernelMemoryBuilder (
9499 services ,
95100 storageToUse == "elasticsearch" ,
96101 queryExecutorToUse ,
97- queryRewriterTool == "Semantic Kernel Handlebar" ) ;
102+ queryRewriterTool == "Semantic Kernel Handlebar" ,
103+ useHyde ) ;
98104 var kernelMemory = builder . Build < MemoryServerless > ( ) ;
99105 var kernel = kernelBuider . Build ( ) ;
100106
@@ -238,7 +244,8 @@ private static IKernelMemoryBuilder CreateBasicKernelMemoryBuilder(
238244 ServiceCollection services ,
239245 bool useElasticSearch ,
240246 string ragToolToUse ,
241- bool useHandlebarQueryRewriter )
247+ bool useHandlebarQueryRewriter ,
248+ bool useHyde )
242249 {
243250 // we need a series of services to use Kernel Memory, the first one is
244251 // an embedding service that will be used to create dense vector for
@@ -306,6 +313,12 @@ private static IKernelMemoryBuilder CreateBasicKernelMemoryBuilder(
306313 services . AddSingleton < HandlebarSemanticKernelQueryRewriter > ( ) ;
307314 services . AddSingleton < SemanticKernelQueryRewriter > ( ) ;
308315 services . AddSingleton < StandardVectorSearchQueryHandler > ( ) ;
316+ services . AddSingleton < HyDeQueryHandler > ( ) ;
317+ var hydeConfig = new HiDeQueryHandlerConfiguration ( )
318+ {
319+ Prompt = "Given a question, generate a paragraph of text that answers the question in the context of computer security and IT security"
320+ } ;
321+ services . AddSingleton ( hydeConfig ) ;
309322 services . AddSingleton < KeywordSearchQueryHandler > ( ) ;
310323
311324 var rewriterOptions = new SemanticKernelQueryRewriterOptions ( ) ;
@@ -337,6 +350,11 @@ private static IKernelMemoryBuilder CreateBasicKernelMemoryBuilder(
337350 config . AddHandler < KeywordSearchQueryHandler > ( ) ;
338351 }
339352
353+ if ( useHyde )
354+ {
355+ config . AddHandler < HyDeQueryHandler > ( ) ;
356+ }
357+
340358 if ( ragToolToUse == "Cohere CommandR+" )
341359 {
342360 config . AddHandler < CohereCommandRQueryExecutor > ( ) ;
0 commit comments