LLamaSharp/LLama.Unittest/SemanticKernel/ChatRequestSettingsTests.cs

170 lines
6.7 KiB
C#

using LLamaSharp.SemanticKernel.ChatCompletion;
using Microsoft.SemanticKernel;
namespace LLama.Unittest.SemanticKernel
{
public class ChatRequestSettingsTests
{
[Fact]
public void ChatRequestSettings_FromRequestSettingsNull()
{
// Arrange
// Act
var requestSettings = ChatRequestSettings.FromRequestSettings(null, null);
// Assert
Assert.NotNull(requestSettings);
Assert.Equal(0, requestSettings.FrequencyPenalty);
Assert.Null(requestSettings.MaxTokens);
Assert.Equal(0, requestSettings.PresencePenalty);
Assert.Equal(1, requestSettings.ResultsPerPrompt);
Assert.NotNull(requestSettings.StopSequences);
Assert.Empty(requestSettings.StopSequences);
Assert.Equal(0, requestSettings.Temperature);
Assert.NotNull(requestSettings.TokenSelectionBiases);
Assert.Empty(requestSettings.TokenSelectionBiases);
Assert.Equal(0, requestSettings.TopP);
}
[Fact]
public void ChatRequestSettings_FromRequestSettingsNullWithMaxTokens()
{
// Arrange
// Act
var requestSettings = ChatRequestSettings.FromRequestSettings(null, 200);
// Assert
Assert.NotNull(requestSettings);
Assert.Equal(0, requestSettings.FrequencyPenalty);
Assert.Equal(200, requestSettings.MaxTokens);
Assert.Equal(0, requestSettings.PresencePenalty);
Assert.Equal(1, requestSettings.ResultsPerPrompt);
Assert.NotNull(requestSettings.StopSequences);
Assert.Empty(requestSettings.StopSequences);
Assert.Equal(0, requestSettings.Temperature);
Assert.NotNull(requestSettings.TokenSelectionBiases);
Assert.Empty(requestSettings.TokenSelectionBiases);
Assert.Equal(0, requestSettings.TopP);
}
[Fact]
public void ChatRequestSettings_FromExistingRequestSettings()
{
// Arrange
var originalRequestSettings = new ChatRequestSettings()
{
FrequencyPenalty = 0.5,
MaxTokens = 100,
PresencePenalty = 0.5,
ResultsPerPrompt = -1,
StopSequences = new[] { "foo", "bar" },
Temperature = 0.5,
TokenSelectionBiases = new Dictionary<int, int>() { { 1, 2 }, { 3, 4 } },
TopP = 0.5,
};
// Act
var requestSettings = ChatRequestSettings.FromRequestSettings(originalRequestSettings);
// Assert
Assert.NotNull(requestSettings);
Assert.Equal(originalRequestSettings, requestSettings);
}
[Fact]
public void ChatRequestSettings_FromAIRequestSettings()
{
// Arrange
var originalRequestSettings = new PromptExecutionSettings()
{
ModelId = "test",
};
// Act
var requestSettings = ChatRequestSettings.FromRequestSettings(originalRequestSettings);
// Assert
Assert.NotNull(requestSettings);
Assert.Equal(originalRequestSettings.ModelId, requestSettings.ModelId);
}
[Fact]
public void ChatRequestSettings_FromAIRequestSettingsWithExtraPropertiesInSnakeCase()
{
// Arrange
var originalRequestSettings = new PromptExecutionSettings()
{
ModelId = "test",
ExtensionData = new Dictionary<string, object>
{
{ "frequency_penalty", 0.5 },
{ "max_tokens", 250 },
{ "presence_penalty", 0.5 },
{ "results_per_prompt", -1 },
{ "stop_sequences", new [] { "foo", "bar" } },
{ "temperature", 0.5 },
{ "token_selection_biases", new Dictionary<int, int>() { { 1, 2 }, { 3, 4 } } },
{ "top_p", 0.5 },
}
};
// Act
var requestSettings = ChatRequestSettings.FromRequestSettings(originalRequestSettings);
// Assert
Assert.NotNull(requestSettings);
Assert.Equal(0.5, requestSettings.FrequencyPenalty);
Assert.Equal(250, requestSettings.MaxTokens);
Assert.Equal(0.5, requestSettings.PresencePenalty);
Assert.Equal(-1, requestSettings.ResultsPerPrompt);
Assert.NotNull(requestSettings.StopSequences);
Assert.Contains("foo", requestSettings.StopSequences);
Assert.Contains("bar", requestSettings.StopSequences);
Assert.Equal(0.5, requestSettings.Temperature);
Assert.NotNull(requestSettings.TokenSelectionBiases);
Assert.Equal(2, requestSettings.TokenSelectionBiases[1]);
Assert.Equal(4, requestSettings.TokenSelectionBiases[3]);
Assert.Equal(0.5, requestSettings.TopP);
}
[Fact]
public void ChatRequestSettings_FromAIRequestSettingsWithExtraPropertiesInPascalCase()
{
// Arrange
var originalRequestSettings = new PromptExecutionSettings()
{
ModelId = "test",
ExtensionData = new Dictionary<string, object>
{
{ "FrequencyPenalty", 0.5 },
{ "MaxTokens", 250 },
{ "PresencePenalty", 0.5 },
{ "ResultsPerPrompt", -1 },
{ "StopSequences", new [] { "foo", "bar" } },
{ "Temperature", 0.5 },
{ "TokenSelectionBiases", new Dictionary<int, int>() { { 1, 2 }, { 3, 4 } } },
{ "TopP", 0.5 },
}
};
// Act
var requestSettings = ChatRequestSettings.FromRequestSettings(originalRequestSettings);
// Assert
Assert.NotNull(requestSettings);
Assert.Equal(0.5, requestSettings.FrequencyPenalty);
Assert.Equal(250, requestSettings.MaxTokens);
Assert.Equal(0.5, requestSettings.PresencePenalty);
Assert.Equal(-1, requestSettings.ResultsPerPrompt);
Assert.NotNull(requestSettings.StopSequences);
Assert.Contains("foo", requestSettings.StopSequences);
Assert.Contains("bar", requestSettings.StopSequences);
Assert.Equal(0.5, requestSettings.Temperature);
Assert.NotNull(requestSettings.TokenSelectionBiases);
Assert.Equal(2, requestSettings.TokenSelectionBiases[1]);
Assert.Equal(4, requestSettings.TokenSelectionBiases[3]);
Assert.Equal(0.5, requestSettings.TopP);
}
}
}