From c29a5ad97f310275deb1816d68365b3cd3ab1d35 Mon Sep 17 00:00:00 2001 From: tghamm Date: Thu, 23 Jan 2025 15:10:40 -0500 Subject: [PATCH] Bug Fix for HttpClient Reuse --- Anthropic.SDK.BatchTester/Program.cs | 13 ++++++++ .../Anthropic.SDK.Tests.csproj | 8 ++--- Anthropic.SDK/Anthropic.SDK.csproj | 8 ++--- Anthropic.SDK/EndpointBase.cs | 31 ++++++++++++++----- 4 files changed, 45 insertions(+), 15 deletions(-) diff --git a/Anthropic.SDK.BatchTester/Program.cs b/Anthropic.SDK.BatchTester/Program.cs index 08d1187..4c0289e 100644 --- a/Anthropic.SDK.BatchTester/Program.cs +++ b/Anthropic.SDK.BatchTester/Program.cs @@ -71,6 +71,19 @@ static async Task Main(string[] args) await foreach (var result in client.Batches.RetrieveBatchResultsAsync(response.Id)) { Console.WriteLine("Result: " + result); + messages.Add(new Message(RoleType.Assistant, result.Result.Message.FirstMessage.Text)); + messages.Add(new Message(RoleType.User, "Who created the Statue of Liberty?")); + parameters = new MessageParameters() + { + Messages = messages, + MaxTokens = 512, + Model = AnthropicModels.Claude35Sonnet, + Stream = false, + Temperature = 1.0m, + }; + + var clientResponse = await client.Messages.GetClaudeMessageAsync(parameters); + Console.WriteLine(clientResponse.FirstMessage.Text); } await foreach (var result in client.Batches.RetrieveBatchResultsJsonlAsync(response.Id)) diff --git a/Anthropic.SDK.Tests/Anthropic.SDK.Tests.csproj b/Anthropic.SDK.Tests/Anthropic.SDK.Tests.csproj index 88a5407..d8460d4 100644 --- a/Anthropic.SDK.Tests/Anthropic.SDK.Tests.csproj +++ b/Anthropic.SDK.Tests/Anthropic.SDK.Tests.csproj @@ -24,10 +24,10 @@ - - - - + + + + diff --git a/Anthropic.SDK/Anthropic.SDK.csproj b/Anthropic.SDK/Anthropic.SDK.csproj index f3026a5..8b76a7f 100644 --- a/Anthropic.SDK/Anthropic.SDK.csproj +++ b/Anthropic.SDK/Anthropic.SDK.csproj @@ -14,12 +14,12 @@ Claude, AI, ML, API, Anthropic Claude API - Updates Microsoft.Extensions.AI.Abstractions + Bug Fix for HttpClient Reuse Anthropic.SDK - 4.4.3 - 4.4.3.0 - 4.4.3.0 + 4.4.4 + 4.4.4.0 + 4.4.4.0 True README.md icon.png diff --git a/Anthropic.SDK/EndpointBase.cs b/Anthropic.SDK/EndpointBase.cs index b9bfc4d..f54c900 100644 --- a/Anthropic.SDK/EndpointBase.cs +++ b/Anthropic.SDK/EndpointBase.cs @@ -72,18 +72,35 @@ protected HttpClient GetClient() var client = customClient ?? new HttpClient(); - client.DefaultRequestHeaders.Add("x-api-key", Client.Auth.ApiKey); - client.DefaultRequestHeaders.Add("anthropic-version", Client.AnthropicVersion); - if (!string.IsNullOrWhiteSpace(Client.AnthropicBetaVersion)) + if (!client.DefaultRequestHeaders.Contains("x-api-key")) + { + client.DefaultRequestHeaders.Add("x-api-key", Client.Auth.ApiKey); + } + + if (!client.DefaultRequestHeaders.Contains("anthropic-version")) + { + client.DefaultRequestHeaders.Add("anthropic-version", Client.AnthropicVersion); + } + + if (!string.IsNullOrWhiteSpace(Client.AnthropicBetaVersion) && + !client.DefaultRequestHeaders.Contains("anthropic-beta")) { client.DefaultRequestHeaders.Add("anthropic-beta", Client.AnthropicBetaVersion); } - client.DefaultRequestHeaders.Add("User-Agent", UserAgent); - client.DefaultRequestHeaders - .Accept - .Add(new MediaTypeWithQualityHeaderValue("application/json")); + if (!client.DefaultRequestHeaders.Contains("User-Agent")) + { + client.DefaultRequestHeaders.Add("User-Agent", UserAgent); + } + + if (!client.DefaultRequestHeaders.Accept.Contains(new MediaTypeWithQualityHeaderValue("application/json"))) + { + + client.DefaultRequestHeaders + .Accept + .Add(new MediaTypeWithQualityHeaderValue("application/json")); + } return client; }