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.5 kB

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