tests: update tests to account for serialization and deserialization changes with new/modified model properties to support caching
This commit is contained in:
@@ -191,6 +191,8 @@ public class AnthropicApiClient : IAnthropicApiClient
|
|||||||
{
|
{
|
||||||
InputTokens = existingUsage.InputTokens + msgDeltaData.Usage.InputTokens,
|
InputTokens = existingUsage.InputTokens + msgDeltaData.Usage.InputTokens,
|
||||||
OutputTokens = existingUsage.OutputTokens + msgDeltaData.Usage.OutputTokens,
|
OutputTokens = existingUsage.OutputTokens + msgDeltaData.Usage.OutputTokens,
|
||||||
|
CacheCreationInputTokens = existingUsage.CacheCreationInputTokens + msgDeltaData.Usage.CacheCreationInputTokens,
|
||||||
|
CacheReadInputTokens = existingUsage.CacheReadInputTokens + msgDeltaData.Usage.CacheReadInputTokens,
|
||||||
};
|
};
|
||||||
|
|
||||||
msgResponse = new MessageResponse()
|
msgResponse = new MessageResponse()
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ static class JsonSerializationOptions
|
|||||||
new EventDataConverter(),
|
new EventDataConverter(),
|
||||||
new ContentDeltaConverter(),
|
new ContentDeltaConverter(),
|
||||||
new JsonStringEnumConverter(),
|
new JsonStringEnumConverter(),
|
||||||
new MessageRequestConverter(),
|
|
||||||
},
|
},
|
||||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -15,15 +15,40 @@ public abstract class BaseMessageRequest
|
|||||||
public string Model { get; init; } = string.Empty;
|
public string Model { get; init; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the system prompt to use for the request.
|
/// Gets the system message that will be used as the system prompt if no system messages are provided.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonIgnore]
|
||||||
public string? System { get; init; } = null;
|
public string? System { get; init; } = null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the messages to send to the model.
|
/// Gets the system messages to send to the model to be used as the system prompt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonIgnore]
|
||||||
public List<TextContent>? SystemMessages { get; init; } = null;
|
public List<TextContent>? SystemMessages { get; init; } = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the system prompt that will be used for the request.
|
||||||
|
/// If will return the system messages if they are provided, otherwise it will return the system message.
|
||||||
|
/// If neither are provided, it will return null.
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("system")]
|
||||||
|
public List<TextContent>? SystemPrompt => GetSystemPrompt();
|
||||||
|
|
||||||
|
private List<TextContent>? GetSystemPrompt()
|
||||||
|
{
|
||||||
|
if (SystemMessages is not null)
|
||||||
|
{
|
||||||
|
return SystemMessages;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (System is not null)
|
||||||
|
{
|
||||||
|
return [new TextContent(System)];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the messages to send to the model.
|
/// Gets the messages to send to the model.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -13,7 +13,9 @@ public class AnthropicEventTests : SerializationTest
|
|||||||
""stop_sequence"": """",
|
""stop_sequence"": """",
|
||||||
""usage"": {
|
""usage"": {
|
||||||
""input_tokens"": 472,
|
""input_tokens"": 472,
|
||||||
""output_tokens"": 2
|
""output_tokens"": 2,
|
||||||
|
""cache_creation_input_tokens"": 0,
|
||||||
|
""cache_read_input_tokens"": 0
|
||||||
},
|
},
|
||||||
""content"": [],
|
""content"": [],
|
||||||
""stop_reason"": """"
|
""stop_reason"": """"
|
||||||
@@ -70,7 +72,9 @@ public class AnthropicEventTests : SerializationTest
|
|||||||
},
|
},
|
||||||
""usage"": {
|
""usage"": {
|
||||||
""output_tokens"": 89,
|
""output_tokens"": 89,
|
||||||
""input_tokens"": 0
|
""input_tokens"": 0,
|
||||||
|
""cache_creation_input_tokens"": 0,
|
||||||
|
""cache_read_input_tokens"": 0
|
||||||
},
|
},
|
||||||
""type"": ""message_delta""
|
""type"": ""message_delta""
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ public class MessageDeltaEventDataTests : SerializationTest
|
|||||||
},
|
},
|
||||||
""usage"": {
|
""usage"": {
|
||||||
""input_tokens"": 1,
|
""input_tokens"": 1,
|
||||||
""output_tokens"": 1
|
""output_tokens"": 1,
|
||||||
|
""cache_creation_input_tokens"": 1,
|
||||||
|
""cache_read_input_tokens"": 1
|
||||||
}
|
}
|
||||||
}";
|
}";
|
||||||
|
|
||||||
@@ -18,7 +20,13 @@ public class MessageDeltaEventDataTests : SerializationTest
|
|||||||
public void Constructor_WhenCalled_ItShouldInitializeProperties()
|
public void Constructor_WhenCalled_ItShouldInitializeProperties()
|
||||||
{
|
{
|
||||||
var expectedDelta = new MessageDelta("max_tokens", "max_tokens");
|
var expectedDelta = new MessageDelta("max_tokens", "max_tokens");
|
||||||
var expectedUsage = new Usage { InputTokens = 1, OutputTokens = 1 };
|
var expectedUsage = new Usage
|
||||||
|
{
|
||||||
|
InputTokens = 1,
|
||||||
|
OutputTokens = 1,
|
||||||
|
CacheCreationInputTokens = 1,
|
||||||
|
CacheReadInputTokens = 1,
|
||||||
|
};
|
||||||
|
|
||||||
var messageDeltaEventData = new MessageDeltaEventData(expectedDelta, expectedUsage);
|
var messageDeltaEventData = new MessageDeltaEventData(expectedDelta, expectedUsage);
|
||||||
|
|
||||||
@@ -30,7 +38,13 @@ public class MessageDeltaEventDataTests : SerializationTest
|
|||||||
public void JsonSerialization_WhenSerialized_ItShouldHaveExpectedShape()
|
public void JsonSerialization_WhenSerialized_ItShouldHaveExpectedShape()
|
||||||
{
|
{
|
||||||
var expectedDelta = new MessageDelta("max_tokens", "max_tokens");
|
var expectedDelta = new MessageDelta("max_tokens", "max_tokens");
|
||||||
var expectedUsage = new Usage { InputTokens = 1, OutputTokens = 1 };
|
var expectedUsage = new Usage
|
||||||
|
{
|
||||||
|
InputTokens = 1,
|
||||||
|
OutputTokens = 1,
|
||||||
|
CacheCreationInputTokens = 1,
|
||||||
|
CacheReadInputTokens = 1,
|
||||||
|
};
|
||||||
|
|
||||||
var messageDeltaEventData = new MessageDeltaEventData(expectedDelta, expectedUsage);
|
var messageDeltaEventData = new MessageDeltaEventData(expectedDelta, expectedUsage);
|
||||||
|
|
||||||
@@ -43,7 +57,13 @@ public class MessageDeltaEventDataTests : SerializationTest
|
|||||||
public void JsonDeserialization_WhenDeserialized_ItShouldHaveExpectedValues()
|
public void JsonDeserialization_WhenDeserialized_ItShouldHaveExpectedValues()
|
||||||
{
|
{
|
||||||
var expectedDelta = new MessageDelta("max_tokens", "max_tokens");
|
var expectedDelta = new MessageDelta("max_tokens", "max_tokens");
|
||||||
var expectedUsage = new Usage { InputTokens = 1, OutputTokens = 1 };
|
var expectedUsage = new Usage
|
||||||
|
{
|
||||||
|
InputTokens = 1,
|
||||||
|
OutputTokens = 1,
|
||||||
|
CacheCreationInputTokens = 1,
|
||||||
|
CacheReadInputTokens = 1,
|
||||||
|
};
|
||||||
|
|
||||||
var messageDeltaEventData = Deserialize<MessageDeltaEventData>(_testJson);
|
var messageDeltaEventData = Deserialize<MessageDeltaEventData>(_testJson);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,10 @@ public class MessageRequestTests : SerializationTest
|
|||||||
{
|
{
|
||||||
private readonly string _testJson = @"{
|
private readonly string _testJson = @"{
|
||||||
""model"": ""claude-3-sonnet-20240229"",
|
""model"": ""claude-3-sonnet-20240229"",
|
||||||
""system"": ""test-system"",
|
""system"": [{
|
||||||
|
""type"": ""text"",
|
||||||
|
""text"": ""test-system""
|
||||||
|
}],
|
||||||
""messages"": [
|
""messages"": [
|
||||||
{ ""role"": ""user"", ""content"": [{ ""text"": ""Hello!"", ""type"": ""text"" }] }
|
{ ""role"": ""user"", ""content"": [{ ""text"": ""Hello!"", ""type"": ""text"" }] }
|
||||||
],
|
],
|
||||||
@@ -21,7 +24,10 @@ public class MessageRequestTests : SerializationTest
|
|||||||
|
|
||||||
private readonly string _testJsonWithAnyToolChoice = @"{
|
private readonly string _testJsonWithAnyToolChoice = @"{
|
||||||
""model"": ""claude-3-sonnet-20240229"",
|
""model"": ""claude-3-sonnet-20240229"",
|
||||||
""system"": ""test-system"",
|
""system"": [{
|
||||||
|
""type"": ""text"",
|
||||||
|
""text"": ""test-system""
|
||||||
|
}],
|
||||||
""messages"":[
|
""messages"":[
|
||||||
{ ""role"": ""user"", ""content"": [{ ""text"": ""Hello!"", ""type"":""text"" }] }
|
{ ""role"": ""user"", ""content"": [{ ""text"": ""Hello!"", ""type"":""text"" }] }
|
||||||
],
|
],
|
||||||
@@ -38,7 +44,10 @@ public class MessageRequestTests : SerializationTest
|
|||||||
|
|
||||||
private readonly string _testJsonWithSpecificToolChoice = @"{
|
private readonly string _testJsonWithSpecificToolChoice = @"{
|
||||||
""model"": ""claude-3-sonnet-20240229"",
|
""model"": ""claude-3-sonnet-20240229"",
|
||||||
""system"": ""test-system"",
|
""system"": [{
|
||||||
|
""type"": ""text"",
|
||||||
|
""text"": ""test-system""
|
||||||
|
}],
|
||||||
""messages"": [
|
""messages"": [
|
||||||
{ ""role"": ""user"", ""content"": [{ ""text"": ""Hello!"", ""type"": ""text"" }] }
|
{ ""role"": ""user"", ""content"": [{ ""text"": ""Hello!"", ""type"": ""text"" }] }
|
||||||
],
|
],
|
||||||
@@ -55,7 +64,10 @@ public class MessageRequestTests : SerializationTest
|
|||||||
|
|
||||||
private readonly string _testJsonWithImageContent = @"{
|
private readonly string _testJsonWithImageContent = @"{
|
||||||
""model"": ""claude-3-sonnet-20240229"",
|
""model"": ""claude-3-sonnet-20240229"",
|
||||||
""system"": ""test-system"",
|
""system"": [{
|
||||||
|
""type"": ""text"",
|
||||||
|
""text"": ""test-system""
|
||||||
|
}],
|
||||||
""messages"":[
|
""messages"":[
|
||||||
{
|
{
|
||||||
""role"": ""user"",
|
""role"": ""user"",
|
||||||
@@ -80,7 +92,10 @@ public class MessageRequestTests : SerializationTest
|
|||||||
|
|
||||||
private readonly string _testJsonWithUnknownContent = @"{
|
private readonly string _testJsonWithUnknownContent = @"{
|
||||||
""model"": ""claude-3-sonnet-20240229"",
|
""model"": ""claude-3-sonnet-20240229"",
|
||||||
""system"": ""test-system"",
|
""system"": [{
|
||||||
|
""type"": ""text"",
|
||||||
|
""text"": ""test-system""
|
||||||
|
}],
|
||||||
""messages"": [{ ""role"": ""user"", ""content"": [{ ""type"": ""unknown"", ""text"": ""text"" }] }],
|
""messages"": [{ ""role"": ""user"", ""content"": [{ ""type"": ""unknown"", ""text"": ""text"" }] }],
|
||||||
""max_tokens"": 512,
|
""max_tokens"": 512,
|
||||||
""metadata"": { ""test"": ""test"" },
|
""metadata"": { ""test"": ""test"" },
|
||||||
@@ -95,7 +110,10 @@ public class MessageRequestTests : SerializationTest
|
|||||||
|
|
||||||
private readonly string _testJsonWithToolUseContent = @"{
|
private readonly string _testJsonWithToolUseContent = @"{
|
||||||
""model"": ""claude-3-sonnet-20240229"",
|
""model"": ""claude-3-sonnet-20240229"",
|
||||||
""system"": ""test-system"",
|
""system"": [{
|
||||||
|
""type"": ""text"",
|
||||||
|
""text"": ""test-system""
|
||||||
|
}],
|
||||||
""messages"": [
|
""messages"": [
|
||||||
{
|
{
|
||||||
""role"": ""assistant"",
|
""role"": ""assistant"",
|
||||||
@@ -124,7 +142,10 @@ public class MessageRequestTests : SerializationTest
|
|||||||
|
|
||||||
private readonly string _testJsonWithToolResultContent = @"{
|
private readonly string _testJsonWithToolResultContent = @"{
|
||||||
""model"": ""claude-3-sonnet-20240229"",
|
""model"": ""claude-3-sonnet-20240229"",
|
||||||
""system"": ""test-system"",
|
""system"": [{
|
||||||
|
""type"": ""text"",
|
||||||
|
""text"": ""test-system""
|
||||||
|
}],
|
||||||
""messages"": [
|
""messages"": [
|
||||||
{
|
{
|
||||||
""role"": ""assistant"",
|
""role"": ""assistant"",
|
||||||
@@ -307,7 +328,7 @@ public class MessageRequestTests : SerializationTest
|
|||||||
var messageRequest = Deserialize<MessageRequest>(_testJson);
|
var messageRequest = Deserialize<MessageRequest>(_testJson);
|
||||||
|
|
||||||
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
||||||
messageRequest.System.Should().Be("test-system");
|
messageRequest.System.Should().BeNull();
|
||||||
messageRequest.Messages.Should().HaveCount(1);
|
messageRequest.Messages.Should().HaveCount(1);
|
||||||
messageRequest.MaxTokens.Should().Be(512);
|
messageRequest.MaxTokens.Should().Be(512);
|
||||||
messageRequest.Metadata.Should().HaveCount(1);
|
messageRequest.Metadata.Should().HaveCount(1);
|
||||||
@@ -330,7 +351,7 @@ public class MessageRequestTests : SerializationTest
|
|||||||
var messageRequest = Deserialize<MessageRequest>(_testJsonWithAnyToolChoice);
|
var messageRequest = Deserialize<MessageRequest>(_testJsonWithAnyToolChoice);
|
||||||
|
|
||||||
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
||||||
messageRequest.System.Should().Be("test-system");
|
messageRequest.System.Should().BeNull();
|
||||||
messageRequest.Messages.Should().HaveCount(1);
|
messageRequest.Messages.Should().HaveCount(1);
|
||||||
messageRequest.MaxTokens.Should().Be(512);
|
messageRequest.MaxTokens.Should().Be(512);
|
||||||
messageRequest.Metadata.Should().HaveCount(1);
|
messageRequest.Metadata.Should().HaveCount(1);
|
||||||
@@ -352,7 +373,7 @@ public class MessageRequestTests : SerializationTest
|
|||||||
var messageRequest = Deserialize<MessageRequest>(_testJsonWithSpecificToolChoice);
|
var messageRequest = Deserialize<MessageRequest>(_testJsonWithSpecificToolChoice);
|
||||||
|
|
||||||
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
||||||
messageRequest.System.Should().Be("test-system");
|
messageRequest.System.Should().BeNull();
|
||||||
messageRequest.Messages.Should().HaveCount(1);
|
messageRequest.Messages.Should().HaveCount(1);
|
||||||
messageRequest.MaxTokens.Should().Be(512);
|
messageRequest.MaxTokens.Should().Be(512);
|
||||||
messageRequest.Metadata.Should().HaveCount(1);
|
messageRequest.Metadata.Should().HaveCount(1);
|
||||||
@@ -387,7 +408,7 @@ public class MessageRequestTests : SerializationTest
|
|||||||
var messageRequest = Deserialize<MessageRequest>(_testJsonWithImageContent);
|
var messageRequest = Deserialize<MessageRequest>(_testJsonWithImageContent);
|
||||||
|
|
||||||
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
||||||
messageRequest.System.Should().Be("test-system");
|
messageRequest.System.Should().BeNull();
|
||||||
messageRequest.Messages.Should().HaveCount(1);
|
messageRequest.Messages.Should().HaveCount(1);
|
||||||
messageRequest.MaxTokens.Should().Be(512);
|
messageRequest.MaxTokens.Should().Be(512);
|
||||||
messageRequest.Metadata.Should().HaveCount(1);
|
messageRequest.Metadata.Should().HaveCount(1);
|
||||||
@@ -416,7 +437,7 @@ public class MessageRequestTests : SerializationTest
|
|||||||
var messageRequest = Deserialize<MessageRequest>(_testJsonWithToolUseContent);
|
var messageRequest = Deserialize<MessageRequest>(_testJsonWithToolUseContent);
|
||||||
|
|
||||||
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
||||||
messageRequest.System.Should().Be("test-system");
|
messageRequest.System.Should().BeNull();
|
||||||
messageRequest.Messages.Should().HaveCount(1);
|
messageRequest.Messages.Should().HaveCount(1);
|
||||||
messageRequest.MaxTokens.Should().Be(512);
|
messageRequest.MaxTokens.Should().Be(512);
|
||||||
messageRequest.Metadata.Should().HaveCount(1);
|
messageRequest.Metadata.Should().HaveCount(1);
|
||||||
@@ -447,7 +468,7 @@ public class MessageRequestTests : SerializationTest
|
|||||||
var messageRequest = Deserialize<MessageRequest>(_testJsonWithToolResultContent);
|
var messageRequest = Deserialize<MessageRequest>(_testJsonWithToolResultContent);
|
||||||
|
|
||||||
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
||||||
messageRequest.System.Should().Be("test-system");
|
messageRequest.System.Should().BeNull();
|
||||||
messageRequest.Messages.Should().HaveCount(1);
|
messageRequest.Messages.Should().HaveCount(1);
|
||||||
messageRequest.MaxTokens.Should().Be(512);
|
messageRequest.MaxTokens.Should().Be(512);
|
||||||
messageRequest.Metadata.Should().HaveCount(1);
|
messageRequest.Metadata.Should().HaveCount(1);
|
||||||
|
|||||||
@@ -53,7 +53,12 @@ public class MessageResponseTests : SerializationTest
|
|||||||
""stop_reason"": ""stop reason"",
|
""stop_reason"": ""stop reason"",
|
||||||
""stop_sequence"": ""stop sequence"",
|
""stop_sequence"": ""stop sequence"",
|
||||||
""type"": ""type"",
|
""type"": ""type"",
|
||||||
""usage"": { ""input_tokens"": 1, ""output_tokens"": 2 },
|
""usage"": {
|
||||||
|
""input_tokens"": 1,
|
||||||
|
""output_tokens"": 2,
|
||||||
|
""cache_creation_input_tokens"": 0,
|
||||||
|
""cache_read_input_tokens"": 0
|
||||||
|
},
|
||||||
""content"": [
|
""content"": [
|
||||||
{ ""text"": ""text content"", ""type"": ""text"" }
|
{ ""text"": ""text content"", ""type"": ""text"" }
|
||||||
]
|
]
|
||||||
@@ -93,7 +98,12 @@ public class MessageResponseTests : SerializationTest
|
|||||||
""stop_reason"": ""stop reason"",
|
""stop_reason"": ""stop reason"",
|
||||||
""stop_sequence"": ""stop sequence"",
|
""stop_sequence"": ""stop sequence"",
|
||||||
""type"": ""type"",
|
""type"": ""type"",
|
||||||
""usage"": { ""input_tokens"": 1, ""output_tokens"": 2 },
|
""usage"": {
|
||||||
|
""input_tokens"": 1,
|
||||||
|
""output_tokens"": 2,
|
||||||
|
""cache_creation_input_tokens"": 0,
|
||||||
|
""cache_read_input_tokens"": 0
|
||||||
|
},
|
||||||
""content"": [
|
""content"": [
|
||||||
{ ""text"": ""text content"", ""type"": ""text"" }
|
{ ""text"": ""text content"", ""type"": ""text"" }
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -14,7 +14,9 @@ public class MessageStartEventDataTests : SerializationTest
|
|||||||
""stop_sequence"": """",
|
""stop_sequence"": """",
|
||||||
""usage"": {
|
""usage"": {
|
||||||
""input_tokens"": 25,
|
""input_tokens"": 25,
|
||||||
""output_tokens"": 1
|
""output_tokens"": 1,
|
||||||
|
""cache_creation_input_tokens"": 0,
|
||||||
|
""cache_read_input_tokens"": 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}";
|
}";
|
||||||
|
|||||||
@@ -4,7 +4,10 @@ public class StreamMessageRequestTests : SerializationTest
|
|||||||
{
|
{
|
||||||
private readonly string _testJson = @"{
|
private readonly string _testJson = @"{
|
||||||
""model"": ""claude-3-sonnet-20240229"",
|
""model"": ""claude-3-sonnet-20240229"",
|
||||||
""system"": ""test-system"",
|
""system"": [{
|
||||||
|
""type"": ""text"",
|
||||||
|
""text"": ""test-system""
|
||||||
|
}],
|
||||||
""messages"": [
|
""messages"": [
|
||||||
{ ""role"": ""user"", ""content"": [{ ""text"": ""Hello!"", ""type"": ""text"" }] }
|
{ ""role"": ""user"", ""content"": [{ ""text"": ""Hello!"", ""type"": ""text"" }] }
|
||||||
],
|
],
|
||||||
@@ -178,7 +181,7 @@ public class StreamMessageRequestTests : SerializationTest
|
|||||||
var messageRequest = Deserialize<StreamMessageRequest>(_testJson);
|
var messageRequest = Deserialize<StreamMessageRequest>(_testJson);
|
||||||
|
|
||||||
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
messageRequest!.Model.Should().Be(AnthropicModels.Claude3Sonnet);
|
||||||
messageRequest.System.Should().Be("test-system");
|
messageRequest.System.Should().BeNull();
|
||||||
messageRequest.Messages.Should().HaveCount(1);
|
messageRequest.Messages.Should().HaveCount(1);
|
||||||
messageRequest.MaxTokens.Should().Be(512);
|
messageRequest.MaxTokens.Should().Be(512);
|
||||||
messageRequest.Metadata.Should().HaveCount(1);
|
messageRequest.Metadata.Should().HaveCount(1);
|
||||||
|
|||||||
@@ -7,26 +7,39 @@ public class UsageTests : SerializationTest
|
|||||||
{
|
{
|
||||||
var expectedInputTokens = 1;
|
var expectedInputTokens = 1;
|
||||||
var expectedOutputTokens = 2;
|
var expectedOutputTokens = 2;
|
||||||
|
var expectedCacheCreationInputTokens = 3;
|
||||||
|
var expectedCacheReadInputTokens = 4;
|
||||||
|
|
||||||
var usage = new Usage
|
var usage = new Usage
|
||||||
{
|
{
|
||||||
InputTokens = expectedInputTokens,
|
InputTokens = expectedInputTokens,
|
||||||
OutputTokens = expectedOutputTokens
|
OutputTokens = expectedOutputTokens,
|
||||||
|
CacheCreationInputTokens = expectedCacheCreationInputTokens,
|
||||||
|
CacheReadInputTokens = expectedCacheReadInputTokens
|
||||||
};
|
};
|
||||||
|
|
||||||
usage.InputTokens.Should().Be(expectedInputTokens);
|
usage.InputTokens.Should().Be(expectedInputTokens);
|
||||||
usage.OutputTokens.Should().Be(expectedOutputTokens);
|
usage.OutputTokens.Should().Be(expectedOutputTokens);
|
||||||
|
usage.CacheCreationInputTokens.Should().Be(expectedCacheCreationInputTokens);
|
||||||
|
usage.CacheReadInputTokens.Should().Be(expectedCacheReadInputTokens);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void JsonSerialization_WhenCalled_ItShouldSerializeCorrectly()
|
public void JsonSerialization_WhenCalled_ItShouldSerializeCorrectly()
|
||||||
{
|
{
|
||||||
var expectedJson = @"{ ""input_tokens"": 1, ""output_tokens"": 2 }";
|
var expectedJson = @"{
|
||||||
|
""input_tokens"": 1,
|
||||||
|
""output_tokens"": 2,
|
||||||
|
""cache_creation_input_tokens"": 3,
|
||||||
|
""cache_read_input_tokens"": 4
|
||||||
|
}";
|
||||||
|
|
||||||
var usage = new Usage
|
var usage = new Usage
|
||||||
{
|
{
|
||||||
InputTokens = 1,
|
InputTokens = 1,
|
||||||
OutputTokens = 2
|
OutputTokens = 2,
|
||||||
|
CacheCreationInputTokens = 3,
|
||||||
|
CacheReadInputTokens = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
var actual = Serialize(usage);
|
var actual = Serialize(usage);
|
||||||
@@ -37,11 +50,18 @@ public class UsageTests : SerializationTest
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void JsonDeserialization_WhenCalled_ItShouldDeserializeCorrectly()
|
public void JsonDeserialization_WhenCalled_ItShouldDeserializeCorrectly()
|
||||||
{
|
{
|
||||||
var json = @"{ ""input_tokens"": 1, ""output_tokens"": 2 }";
|
var json = @"{
|
||||||
|
""input_tokens"": 1,
|
||||||
|
""output_tokens"": 2,
|
||||||
|
""cache_creation_input_tokens"": 3,
|
||||||
|
""cache_read_input_tokens"": 4
|
||||||
|
}";
|
||||||
|
|
||||||
var usage = Deserialize<Usage>(json);
|
var usage = Deserialize<Usage>(json);
|
||||||
|
|
||||||
usage!.InputTokens.Should().Be(1);
|
usage!.InputTokens.Should().Be(1);
|
||||||
usage.OutputTokens.Should().Be(2);
|
usage.OutputTokens.Should().Be(2);
|
||||||
|
usage.CacheCreationInputTokens.Should().Be(3);
|
||||||
|
usage.CacheReadInputTokens.Should().Be(4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user