diff --git a/models/spring-ai-anthropic/src/main/java/org/springframework/ai/anthropic/api/AnthropicApi.java b/models/spring-ai-anthropic/src/main/java/org/springframework/ai/anthropic/api/AnthropicApi.java index 76d0844c1..248511850 100644 --- a/models/spring-ai-anthropic/src/main/java/org/springframework/ai/anthropic/api/AnthropicApi.java +++ b/models/spring-ai-anthropic/src/main/java/org/springframework/ai/anthropic/api/AnthropicApi.java @@ -298,12 +298,14 @@ public class AnthropicApi { /** * The user role. */ - @JsonProperty("user") USER, + @JsonProperty("user") + USER, /** * The assistant role. */ - @JsonProperty("assistant") ASSISTANT + @JsonProperty("assistant") + ASSISTANT // @formatter:on } @@ -824,7 +826,7 @@ public class AnthropicApi { /** * Chat completion response object. - * + * * @param id Unique object identifier. The format and length of IDs may change over * time. * @param type Object type. For Messages, this is always "message". diff --git a/models/spring-ai-anthropic/src/test/java/org/springframework/ai/anthropic/api/AnthropicApiIT.java b/models/spring-ai-anthropic/src/test/java/org/springframework/ai/anthropic/api/AnthropicApiIT.java index f3f72e374..752e9247f 100644 --- a/models/spring-ai-anthropic/src/test/java/org/springframework/ai/anthropic/api/AnthropicApiIT.java +++ b/models/spring-ai-anthropic/src/test/java/org/springframework/ai/anthropic/api/AnthropicApiIT.java @@ -28,8 +28,9 @@ import org.springframework.ai.anthropic.api.AnthropicApi.ChatCompletionResponse; import org.springframework.ai.anthropic.api.AnthropicApi.ContentBlock; import org.springframework.ai.anthropic.api.AnthropicApi.Role; import org.springframework.http.ResponseEntity; -import static org.assertj.core.api.Assertions.assertThatThrownBy; + import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; /** * @author Christian Tzolov diff --git a/models/spring-ai-anthropic/src/test/java/org/springframework/ai/anthropic/client/AnthropicChatClientMethodInvokingFunctionCallbackIT.java b/models/spring-ai-anthropic/src/test/java/org/springframework/ai/anthropic/client/AnthropicChatClientMethodInvokingFunctionCallbackIT.java index e4c81eb1d..097eaf153 100644 --- a/models/spring-ai-anthropic/src/test/java/org/springframework/ai/anthropic/client/AnthropicChatClientMethodInvokingFunctionCallbackIT.java +++ b/models/spring-ai-anthropic/src/test/java/org/springframework/ai/anthropic/client/AnthropicChatClientMethodInvokingFunctionCallbackIT.java @@ -124,7 +124,7 @@ class AnthropicChatClientMethodInvokingFunctionCallbackIT { .user("What's the weather like in San Francisco, Tokyo, and Paris? Use Celsius.") .functions(FunctionCallback.builder() .description("Get the weather in location") - .method("getWeatherNonStatic",String.class, Unit.class) + .method("getWeatherNonStatic", String.class, Unit.class) .targetObject(targetObject) .build()) .call() @@ -148,7 +148,7 @@ class AnthropicChatClientMethodInvokingFunctionCallbackIT { .description("Get the weather in location") .method("getWeatherWithContext", String.class, Unit.class, ToolContext.class) .targetObject(targetObject) - .build()) + .build()) .toolContext(Map.of("tool", "value")) .call() .content(); diff --git a/models/spring-ai-bedrock-converse/src/test/java/org/springframework/ai/bedrock/converse/BedrockConverseChatClientIT.java b/models/spring-ai-bedrock-converse/src/test/java/org/springframework/ai/bedrock/converse/BedrockConverseChatClientIT.java index 5e390b8f7..58e658164 100644 --- a/models/spring-ai-bedrock-converse/src/test/java/org/springframework/ai/bedrock/converse/BedrockConverseChatClientIT.java +++ b/models/spring-ai-bedrock-converse/src/test/java/org/springframework/ai/bedrock/converse/BedrockConverseChatClientIT.java @@ -257,7 +257,7 @@ class BedrockConverseChatClientIT { .description("Get the weather in location") .function("getCurrentWeather", new MockWeatherService()) .inputType(MockWeatherService.Request.class) - .build()) + .build()) .defaultUser(u -> u.text("What's the weather like in San Francisco, Tokyo, and Paris? Return the temperature in Celsius.")) .build() .prompt() @@ -280,7 +280,7 @@ class BedrockConverseChatClientIT { .description("Get the weather in location") .function("getCurrentWeather", new MockWeatherService()) .inputType(MockWeatherService.Request.class) - .build()) + .build()) .stream() .content(); // @formatter:on diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/api/AnthropicChatBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/api/AnthropicChatBedrockApi.java index 461ad457d..b712583dc 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/api/AnthropicChatBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic/api/AnthropicChatBedrockApi.java @@ -35,7 +35,7 @@ import org.springframework.util.Assert; /** * Anthropic Chat API. - * + * * @author Christian Tzolov * @author Thomas Vitale * @author Wei Jiang diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic3/Anthropic3ChatOptions.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic3/Anthropic3ChatOptions.java index 9df6fa5e2..2a66efd9f 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic3/Anthropic3ChatOptions.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic3/Anthropic3ChatOptions.java @@ -244,7 +244,7 @@ public class Anthropic3ChatOptions implements ChatOptions { /** * Builder for {@link Anthropic3ChatOptions}. */ - public static class Builder { + public static final class Builder { private final Anthropic3ChatOptions options = new Anthropic3ChatOptions(); diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic3/api/Anthropic3ChatBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic3/api/Anthropic3ChatBedrockApi.java index e2ac9d34e..79103b4c2 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic3/api/Anthropic3ChatBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/anthropic3/api/Anthropic3ChatBedrockApi.java @@ -248,7 +248,7 @@ public class Anthropic3ChatBedrockApi extends private Double topP; private List stopSequences; private String anthropicVersion; - + private Builder(List messages) { this.messages = messages; } diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java index 8d093d890..bbf5efcf8 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApi.java @@ -249,7 +249,7 @@ public class Ai21Jurassic2ChatBedrockApi extends /** * Builder for {@link Ai21Jurassic2ChatRequest}. */ - public static class Builder { + public static final class Builder { private String prompt; private Double temperature; private Double topP; diff --git a/models/spring-ai-huggingface/src/main/java/org/springframework/ai/huggingface/HuggingfaceChatModel.java b/models/spring-ai-huggingface/src/main/java/org/springframework/ai/huggingface/HuggingfaceChatModel.java index b2ed5b321..aa222f4f3 100644 --- a/models/spring-ai-huggingface/src/main/java/org/springframework/ai/huggingface/HuggingfaceChatModel.java +++ b/models/spring-ai-huggingface/src/main/java/org/springframework/ai/huggingface/HuggingfaceChatModel.java @@ -24,7 +24,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.ai.chat.messages.AssistantMessage; -import org.springframework.ai.chat.metadata.ChatGenerationMetadata; import org.springframework.ai.chat.model.ChatModel; import org.springframework.ai.chat.model.ChatResponse; import org.springframework.ai.chat.model.Generation; diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatClientIT.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatClientIT.java index 0315acbb5..55c42e872 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatClientIT.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatClientIT.java @@ -229,7 +229,7 @@ class MistralAiChatClientIT { .description("Get the weather in location") .function("getCurrentWeather", new MockWeatherService()) .inputType(MockWeatherService.Request.class) - .build()) + .build()) .call() .content(); // @formatter:on @@ -275,7 +275,7 @@ class MistralAiChatClientIT { .description("Get the weather in location") .function("getCurrentWeather", new MockWeatherService()) .inputType(MockWeatherService.Request.class) - .build()) + .build()) .stream() .content(); // @formatter:on diff --git a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaApiIT.java b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaApiIT.java index d69917701..b0ec7ec2b 100644 --- a/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaApiIT.java +++ b/models/spring-ai-ollama/src/test/java/org/springframework/ai/ollama/api/OllamaApiIT.java @@ -24,7 +24,6 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import reactor.core.publisher.Flux; -import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.ollama.BaseOllamaIT; import org.springframework.ai.ollama.api.OllamaApi.ChatRequest; import org.springframework.ai.ollama.api.OllamaApi.ChatResponse; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiUsage.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiUsage.java index 14f429ff5..b8534d53a 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiUsage.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/OpenAiUsage.java @@ -142,6 +142,15 @@ public class OpenAiUsage implements Usage { valueOrZero(details.rejectedPredictionTokens())); } + @Override + public String toString() { + return getUsage().toString(); + } + + private int valueOrZero(Integer value) { + return value != null ? value : 0; + } + public record PromptTokensDetails(// @formatter:off Integer audioTokens, Integer cachedTokens) { @@ -154,13 +163,4 @@ public class OpenAiUsage implements Usage { Integer rejectedPredictionTokens) { // @formatter:on } - @Override - public String toString() { - return getUsage().toString(); - } - - private int valueOrZero(Integer value) { - return value != null ? value : 0; - } - } diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/speech/OpenAiSpeechModelIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/speech/OpenAiSpeechModelIT.java index abfc7d3e4..033fd35d2 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/speech/OpenAiSpeechModelIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/speech/OpenAiSpeechModelIT.java @@ -105,11 +105,10 @@ class OpenAiSpeechModelIT extends AbstractIT { assertThat(responseFlux).isNotNull(); List responses = responseFlux.collectList().block(); assertThat(responses).isNotNull(); - responses.forEach(response -> { - // System.out.println("Audio data chunk size: " + - // response.getResult().getOutput().length); - assertThat(response.getResult().getOutput()).isNotEmpty(); - }); + responses.forEach(response -> + // System.out.println("Audio data chunk size: " + + // response.getResult().getOutput().length); + assertThat(response.getResult().getOutput()).isNotEmpty()); } } diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/OpenAiChatClientMethodInvokingFunctionCallbackIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/OpenAiChatClientMethodInvokingFunctionCallbackIT.java index 5fcd5ed8d..6606b50bf 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/OpenAiChatClientMethodInvokingFunctionCallbackIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/OpenAiChatClientMethodInvokingFunctionCallbackIT.java @@ -62,7 +62,7 @@ class OpenAiChatClientMethodInvokingFunctionCallbackIT { .user("What's the weather like in San Francisco, Tokyo, and Paris? Use Celsius.") .functions(FunctionCallback.builder() .description("Get the weather in location") - .method("getWeatherStatic",String.class, Unit.class) + .method("getWeatherStatic", String.class, Unit.class) .targetClass(TestFunctionClass.class) .build()) .call() @@ -107,7 +107,7 @@ class OpenAiChatClientMethodInvokingFunctionCallbackIT { .user("What's the weather like in San Francisco, Tokyo, and Paris? Use Celsius.") .functions(FunctionCallback.builder() .description("Get the weather in location") - .method("getWeatherNonStatic",String.class, Unit.class) + .method("getWeatherNonStatic", String.class, Unit.class) .targetObject(targetObject) .build()) .call() @@ -129,7 +129,7 @@ class OpenAiChatClientMethodInvokingFunctionCallbackIT { .user("What's the weather like in San Francisco, Tokyo, and Paris? Use Celsius.") .functions(FunctionCallback.builder() .description("Get the weather in location") - .method("getWeatherWithContext", String.class, Unit.class, ToolContext.class) + .method("getWeatherWithContext", String.class, Unit.class, ToolContext.class) .targetObject(targetObject) .build()) .toolContext(Map.of("tool", "value")) @@ -176,7 +176,7 @@ class OpenAiChatClientMethodInvokingFunctionCallbackIT { .description("Can turn lights on in the Living Room") .method("turnLivingRoomLightOn") .targetObject(targetObject) - .build()) + .build()) .call() .content(); // @formatter:on diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/OpenAiChatClientMultipleFunctionCallsIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/OpenAiChatClientMultipleFunctionCallsIT.java index eab372e71..9ffa7777d 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/OpenAiChatClientMultipleFunctionCallsIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/OpenAiChatClientMultipleFunctionCallsIT.java @@ -88,7 +88,7 @@ class OpenAiChatClientMultipleFunctionCallsIT extends AbstractIT { .description("Get the weather in location") .function("getCurrentWeather", new MockWeatherService()) .inputType(MockWeatherService.Request.class) - .build()) + .build()) .call() .content(); // @formatter:on @@ -229,7 +229,7 @@ class OpenAiChatClientMultipleFunctionCallsIT extends AbstractIT { .description("Get the weather in location") .function("getCurrentWeather", new MockWeatherService()) .inputType(MockWeatherService.Request.class) - .build()) + .build()) .stream() .content(); // @formatter:on diff --git a/models/spring-ai-postgresml/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingModel.java b/models/spring-ai-postgresml/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingModel.java index 8ff265ced..7e8fb3ab4 100644 --- a/models/spring-ai-postgresml/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingModel.java +++ b/models/spring-ai-postgresml/src/main/java/org/springframework/ai/postgresml/PostgresMlEmbeddingModel.java @@ -25,7 +25,6 @@ import java.util.Map; import org.springframework.ai.chat.metadata.EmptyUsage; import org.springframework.ai.document.Document; -import org.springframework.ai.document.MetadataMode; import org.springframework.ai.embedding.AbstractEmbeddingModel; import org.springframework.ai.embedding.Embedding; import org.springframework.ai.embedding.EmbeddingOptions; diff --git a/models/spring-ai-vertex-ai-embedding/src/main/java/org/springframework/ai/vertexai/embedding/VertexAiEmbeddingConnectionDetails.java b/models/spring-ai-vertex-ai-embedding/src/main/java/org/springframework/ai/vertexai/embedding/VertexAiEmbeddingConnectionDetails.java index 900afd400..b78c42d4e 100644 --- a/models/spring-ai-vertex-ai-embedding/src/main/java/org/springframework/ai/vertexai/embedding/VertexAiEmbeddingConnectionDetails.java +++ b/models/spring-ai-vertex-ai-embedding/src/main/java/org/springframework/ai/vertexai/embedding/VertexAiEmbeddingConnectionDetails.java @@ -168,7 +168,7 @@ public class VertexAiEmbeddingConnectionDetails { if (this.predictionServiceSettings == null) { try { this.predictionServiceSettings = PredictionServiceSettings.newBuilder() - .setEndpoint(endpoint) + .setEndpoint(this.endpoint) .build(); } catch (IOException e) { diff --git a/models/spring-ai-vertex-ai-embedding/src/test/java/org/springframework/ai/vertexai/embedding/multimodal/VertexAiMultimodalEmbeddingModelIT.java b/models/spring-ai-vertex-ai-embedding/src/test/java/org/springframework/ai/vertexai/embedding/multimodal/VertexAiMultimodalEmbeddingModelIT.java index 4900693b8..cb224a170 100644 --- a/models/spring-ai-vertex-ai-embedding/src/test/java/org/springframework/ai/vertexai/embedding/multimodal/VertexAiMultimodalEmbeddingModelIT.java +++ b/models/spring-ai-vertex-ai-embedding/src/test/java/org/springframework/ai/vertexai/embedding/multimodal/VertexAiMultimodalEmbeddingModelIT.java @@ -18,7 +18,6 @@ package org.springframework.ai.vertexai.embedding.multimodal; import java.net.MalformedURLException; import java.net.URI; -import java.net.URL; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; diff --git a/models/spring-ai-zhipuai/src/main/java/org/springframework/ai/zhipuai/api/ZhiPuAiApi.java b/models/spring-ai-zhipuai/src/main/java/org/springframework/ai/zhipuai/api/ZhiPuAiApi.java index 18da4521d..2b4942fbd 100644 --- a/models/spring-ai-zhipuai/src/main/java/org/springframework/ai/zhipuai/api/ZhiPuAiApi.java +++ b/models/spring-ai-zhipuai/src/main/java/org/springframework/ai/zhipuai/api/ZhiPuAiApi.java @@ -948,7 +948,7 @@ public class ZhiPuAiApi { /** * Creates an embedding vector representing the input text. - * + * * @param Type of the input. * @param input Input text to embed, encoded as a string or array of tokens. * @param model ID of the model to use. diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/AbstractChatMemoryAdvisor.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/AbstractChatMemoryAdvisor.java index 09d80fa49..9be47bbfe 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/AbstractChatMemoryAdvisor.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/AbstractChatMemoryAdvisor.java @@ -235,7 +235,7 @@ public abstract class AbstractChatMemoryAdvisor implements CallAroundAdvisor, /** * Set the conversation id. - * @param conversationId the conversation id + * @param conversationId the conversation id * @return the builder */ public AbstractBuilder withConversationId(String conversationId) { diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/api/StreamAroundAdvisor.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/api/StreamAroundAdvisor.java index 26345c95c..3e06d5df4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/api/StreamAroundAdvisor.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/api/StreamAroundAdvisor.java @@ -20,7 +20,7 @@ import reactor.core.publisher.Flux; /** * Around advisor that runs around stream based requests. - * + * * @author Christian Tzolov * @author Dariusz Jedrzejczyk * @since 1.0.0 diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/api/package-info.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/api/package-info.java index 4d0af8642..8a526b78c 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/api/package-info.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/api/package-info.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + /** * Provides the API for chat client advisors. */ diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContext.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContext.java index 2650c8088..a174bf81b 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContext.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContext.java @@ -199,7 +199,7 @@ public class AdvisorObservationContext extends Observation.Context { /** * Builder for {@link AdvisorObservationContext}. */ - public static class Builder { + public static final class Builder { private String advisorName; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationDocumentation.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationDocumentation.java index 31da7d983..310cd5465 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationDocumentation.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationDocumentation.java @@ -23,7 +23,7 @@ import io.micrometer.observation.docs.ObservationDocumentation; /** * AI Advisor observation documentation. - * + * * @author Christian Tzolov * @since 1.0.0 */ diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/package-info.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/package-info.java index 8fc0c4b00..667654157 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/package-info.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/package-info.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + /** * Provides the API for chat client advisors observations. */ diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/observation/package-info.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/observation/package-info.java index 3f99fec19..f17d9a15b 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/observation/package-info.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/observation/package-info.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + /** * Provides classes for observing chat data. */ diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/package-info.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/package-info.java index b7e446eaf..0c21c09c6 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/package-info.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/package-info.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + /** * Chat client. */ diff --git a/spring-ai-core/src/main/java/org/springframework/ai/converter/BeanOutputConverter.java b/spring-ai-core/src/main/java/org/springframework/ai/converter/BeanOutputConverter.java index 84afa3f70..598d821fa 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/converter/BeanOutputConverter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/converter/BeanOutputConverter.java @@ -20,7 +20,6 @@ import java.lang.reflect.Type; import java.util.Objects; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.util.DefaultIndenter; import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; import com.fasterxml.jackson.databind.DeserializationFeature; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/embedding/observation/package-info.java b/spring-ai-core/src/main/java/org/springframework/ai/embedding/observation/package-info.java index c94308cd8..0325109e4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/embedding/observation/package-info.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/embedding/observation/package-info.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + /** * Provides the API for embedding observations. */ diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallbackBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallbackBuilder.java index e329ef766..7e56c8fd8 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallbackBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/DefaultFunctionCallbackBuilder.java @@ -142,7 +142,7 @@ public class DefaultFunctionCallbackBuilder implements FunctionCallback.Builder @Override public FunctionInvokingSpec function(String name, Supplier supplier) { - Function function = (input) -> supplier.get(); + Function function = input -> supplier.get(); return new DefaultFunctionInvokingSpec<>(name, function).inputType(Void.class); } @@ -159,7 +159,18 @@ public class DefaultFunctionCallbackBuilder implements FunctionCallback.Builder return new DefaultMethodInvokingSpec(methodName, argumentTypes); } - class DefaultFunctionInvokingSpec implements FunctionInvokingSpec { + private String generateDescription(String fromName) { + + String generatedDescription = ParsingUtils.reConcatenateCamelCase(fromName, " "); + + logger.info("Description is not set! A best effort attempt to generate a description:'{}' from the:'{}'", + generatedDescription, fromName); + logger.info("It is recommended to set the Description explicitly! Use the 'description()' method!"); + + return generatedDescription; + } + + final class DefaultFunctionInvokingSpec implements FunctionInvokingSpec { private final String name; @@ -196,7 +207,6 @@ public class DefaultFunctionCallbackBuilder implements FunctionCallback.Builder public FunctionInvokingSpec inputType(ParameterizedTypeReference inputType) { Assert.notNull(inputType, "InputType must not be null"); this.inputType = inputType.getType(); - ; return this; } @@ -229,7 +239,7 @@ public class DefaultFunctionCallbackBuilder implements FunctionCallback.Builder } - class DefaultMethodInvokingSpec implements FunctionCallback.MethodInvokingSpec { + final class DefaultMethodInvokingSpec implements FunctionCallback.MethodInvokingSpec { private String name; @@ -272,9 +282,9 @@ public class DefaultFunctionCallbackBuilder implements FunctionCallback.Builder public FunctionCallback build() { Assert.isTrue(this.targetClass != null || this.targetObject != null, "Target class or object must not be null"); - var method = ReflectionUtils.findMethod(targetClass, methodName, argumentTypes); - Assert.notNull(method, - "Method: '" + methodName + "' with arguments:" + Arrays.toString(argumentTypes) + " not found!"); + var method = ReflectionUtils.findMethod(this.targetClass, this.methodName, this.argumentTypes); + Assert.notNull(method, "Method: '" + this.methodName + "' with arguments:" + + Arrays.toString(this.argumentTypes) + " not found!"); return new MethodInvokingFunctionCallback(this.targetObject, method, this.getDescription(), objectMapper, this.name, responseConverter); } @@ -289,15 +299,4 @@ public class DefaultFunctionCallbackBuilder implements FunctionCallback.Builder } - private String generateDescription(String fromName) { - - String generatedDescription = ParsingUtils.reConcatenateCamelCase(fromName, " "); - - logger.info("Description is not set! A best effort attempt to generate a description:'{}' from the:'{}'", - generatedDescription, fromName); - logger.info("It is recommended to set the Description explicitly! Use the 'description()' method!"); - - return generatedDescription; - } - } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java index e8e2c90fc..ba2f88f3b 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallbackWrapper.java @@ -85,7 +85,7 @@ public final class FunctionCallbackWrapper extends AbstractFunctionCallbac * @deprecated in favor of {@link DefaultFunctionCallbackBuilder} */ @Deprecated - public static class Builder { + public static final class Builder { private final BiFunction biFunction; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionInvokingFunctionCallback.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionInvokingFunctionCallback.java index fc832c0e2..a03c7b1b7 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionInvokingFunctionCallback.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionInvokingFunctionCallback.java @@ -30,7 +30,7 @@ import org.springframework.util.Assert; * that can be consumed by the Model. The default implementation converts the output into * String before sending it to the Model. Provide a custom function responseConverter * implementation to override this. - * + * * @param the input type * @param the output type * @author Christian Tzolov diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/MethodInvokingFunctionCallback.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/MethodInvokingFunctionCallback.java index 35a253877..9e23370b4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/MethodInvokingFunctionCallback.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/MethodInvokingFunctionCallback.java @@ -182,7 +182,7 @@ public class MethodInvokingFunctionCallback implements FunctionCallback { return ModelOptionsUtils.toJsonString(response); } - return responseConverter.apply(response); + return this.responseConverter.apply(response); } catch (Exception e) { ReflectionUtils.handleReflectionException(e); diff --git a/spring-ai-core/src/main/java/org/springframework/ai/observation/package-info.java b/spring-ai-core/src/main/java/org/springframework/ai/observation/package-info.java index 53ea964f9..aefc3e1dc 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/observation/package-info.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/observation/package-info.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + /** * Provides classes for observing events in the system. */ diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/function/DefaultFunctionCallbackBuilderTests.java b/spring-ai-core/src/test/java/org/springframework/ai/model/function/DefaultFunctionCallbackBuilderTests.java index 8e254f0f2..e5774a86d 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/model/function/DefaultFunctionCallbackBuilderTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/model/function/DefaultFunctionCallbackBuilderTests.java @@ -275,7 +275,7 @@ class DefaultFunctionCallbackBuilderTests { private T datum; public T getDatum() { - return datum; + return this.datum; } public void setDatum(T value) { diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/function/TypeResolverHelperIT.java b/spring-ai-core/src/test/java/org/springframework/ai/model/function/TypeResolverHelperIT.java index 0ba01629e..e2cb9d487 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/model/function/TypeResolverHelperIT.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/model/function/TypeResolverHelperIT.java @@ -92,9 +92,7 @@ public class TypeResolverHelperIT { @Bean Consumer weatherConsumer() { - return (weatherRequest) -> { - System.out.println(weatherRequest); - }; + return System.out::println; } } diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java index b3ec7d8bc..a4628f4d2 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java @@ -353,9 +353,6 @@ class FunctionCallbackWithPlainFunctionBeanIT { return (weatherService::apply); } - record LightInfo(String roomName, boolean isOn) { - } - @Bean @Description("Turn light on or off in a room") public Function turnLight() { @@ -395,18 +392,6 @@ class FunctionCallbackWithPlainFunctionBeanIT { }; } - record TrainSearchSchedule(String from, String to, String date) { - } - - record TrainSearchScheduleResponse(String from, String to, String date, String trainNumber) { - } - - record TrainSearchRequest(T data) { - } - - record TrainSearchResponse(T data) { - } - @Bean @Description("Schedule a train reservation") public Function, TrainSearchResponse> trainReservation() { @@ -429,4 +414,19 @@ class FunctionCallbackWithPlainFunctionBeanIT { } + record LightInfo(String roomName, boolean isOn) { + } + + record TrainSearchSchedule(String from, String to, String date) { + } + + record TrainSearchScheduleResponse(String from, String to, String date, String trainNumber) { + } + + record TrainSearchRequest(T data) { + } + + record TrainSearchResponse(T data) { + } + } diff --git a/src/checkstyle/checkstyle-suppressions.xml b/src/checkstyle/checkstyle-suppressions.xml index 63c0ed282..b4d1b066b 100644 --- a/src/checkstyle/checkstyle-suppressions.xml +++ b/src/checkstyle/checkstyle-suppressions.xml @@ -32,6 +32,7 @@ +