diff --git a/src/AnthropicClient/Models/AnthropicModels.cs b/src/AnthropicClient/Models/AnthropicModels.cs index 8fb437b..f5165d9 100644 --- a/src/AnthropicClient/Models/AnthropicModels.cs +++ b/src/AnthropicClient/Models/AnthropicModels.cs @@ -6,24 +6,84 @@ namespace AnthropicClient.Models; public static class AnthropicModels { /// - /// The Claude-3 Opus model. + /// The Claude 3 Opus model. /// public const string Claude3Opus = "claude-3-opus-20240229"; /// - /// The Claude-3 Sonnet model. + /// The Claude 3 Opus model. + /// + public const string Claude3Opus20241022 = "claude-3-opus-20240229"; + + /// + /// The Claude 3 Opus model. + /// + public const string Claude3OpusLatest = "claude-3-opus-latest"; + + /// + /// The Claude 3 Sonnet model. /// public const string Claude3Sonnet = "claude-3-sonnet-20240229"; /// - /// The Claude-3.5 Sonnet model. + /// The Claude 3 Sonnet model. + /// + public const string Claude3Sonnet20240229 = "claude-3-sonnet-20240229"; + + /// + /// The Claude 3.5 Sonnet model. /// public const string Claude35Sonnet = "claude-3-5-sonnet-20240620"; /// - /// The Claude-3 Haiku model. + /// The Claude 3.5 Sonnet model. + /// + public const string Claude35Sonnet20240620 = "claude-3-5-sonnet-20240620"; + + /// + /// The Claude 3.5 Sonnet model. + /// + public const string Claude35Sonnet20241022 = "claude-3-5-sonnet-20241022"; + + /// + /// The Claude 3.5 Sonnet model. + /// + public const string Claude35SonnetLatest = "claude-3-5-sonnet-latest"; + + /// + /// The Claude 3 Haiku model. /// public const string Claude3Haiku = "claude-3-haiku-20240307"; - internal static bool IsValidModel(string modelId) => modelId is Claude3Opus or Claude3Sonnet or Claude35Sonnet or Claude3Haiku; + /// + /// The Claude 3 Haiku model. + /// + public const string Claude3Haiku20240307 = "claude-3-haiku-20240307"; + + /// + /// The Claude 3.5 Haiku model. + /// + public const string Claude35Haiku20241022 = "claude-3-5-haiku-20241022"; + + /// + /// The Claude 3.5 Haiku model. + /// + public const string Claude35HaikuLatest = "claude-3-5-haiku-latest"; + + internal static bool IsValidModel(string modelId) => modelId is + Claude3Opus or + Claude3Opus20241022 or + Claude3OpusLatest or + + Claude3Sonnet or + Claude3Sonnet20240229 or + Claude35Sonnet or + Claude35Sonnet20240620 or + Claude35Sonnet20241022 or + Claude35SonnetLatest or + + Claude3Haiku or + Claude3Haiku20240307 or + Claude35Haiku20241022 or + Claude35HaikuLatest; } \ No newline at end of file diff --git a/tests/AnthropicClient.Tests/Unit/Models/AnthropicModelsTests.cs b/tests/AnthropicClient.Tests/Unit/Models/AnthropicModelsTests.cs index c28c358..396edbd 100644 --- a/tests/AnthropicClient.Tests/Unit/Models/AnthropicModelsTests.cs +++ b/tests/AnthropicClient.Tests/Unit/Models/AnthropicModelsTests.cs @@ -12,6 +12,26 @@ public class AnthropicModelsTests actual.Should().Be(expected); } + [Fact] + public void Claude3Opus20241022_WhenCalled_ItShouldReturnExpectedValue() + { + var expected = "claude-3-opus-20240229"; + + var actual = AnthropicModels.Claude3Opus20241022; + + actual.Should().Be(expected); + } + + [Fact] + public void Claude3OpusLatest_WhenCalled_ItShouldReturnExpectedValue() + { + var expected = "claude-3-opus-latest"; + + var actual = AnthropicModels.Claude3OpusLatest; + + actual.Should().Be(expected); + } + [Fact] public void Claude3Sonnet_WhenCalled_ItShouldReturnExpectedValue() { @@ -22,6 +42,16 @@ public class AnthropicModelsTests actual.Should().Be(expected); } + [Fact] + public void Claude3Sonnet20240229_WhenCalled_ItShouldReturnExpectedValue() + { + var expected = "claude-3-sonnet-20240229"; + + var actual = AnthropicModels.Claude3Sonnet20240229; + + actual.Should().Be(expected); + } + [Fact] public void Claude35Sonnet_WhenCalled_ItShouldReturnExpectedValue() { @@ -32,6 +62,36 @@ public class AnthropicModelsTests actual.Should().Be(expected); } + [Fact] + public void Claude35Sonnet20240620_WhenCalled_ItShouldReturnExpectedValue() + { + var expected = "claude-3-5-sonnet-20240620"; + + var actual = AnthropicModels.Claude35Sonnet20240620; + + actual.Should().Be(expected); + } + + [Fact] + public void Claude35Sonnet20241022_WhenCalled_ItShouldReturnExpectedValue() + { + var expected = "claude-3-5-sonnet-20241022"; + + var actual = AnthropicModels.Claude35Sonnet20241022; + + actual.Should().Be(expected); + } + + [Fact] + public void Claude35SonnetLatest_WhenCalled_ItShouldReturnExpectedValue() + { + var expected = "claude-3-5-sonnet-latest"; + + var actual = AnthropicModels.Claude35SonnetLatest; + + actual.Should().Be(expected); + } + [Fact] public void Claude3Haiku_WhenCalled_ItShouldReturnExpectedValue() { @@ -43,20 +103,45 @@ public class AnthropicModelsTests } [Fact] - public void Claude35Sonnet_WhenCalled_ItShouldExpectedValue() + public void Claude3Haiku20240307_WhenCalled_ItShouldReturnExpectedValue() { - var expected = "claude-3-5-sonnet-20240620"; + var expected = "claude-3-haiku-20240307"; - var actual = AnthropicModels.Claude35Sonnet; + var actual = AnthropicModels.Claude3Haiku20240307; + + actual.Should().Be(expected); + } + + [Fact] + public void Claude35Haiku_WhenCalled_ItShouldReturnExpectedValue() + { + var expected = "claude-3-5-haiku-20241022"; + + var actual = AnthropicModels.Claude35Haiku20241022; + + actual.Should().Be(expected); + } + + [Fact] + public void Claude35HaikuLatest_WhenCalled_ItShouldReturnExpectedValue() + { + var expected = "claude-3-5-haiku-latest"; + + var actual = AnthropicModels.Claude35HaikuLatest; actual.Should().Be(expected); } [Theory] [InlineData("claude-3-opus-20240229", true)] + [InlineData("claude-3-opus-latest", true)] [InlineData("claude-3-sonnet-20240229", true)] [InlineData("claude-3-5-sonnet-20240620", true)] + [InlineData("claude-3-5-sonnet-20241022", true)] + [InlineData("claude-3-5-sonnet-latest", true)] [InlineData("claude-3-haiku-20240307", true)] + [InlineData("claude-3-5-haiku-20241022", true)] + [InlineData("claude-3-5-haiku-latest", true)] [InlineData("invalid", false)] public void IsValidModel_WhenCalled_ItShouldReturnExpectedValue(string modelId, bool expected) {