Use Double instead of Float for portable ChatOptions

This change updates the type of portable chat options from Float to
Double. Affected options include:
- frequencyPenalty
- presencePenalty
- temperature
- topP

The motivation for this change is to simplify coding. In Java, Float
values require an "f" suffix (e.g., 0.5f), while Double values don't
need any suffix. This makes Double easier to type and reduces
potential errors from forgetting the "f" suffix.

APIs, tests, and documentation have been updated to reflect this
change.

Fixes gh-712

Signed-off-by: Thomas Vitale <ThomasVitale@users.noreply.github.com>
This commit is contained in:
Thomas Vitale
2024-09-08 23:24:48 +02:00
committed by Mark Pollack
parent 40714c984d
commit 4b123a7516
146 changed files with 731 additions and 717 deletions

View File

@@ -36,7 +36,7 @@ public class AzureOpenAiChatProperties {
@NestedConfigurationProperty
private AzureOpenAiChatOptions options = AzureOpenAiChatOptions.builder()
.withDeploymentName(DEFAULT_DEPLOYMENT_NAME)
.withTemperature(DEFAULT_TEMPERATURE.floatValue())
.withTemperature(DEFAULT_TEMPERATURE)
.build();
public AzureOpenAiChatOptions getOptions() {

View File

@@ -47,7 +47,7 @@ public class BedrockAnthropicChatProperties {
@NestedConfigurationProperty
private AnthropicChatOptions options = AnthropicChatOptions.builder()
.withTemperature(0.7f)
.withTemperature(0.7)
.withMaxTokensToSample(300)
.withTopK(10)
.withStopSequences(List.of("\n\nHuman:"))

View File

@@ -46,7 +46,7 @@ public class BedrockAnthropic3ChatProperties {
@NestedConfigurationProperty
private Anthropic3ChatOptions options = Anthropic3ChatOptions.builder()
.withTemperature(0.7f)
.withTemperature(0.7)
.withMaxTokens(300)
.withTopK(10)
.withAnthropicVersion(Anthropic3ChatBedrockApi.DEFAULT_ANTHROPIC_VERSION)

View File

@@ -45,7 +45,7 @@ public class BedrockAi21Jurassic2ChatProperties {
@NestedConfigurationProperty
private BedrockAi21Jurassic2ChatOptions options = BedrockAi21Jurassic2ChatOptions.builder()
.withTemperature(0.7f)
.withTemperature(0.7)
.withMaxTokens(500)
.build();

View File

@@ -43,7 +43,7 @@ public class BedrockLlamaChatProperties {
@NestedConfigurationProperty
private BedrockLlamaChatOptions options = BedrockLlamaChatOptions.builder()
.withTemperature(0.7f)
.withTemperature(0.7)
.withMaxGenLen(300)
.build();

View File

@@ -42,7 +42,7 @@ public class BedrockTitanChatProperties {
private String model = TitanChatModel.TITAN_TEXT_EXPRESS_V1.id();
@NestedConfigurationProperty
private BedrockTitanChatOptions options = BedrockTitanChatOptions.builder().withTemperature(0.7f).build();
private BedrockTitanChatOptions options = BedrockTitanChatOptions.builder().withTemperature(0.7).build();
public boolean isEnabled() {
return enabled;

View File

@@ -40,7 +40,7 @@ public class MiniMaxChatProperties extends MiniMaxParentProperties {
@NestedConfigurationProperty
private MiniMaxChatOptions options = MiniMaxChatOptions.builder()
.withModel(DEFAULT_CHAT_MODEL)
.withTemperature(DEFAULT_TEMPERATURE.floatValue())
.withTemperature(DEFAULT_TEMPERATURE)
.build();
public MiniMaxChatOptions getOptions() {

View File

@@ -35,7 +35,7 @@ public class MistralAiChatProperties extends MistralAiParentProperties {
private static final Double DEFAULT_TEMPERATURE = 0.7;
private static final Float DEFAULT_TOP_P = 1.0f;
private static final Double DEFAULT_TOP_P = 1.0;
private static final Boolean IS_ENABLED = false;
@@ -51,7 +51,7 @@ public class MistralAiChatProperties extends MistralAiParentProperties {
@NestedConfigurationProperty
private MistralAiChatOptions options = MistralAiChatOptions.builder()
.withModel(DEFAULT_CHAT_MODEL)
.withTemperature(DEFAULT_TEMPERATURE.floatValue())
.withTemperature(DEFAULT_TEMPERATURE)
.withSafePrompt(!IS_ENABLED)
.withTopP(DEFAULT_TOP_P)
.build();

View File

@@ -40,7 +40,7 @@ public class MoonshotChatProperties extends MoonshotParentProperties {
@NestedConfigurationProperty
private MoonshotChatOptions options = MoonshotChatOptions.builder()
.withModel(DEFAULT_CHAT_MODEL)
.withTemperature(DEFAULT_TEMPERATURE.floatValue())
.withTemperature(DEFAULT_TEMPERATURE)
.build();
public MoonshotChatOptions getOptions() {

View File

@@ -40,7 +40,7 @@ public class OpenAiChatProperties extends OpenAiParentProperties {
@NestedConfigurationProperty
private OpenAiChatOptions options = OpenAiChatOptions.builder()
.withModel(DEFAULT_CHAT_MODEL)
.withTemperature(DEFAULT_TEMPERATURE.floatValue())
.withTemperature(DEFAULT_TEMPERATURE)
.build();
public OpenAiChatOptions getOptions() {

View File

@@ -40,7 +40,7 @@ public class QianFanChatProperties extends QianFanParentProperties {
@NestedConfigurationProperty
private QianFanChatOptions options = QianFanChatOptions.builder()
.withModel(DEFAULT_CHAT_MODEL)
.withTemperature(DEFAULT_TEMPERATURE.floatValue())
.withTemperature(DEFAULT_TEMPERATURE)
.build();
public QianFanChatOptions getOptions() {

View File

@@ -36,7 +36,7 @@ public class VertexAiGeminiChatProperties {
* Vertex AI Gemini API generative options.
*/
private VertexAiGeminiChatOptions options = VertexAiGeminiChatOptions.builder()
.withTemperature(0.7f)
.withTemperature(0.7)
.withCandidateCount(1)
.withModel(DEFAULT_MODEL)
.build();

View File

@@ -38,7 +38,7 @@ public class VertexAiPlam2ChatProperties {
* Vertex AI PaLM API generative options.
*/
private VertexAiPaLm2ChatOptions options = VertexAiPaLm2ChatOptions.builder()
.withTemperature(0.7f)
.withTemperature(0.7)
.withTopP(null)
.withCandidateCount(1)
.withTopK(20)

View File

@@ -43,13 +43,13 @@ public class WatsonxAiChatProperties {
@NestedConfigurationProperty
private WatsonxAiChatOptions options = WatsonxAiChatOptions.builder()
.withModel("google/flan-ul2")
.withTemperature(0.7f)
.withTopP(1.0f)
.withTemperature(0.7)
.withTopP(1.0)
.withTopK(50)
.withDecodingMethod("greedy")
.withMaxNewTokens(20)
.withMinNewTokens(0)
.withRepetitionPenalty(1.0f)
.withRepetitionPenalty(1.0)
.withStopSequences(List.of())
.build();

View File

@@ -40,7 +40,7 @@ public class ZhiPuAiChatProperties extends ZhiPuAiParentProperties {
@NestedConfigurationProperty
private ZhiPuAiChatOptions options = ZhiPuAiChatOptions.builder()
.withModel(DEFAULT_CHAT_MODEL)
.withTemperature(DEFAULT_TEMPERATURE.floatValue())
.withTemperature(DEFAULT_TEMPERATURE)
.build();
public ZhiPuAiChatOptions getOptions() {

View File

@@ -54,7 +54,7 @@ public class AnthropicPropertiesTests {
assertThat(connectionProperties.getBetaVersion()).isEqualTo("7777");
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
// enabled is true by default
assertThat(chatProperties.isEnabled()).isTrue();
});
@@ -89,8 +89,8 @@ public class AnthropicPropertiesTests {
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getMaxTokens()).isEqualTo(123);
assertThat(chatProperties.getOptions().getStopSequences()).contains("boza", "koza");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56);
assertThat(chatProperties.getOptions().getTopK()).isEqualTo(100);
assertThat(chatProperties.getOptions().getMetadata().userId()).isEqualTo("MyUserId");

View File

@@ -83,14 +83,14 @@ public class AzureOpenAiAutoConfigurationPropertyTests {
assertThat(embeddingProperties.getOptions().getDeploymentName()).isEqualTo("text-embedding-ada-002");
assertThat(chatProperties.getOptions().getDeploymentName()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getFrequencyPenalty()).isEqualTo(-1.5f);
assertThat(chatProperties.getOptions().getFrequencyPenalty()).isEqualTo(-1.5);
assertThat(chatProperties.getOptions().getLogitBias().get("myTokenId")).isEqualTo(-5);
assertThat(chatProperties.getOptions().getMaxTokens()).isEqualTo(123);
assertThat(chatProperties.getOptions().getN()).isEqualTo(10);
assertThat(chatProperties.getOptions().getPresencePenalty()).isEqualTo(0);
assertThat(chatProperties.getOptions().getStop()).contains("boza", "koza");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56);
assertThat(chatProperties.getOptions().getUser()).isEqualTo("userXYZ");
});

View File

@@ -62,7 +62,7 @@ public class MiniMaxPropertiesTests {
assertThat(chatProperties.getBaseUrl()).isNull();
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
});
}
@@ -91,7 +91,7 @@ public class MiniMaxPropertiesTests {
assertThat(chatProperties.getBaseUrl()).isEqualTo("TEST_BASE_URL2");
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
});
}
@@ -211,7 +211,7 @@ public class MiniMaxPropertiesTests {
assertThat(embeddingProperties.getOptions().getModel()).isEqualTo("embo-01");
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getFrequencyPenalty()).isEqualTo(-1.5f);
assertThat(chatProperties.getOptions().getFrequencyPenalty()).isEqualTo(-1.5);
assertThat(chatProperties.getOptions().getMaxTokens()).isEqualTo(123);
assertThat(chatProperties.getOptions().getN()).isEqualTo(10);
assertThat(chatProperties.getOptions().getPresencePenalty()).isEqualTo(0);
@@ -219,8 +219,8 @@ public class MiniMaxPropertiesTests {
.isEqualTo(new MiniMaxApi.ChatCompletionRequest.ResponseFormat("json"));
assertThat(chatProperties.getOptions().getSeed()).isEqualTo(66);
assertThat(chatProperties.getOptions().getStop()).contains("boza", "koza");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56);
JSONAssert.assertEquals("{\"type\":\"function\",\"function\":{\"name\":\"toolChoiceFunctionName\"}}",
chatProperties.getOptions().getToolChoice(), JSONCompareMode.LENIENT);

View File

@@ -52,7 +52,7 @@ public class MoonshotPropertiesTests {
assertThat(chatProperties.getBaseUrl()).isNull();
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
});
}
@@ -81,7 +81,7 @@ public class MoonshotPropertiesTests {
assertThat(chatProperties.getBaseUrl()).isEqualTo("TEST_BASE_URL2");
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
});
}
@@ -117,13 +117,13 @@ public class MoonshotPropertiesTests {
assertThat(connectionProperties.getApiKey()).isEqualTo("API_KEY");
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getFrequencyPenalty()).isEqualTo(-1.5f);
assertThat(chatProperties.getOptions().getFrequencyPenalty()).isEqualTo(-1.5);
assertThat(chatProperties.getOptions().getMaxTokens()).isEqualTo(123);
assertThat(chatProperties.getOptions().getN()).isEqualTo(10);
assertThat(chatProperties.getOptions().getPresencePenalty()).isEqualTo(0);
assertThat(chatProperties.getOptions().getStop()).contains("boza", "koza");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56);
assertThat(chatProperties.getOptions().getUser()).isEqualTo("userXYZ");
});

View File

@@ -49,8 +49,8 @@ public class OllamaChatAutoConfigurationTests {
assertThat(chatProperties.getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56);
assertThat(chatProperties.getOptions().getTopK()).isEqualTo(123);
});

View File

@@ -65,7 +65,7 @@ public class OpenAiPropertiesTests {
assertThat(chatProperties.getBaseUrl()).isNull();
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
});
}
@@ -119,7 +119,7 @@ public class OpenAiPropertiesTests {
assertThat(chatProperties.getBaseUrl()).isEqualTo("TEST_BASE_URL2");
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
});
}
@@ -408,15 +408,15 @@ public class OpenAiPropertiesTests {
assertThat(embeddingProperties.getOptions().getModel()).isEqualTo("text-embedding-ada-002");
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getFrequencyPenalty()).isEqualTo(-1.5f);
assertThat(chatProperties.getOptions().getFrequencyPenalty()).isEqualTo(-1.5);
assertThat(chatProperties.getOptions().getLogitBias().get("myTokenId")).isEqualTo(-5);
assertThat(chatProperties.getOptions().getMaxTokens()).isEqualTo(123);
assertThat(chatProperties.getOptions().getN()).isEqualTo(10);
assertThat(chatProperties.getOptions().getPresencePenalty()).isEqualTo(0);
assertThat(chatProperties.getOptions().getSeed()).isEqualTo(66);
assertThat(chatProperties.getOptions().getStop()).contains("boza", "koza");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56);
JSONAssert.assertEquals("{\"type\":\"function\",\"function\":{\"name\":\"toolChoiceFunctionName\"}}",
chatProperties.getOptions().getToolChoice(), JSONCompareMode.LENIENT);

View File

@@ -63,7 +63,7 @@ public class QianFanPropertiesTests {
assertThat(chatProperties.getBaseUrl()).isNull();
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
});
}
@@ -96,7 +96,7 @@ public class QianFanPropertiesTests {
assertThat(chatProperties.getBaseUrl()).isEqualTo("TEST_BASE_URL2");
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
});
}
@@ -192,14 +192,14 @@ public class QianFanPropertiesTests {
assertThat(embeddingProperties.getOptions().getModel()).isEqualTo("bge_large_zh");
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getFrequencyPenalty()).isEqualTo(-1.5f);
assertThat(chatProperties.getOptions().getFrequencyPenalty()).isEqualTo(-1.5);
assertThat(chatProperties.getOptions().getMaxTokens()).isEqualTo(123);
assertThat(chatProperties.getOptions().getPresencePenalty()).isEqualTo(0);
assertThat(chatProperties.getOptions().getResponseFormat())
.isEqualTo(new QianFanApi.ChatCompletionRequest.ResponseFormat("json"));
assertThat(chatProperties.getOptions().getStop()).contains("boza", "koza");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56);
});
}

View File

@@ -61,7 +61,7 @@ public class ZhiPuAiPropertiesTests {
assertThat(chatProperties.getBaseUrl()).isNull();
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
});
}
@@ -90,7 +90,7 @@ public class ZhiPuAiPropertiesTests {
assertThat(chatProperties.getBaseUrl()).isEqualTo("TEST_BASE_URL2");
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
});
}
@@ -259,8 +259,8 @@ public class ZhiPuAiPropertiesTests {
assertThat(chatProperties.getOptions().getModel()).isEqualTo("MODEL_XYZ");
assertThat(chatProperties.getOptions().getMaxTokens()).isEqualTo(123);
assertThat(chatProperties.getOptions().getStop()).contains("boza", "koza");
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55f);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56f);
assertThat(chatProperties.getOptions().getTemperature()).isEqualTo(0.55);
assertThat(chatProperties.getOptions().getTopP()).isEqualTo(0.56);
assertThat(chatProperties.getOptions().getRequestId()).isEqualTo("RequestId");
assertThat(chatProperties.getOptions().getDoSample()).isEqualTo(Boolean.TRUE);