Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Http consistency: Qdrant #1385

Merged
Merged
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Copyright (c) Microsoft. All rights reserved.

using System.Net.Http;
using Microsoft.Extensions.Logging;
using Microsoft.SemanticKernel.AI.Embeddings;
using Microsoft.SemanticKernel.AI.TextCompletion;
using Microsoft.SemanticKernel.Connectors.AI.HuggingFace.TextCompletion;
Expand Down Expand Up @@ -41,7 +40,7 @@ public static KernelBuilder WithHuggingFaceTextCompletionService(this KernelBuil
new HuggingFaceTextCompletion(
model,
apiKey,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
endpoint),
setAsDefault);

Expand All @@ -66,7 +65,7 @@ public static KernelBuilder WithHuggingFaceTextEmbeddingGenerationService(this K
builder.WithAIService<ITextEmbeddingGeneration>(serviceId, (parameters) =>
new HuggingFaceTextEmbeddingGeneration(
model,
GetHttpClient(parameters.Config, httpClient: null, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient: null, parameters.Logger),
endpoint),
setAsDefault);

Expand All @@ -93,29 +92,10 @@ public static KernelBuilder WithHuggingFaceTextEmbeddingGenerationService(this K
builder.WithAIService<ITextEmbeddingGeneration>(serviceId, (parameters) =>
new HuggingFaceTextEmbeddingGeneration(
model,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
endpoint),
setAsDefault);

return builder;
}

/// <summary>
/// Retrieves an instance of HttpClient.
/// </summary>
/// <param name="config">The kernel configuration.</param>
/// <param name="httpClient">An optional pre-existing instance of HttpClient.</param>
/// <param name="logger">An optional logger.</param>
/// <returns>An instance of HttpClient.</returns>
private static HttpClient GetHttpClient(KernelConfig config, HttpClient? httpClient, ILogger? logger)
{
if (httpClient == null)
{
var retryHandler = config.HttpHandlerFactory.Create(logger);
retryHandler.InnerHandler = NonDisposableHttpClientHandler.Instance;
return new HttpClient(retryHandler, false); // We should refrain from disposing the underlying SK default HttpClient handler as it would impact other HTTP clients that utilize the same handler.
}

return httpClient;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public static KernelBuilder WithAzureTextCompletionService(this KernelBuilder bu
deploymentName,
endpoint,
apiKey,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
parameters.Logger),
setAsDefault);

Expand Down Expand Up @@ -78,7 +78,7 @@ public static KernelBuilder WithAzureTextCompletionService(this KernelBuilder bu
deploymentName,
endpoint,
credentials,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
parameters.Logger),
setAsDefault);

Expand Down Expand Up @@ -110,7 +110,7 @@ public static KernelBuilder WithOpenAITextCompletionService(this KernelBuilder b
modelId,
apiKey,
orgId,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
parameters.Logger),
setAsDefault);
return builder;
Expand Down Expand Up @@ -145,7 +145,7 @@ public static KernelBuilder WithAzureTextEmbeddingGenerationService(this KernelB
deploymentName,
endpoint,
apiKey,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
parameters.Logger),
setAsDefault);
return builder;
Expand Down Expand Up @@ -176,7 +176,7 @@ public static KernelBuilder WithAzureTextEmbeddingGenerationService(this KernelB
deploymentName,
endpoint,
credential,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
parameters.Logger),
setAsDefault);
return builder;
Expand Down Expand Up @@ -207,7 +207,7 @@ public static KernelBuilder WithOpenAITextEmbeddingGenerationService(this Kernel
modelId,
apiKey,
orgId,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
parameters.Logger),
setAsDefault);
return builder;
Expand Down Expand Up @@ -243,7 +243,7 @@ public static KernelBuilder WithAzureChatCompletionService(this KernelBuilder bu
deploymentName,
endpoint,
apiKey,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
parameters.Logger);

builder.WithAIService<IChatCompletion>(serviceId, Factory, setAsDefault);
Expand Down Expand Up @@ -283,7 +283,7 @@ public static KernelBuilder WithAzureChatCompletionService(this KernelBuilder bu
deploymentName,
endpoint,
credentials,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
parameters.Logger);

