You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

ChatRequestSettingsConverterTests.cs 4.4 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using LLamaSharp.SemanticKernel.ChatCompletion;
  2. using System.Text.Json;
  3. namespace LLama.Unittest.SemanticKernel
  4. {
  5. public class ChatRequestSettingsConverterTests
  6. {
  7. [Fact]
  8. public void ChatRequestSettingsConverter_DeserializeWithDefaults()
  9. {
  10. // Arrange
  11. var options = new JsonSerializerOptions();
  12. options.Converters.Add(new ChatRequestSettingsConverter());
  13. var json = "{}";
  14. // Act
  15. var requestSettings = JsonSerializer.Deserialize<ChatRequestSettings>(json, options);
  16. // Assert
  17. Assert.NotNull(requestSettings);
  18. Assert.Equal(0, requestSettings.FrequencyPenalty);
  19. Assert.Null(requestSettings.MaxTokens);
  20. Assert.Equal(0, requestSettings.PresencePenalty);
  21. Assert.Equal(1, requestSettings.ResultsPerPrompt);
  22. Assert.NotNull(requestSettings.StopSequences);
  23. Assert.Empty(requestSettings.StopSequences);
  24. Assert.Equal(0, requestSettings.Temperature);
  25. Assert.NotNull(requestSettings.TokenSelectionBiases);
  26. Assert.Empty(requestSettings.TokenSelectionBiases);
  27. Assert.Equal(0, requestSettings.TopP);
  28. }
  29. [Fact]
  30. public void ChatRequestSettingsConverter_DeserializeWithSnakeCase()
  31. {
  32. // Arrange
  33. var options = new JsonSerializerOptions();
  34. options.AllowTrailingCommas = true;
  35. options.Converters.Add(new ChatRequestSettingsConverter());
  36. var json = @"{
  37. ""frequency_penalty"": 0.5,
  38. ""max_tokens"": 250,
  39. ""presence_penalty"": 0.5,
  40. ""results_per_prompt"": -1,
  41. ""stop_sequences"": [ ""foo"", ""bar"" ],
  42. ""temperature"": 0.5,
  43. ""token_selection_biases"": { ""1"": 2, ""3"": 4 },
  44. ""top_p"": 0.5,
  45. }";
  46. // Act
  47. var requestSettings = JsonSerializer.Deserialize<ChatRequestSettings>(json, options);
  48. // Assert
  49. Assert.NotNull(requestSettings);
  50. Assert.Equal(0.5, requestSettings.FrequencyPenalty);
  51. Assert.Equal(250, requestSettings.MaxTokens);
  52. Assert.Equal(0.5, requestSettings.PresencePenalty);
  53. Assert.Equal(-1, requestSettings.ResultsPerPrompt);
  54. Assert.NotNull(requestSettings.StopSequences);
  55. Assert.Contains("foo", requestSettings.StopSequences);
  56. Assert.Contains("bar", requestSettings.StopSequences);
  57. Assert.Equal(0.5, requestSettings.Temperature);
  58. Assert.NotNull(requestSettings.TokenSelectionBiases);
  59. Assert.Equal(2, requestSettings.TokenSelectionBiases[1]);
  60. Assert.Equal(4, requestSettings.TokenSelectionBiases[3]);
  61. Assert.Equal(0.5, requestSettings.TopP);
  62. }
  63. [Fact]
  64. public void ChatRequestSettingsConverter_DeserializeWithPascalCase()
  65. {
  66. // Arrange
  67. var options = new JsonSerializerOptions();
  68. options.AllowTrailingCommas = true;
  69. options.Converters.Add(new ChatRequestSettingsConverter());
  70. var json = @"{
  71. ""FrequencyPenalty"": 0.5,
  72. ""MaxTokens"": 250,
  73. ""PresencePenalty"": 0.5,
  74. ""ResultsPerPrompt"": -1,
  75. ""StopSequences"": [ ""foo"", ""bar"" ],
  76. ""Temperature"": 0.5,
  77. ""TokenSelectionBiases"": { ""1"": 2, ""3"": 4 },
  78. ""TopP"": 0.5,
  79. }";
  80. // Act
  81. var requestSettings = JsonSerializer.Deserialize<ChatRequestSettings>(json, options);
  82. // Assert
  83. Assert.NotNull(requestSettings);
  84. Assert.Equal(0.5, requestSettings.FrequencyPenalty);
  85. Assert.Equal(250, requestSettings.MaxTokens);
  86. Assert.Equal(0.5, requestSettings.PresencePenalty);
  87. Assert.Equal(-1, requestSettings.ResultsPerPrompt);
  88. Assert.NotNull(requestSettings.StopSequences);
  89. Assert.Contains("foo", requestSettings.StopSequences);
  90. Assert.Contains("bar", requestSettings.StopSequences);
  91. Assert.Equal(0.5, requestSettings.Temperature);
  92. Assert.NotNull(requestSettings.TokenSelectionBiases);
  93. Assert.Equal(2, requestSettings.TokenSelectionBiases[1]);
  94. Assert.Equal(4, requestSettings.TokenSelectionBiases[3]);
  95. Assert.Equal(0.5, requestSettings.TopP);
  96. }
  97. }
  98. }