170 lines
6.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|