builder.WithAIService<IChatCompletion>(serviceId, Factory, setAsDefault);
Expand Down Expand Up @@ -323,7 +323,7 @@ public static KernelBuilder WithOpenAIChatCompletionService(this KernelBuilder b
modelId,
apiKey,
orgId,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
parameters.Logger);

builder.WithAIService<IChatCompletion>(serviceId, Factory, setAsDefault);
Expand Down Expand Up @@ -362,7 +362,7 @@ public static KernelBuilder WithOpenAIImageGenerationService(this KernelBuilder
new OpenAIImageGeneration(
apiKey,
orgId,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
parameters.Logger),
setAsDefault);

Expand Down Expand Up @@ -392,31 +392,13 @@ public static KernelBuilder WithAzureOpenAIImageGenerationService(this KernelBui
new AzureOpenAIImageGeneration(
endpoint,
apiKey,
GetHttpClient(parameters.Config, httpClient, parameters.Logger),
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger),
parameters.Logger,
maxRetryCount),
setAsDefault);

return builder;
}

/// <summary>
/// Retrieves an instance of HttpClient.
/// </summary>
/// <param name="config">The kernel configuration.</param>
/// <param name="httpClient">An optional pre-existing instance of HttpClient.</param>
/// <param name="logger">An optional logger.</param>
/// <returns>An instance of HttpClient.</returns>
private static HttpClient GetHttpClient(KernelConfig config, HttpClient? httpClient, ILogger? logger)
{
if (httpClient == null)
{
var retryHandler = config.HttpHandlerFactory.Create(logger);
retryHandler.InnerHandler = NonDisposableHttpClientHandler.Instance;
return new HttpClient(retryHandler, false); // We should refrain from disposing the underlying SK default HttpClient handler as it would impact other HTTP clients that utilize the same handler.
}

return httpClient;
}
#endregion
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Copyright (c) Microsoft. All rights reserved.

using System.Net.Http;
using Microsoft.Extensions.Logging;
using Microsoft.SemanticKernel.Connectors.Memory.Pinecone;

#pragma warning disable IDE0130
Expand Down Expand Up @@ -32,30 +31,11 @@ public static KernelBuilder WithPineconeMemoryStore(this KernelBuilder builder,
environment,
apiKey,
parameters.Logger,
GetHttpClient(parameters.Config, httpClient, parameters.Logger));
HttpClientProvider.GetHttpClient(parameters.Config, httpClient, parameters.Logger));

return new PineconeMemoryStore(client, parameters.Logger);
});

return builder;
}

/// <summary>
/// Retrieves an instance of HttpClient.
/// </summary>
/// <param name="config">The kernel configuration.</param>
/// <param name="httpClient">An optional pre-existing instance of HttpClient.</param>
/// <param name="logger">An optional logger.</param>
/// <returns>An instance of HttpClient.</returns>
private static HttpClient GetHttpClient(KernelConfig config, HttpClient? httpClient, ILogger? logger)
{
if (httpClient == null)
{
var retryHandler = config.HttpHandlerFactory.Create(logger);
retryHandler.InnerHandler = NonDisposableHttpClientHandler.Instance;
return new HttpClient(retryHandler, false); // We should refrain from disposing the underlying SK default HttpClient handler as it would impact other HTTP clients that utilize the same handler.
}

return httpClient;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,14 @@

<!-- IMPORT NUGET PACKAGE SHARED PROPERTIES -->
<Import Project="$(RepoRoot)/dotnet/nuget/nuget-package.props" />
<Import Project="$(RepoRoot)/dotnet/src/InternalUtilities/InternalUtilities.props" />

<PropertyGroup>
<!-- NuGet Package Settings -->
<Title>Semantic Kernel - Qdrant Connector</Title>
<Description>Qdrant connector for Semantic Kernel skills and semantic memory</Description>
</PropertyGroup>

<ItemGroup>
<Compile Include="$(RepoRoot)/dotnet/src/InternalUtilities/Linq/AsyncEnumerable.cs" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="System.Text.Json" />
</ItemGroup>
Expand Down
Loading