diff --git a/Anthropic.SDK.Tests/Anthropic.SDK.Tests.csproj b/Anthropic.SDK.Tests/Anthropic.SDK.Tests.csproj index f7f8622..8fd5410 100644 --- a/Anthropic.SDK.Tests/Anthropic.SDK.Tests.csproj +++ b/Anthropic.SDK.Tests/Anthropic.SDK.Tests.csproj @@ -35,13 +35,13 @@ - + - - + + diff --git a/Anthropic.SDK.Tests/Messages.ChatClient.cs b/Anthropic.SDK.Tests/Messages.ChatClient.cs index fa3c615..5ad6d0a 100644 --- a/Anthropic.SDK.Tests/Messages.ChatClient.cs +++ b/Anthropic.SDK.Tests/Messages.ChatClient.cs @@ -97,7 +97,7 @@ public async Task TestThinkingStreamingConversation() messages.AddMessages(updates); - Assert.IsTrue(messages.Last().Contents.OfType().Any()); + Assert.IsTrue(messages.Last().Contents.OfType().Any()); messages.Add(new ChatMessage(ChatRole.User, "and how many letters total?")); diff --git a/Anthropic.SDK.Tests/VertexAI.ChatClient.cs b/Anthropic.SDK.Tests/VertexAI.ChatClient.cs index 80a8565..08ae9fb 100644 --- a/Anthropic.SDK.Tests/VertexAI.ChatClient.cs +++ b/Anthropic.SDK.Tests/VertexAI.ChatClient.cs @@ -168,7 +168,7 @@ public async Task TestThinkingStreamingConversation() messages.AddMessages(updates); - Assert.IsTrue(messages.Last().Contents.OfType().Any()); + Assert.IsTrue(messages.Last().Contents.OfType().Any()); messages.Add(new ChatMessage(ChatRole.User, "and how many letters total?")); diff --git a/Anthropic.SDK/Anthropic.SDK.csproj b/Anthropic.SDK/Anthropic.SDK.csproj index 3413852..e9d4e2d 100644 --- a/Anthropic.SDK/Anthropic.SDK.csproj +++ b/Anthropic.SDK/Anthropic.SDK.csproj @@ -34,7 +34,7 @@ - + diff --git a/Anthropic.SDK/Extensions/MEAI.cs b/Anthropic.SDK/Extensions/MEAI.cs index e6b13bd..1b7dec4 100644 --- a/Anthropic.SDK/Extensions/MEAI.cs +++ b/Anthropic.SDK/Extensions/MEAI.cs @@ -4,19 +4,6 @@ namespace Anthropic.SDK.Extensions.MEAI { - public sealed class ThinkingContent : Microsoft.Extensions.AI.AIContent - { - public ThinkingContent(string thinking, string signature) - { - Thinking = thinking; - Signature = signature; - } - public string Thinking { get; set; } - - public string Signature { get; set; } - public override string ToString() => Thinking; - } - public sealed class RedactedThinkingContent : Microsoft.Extensions.AI.AIContent { public RedactedThinkingContent(string data) diff --git a/Anthropic.SDK/Messaging/ChatClientHelper.cs b/Anthropic.SDK/Messaging/ChatClientHelper.cs index 71551ce..dea092b 100644 --- a/Anthropic.SDK/Messaging/ChatClientHelper.cs +++ b/Anthropic.SDK/Messaging/ChatClientHelper.cs @@ -111,8 +111,12 @@ public static MessageParameters CreateMessageParameters(IEnumerable { switch (content) { - case Anthropic.SDK.Extensions.MEAI.ThinkingContent thinkingContent: - m.Content.Add(new Messaging.ThinkingContent() { Thinking = thinkingContent.Thinking, Signature = thinkingContent.Signature }); + case Microsoft.Extensions.AI.TextReasoningContent textReasoningContent: + m.Content.Add(new Messaging.ThinkingContent() + { + Thinking = textReasoningContent.Text, + Signature = textReasoningContent.AdditionalProperties[nameof(ThinkingContent.Signature)]?.ToString() + }); break; case Anthropic.SDK.Extensions.MEAI.RedactedThinkingContent redactedThinkingContent: @@ -182,7 +186,13 @@ public static List ProcessResponseContent(MessageResponse response) switch (content) { case Messaging.ThinkingContent thinkingContent: - contents.Add(new Anthropic.SDK.Extensions.MEAI.ThinkingContent(thinkingContent.Thinking, thinkingContent.Signature)); + contents.Add(new Microsoft.Extensions.AI.TextReasoningContent(thinkingContent.Thinking) + { + AdditionalProperties = new AdditionalPropertiesDictionary + { + [nameof(ThinkingContent.Signature)] = thinkingContent.Signature + } + }); break; case Messaging.RedactedThinkingContent redactedThinkingContent: diff --git a/Anthropic.SDK/Messaging/MessagesEndpoint.ChatClient.cs b/Anthropic.SDK/Messaging/MessagesEndpoint.ChatClient.cs index 601c6ce..376b01d 100644 --- a/Anthropic.SDK/Messaging/MessagesEndpoint.ChatClient.cs +++ b/Anthropic.SDK/Messaging/MessagesEndpoint.ChatClient.cs @@ -126,7 +126,13 @@ async IAsyncEnumerable IChatClient.GetStreamingResponseAsync if (!string.IsNullOrEmpty(response.Delta.Signature)) { - update.Contents.Add(new Anthropic.SDK.Extensions.MEAI.ThinkingContent(thinking, response.Delta.Signature)); + update.Contents.Add(new TextReasoningContent(thinking) + { + AdditionalProperties = new AdditionalPropertiesDictionary + { + [nameof(ThinkingContent.Signature)] = response.Delta.Signature + } + }); } diff --git a/Anthropic.SDK/Messaging/VertexAIMessagesEndpoint.ChatClient.cs b/Anthropic.SDK/Messaging/VertexAIMessagesEndpoint.ChatClient.cs index 81956b2..d411775 100644 --- a/Anthropic.SDK/Messaging/VertexAIMessagesEndpoint.ChatClient.cs +++ b/Anthropic.SDK/Messaging/VertexAIMessagesEndpoint.ChatClient.cs @@ -78,7 +78,13 @@ async IAsyncEnumerable IChatClient.GetStreamingResponseAsync if (!string.IsNullOrEmpty(response.Delta.Signature)) { - update.Contents.Add(new Anthropic.SDK.Extensions.MEAI.ThinkingContent(thinking, response.Delta.Signature)); + update.Contents.Add(new Microsoft.Extensions.AI.TextReasoningContent(thinking) + { + AdditionalProperties = new AdditionalPropertiesDictionary + { + [nameof(ThinkingContent.Signature)] = response.Delta.Signature + } + }); }