diff --git a/models/spring-ai-openai/pom.xml b/models/spring-ai-openai/pom.xml
index b059ccff986..d09fc76c9c5 100644
--- a/models/spring-ai-openai/pom.xml
+++ b/models/spring-ai-openai/pom.xml
@@ -36,6 +36,10 @@
git@github.com:spring-projects/spring-ai.git
+
+ false
+
+
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioSpeechModel.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioSpeechModel.java
index 73813b38306..952ad431404 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioSpeechModel.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioSpeechModel.java
@@ -132,7 +132,7 @@ public SpeechResponse call(SpeechPrompt speechPrompt) {
var speech = speechEntity.getBody();
if (speech == null) {
- this.logger.warn("No speech response returned for speechRequest: {}", speechRequest);
+ logger.warn("No speech response returned for speechRequest: {}", speechRequest);
return new SpeechResponse(new Speech(new byte[0]));
}
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionModel.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionModel.java
index 8aa43728b43..ec29b545454 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionModel.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionModel.java
@@ -118,7 +118,7 @@ public AudioTranscriptionResponse call(AudioTranscriptionPrompt transcriptionPro
var transcription = transcriptionEntity.getBody();
if (transcription == null) {
- this.logger.warn("No transcription returned for request: {}", audioResource);
+ logger.warn("No transcription returned for request: {}", audioResource);
return new AudioTranscriptionResponse(null);
}
@@ -139,7 +139,7 @@ public AudioTranscriptionResponse call(AudioTranscriptionPrompt transcriptionPro
var transcription = transcriptionEntity.getBody();
if (transcription == null) {
- this.logger.warn("No transcription returned for request: {}", audioResource);
+ logger.warn("No transcription returned for request: {}", audioResource);
return new AudioTranscriptionResponse(null);
}
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java
index 5a2045f9bba..9c0022fade8 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptions.java
@@ -122,37 +122,48 @@ public int hashCode() {
@Override
public boolean equals(Object obj) {
- if (this == obj)
+ if (this == obj) {
return true;
- if (obj == null)
+ }
+ if (obj == null) {
return false;
- if (getClass() != obj.getClass())
+ }
+ if (getClass() != obj.getClass()) {
return false;
+ }
OpenAiAudioTranscriptionOptions other = (OpenAiAudioTranscriptionOptions) obj;
if (this.model == null) {
- if (other.model != null)
+ if (other.model != null) {
return false;
+ }
}
- else if (!this.model.equals(other.model))
+ else if (!this.model.equals(other.model)) {
return false;
+ }
if (this.prompt == null) {
- if (other.prompt != null)
+ if (other.prompt != null) {
return false;
+ }
}
- else if (!this.prompt.equals(other.prompt))
+ else if (!this.prompt.equals(other.prompt)) {
return false;
+ }
if (this.language == null) {
- if (other.language != null)
+ if (other.language != null) {
return false;
+ }
}
- else if (!this.language.equals(other.language))
+ else if (!this.language.equals(other.language)) {
return false;
+ }
if (this.responseFormat == null) {
- if (other.responseFormat != null)
+ if (other.responseFormat != null) {
return false;
+ }
}
- else if (!this.responseFormat.equals(other.responseFormat))
+ else if (!this.responseFormat.equals(other.responseFormat)) {
return false;
+ }
return true;
}
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatModel.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatModel.java
index b60f1889956..f21a064ee6b 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatModel.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatModel.java
@@ -307,8 +307,7 @@ public Flux stream(Prompt prompt) {
@SuppressWarnings("null")
String id = chatCompletion2.id();
- List generations = chatCompletion2.choices().stream().map(choice -> {// @formatter:off
-
+ List generations = chatCompletion2.choices().stream().map(choice -> { // @formatter:off
if (choice.message().role() != null) {
roleMap.putIfAbsent(id, choice.message().role().name());
}
@@ -347,9 +346,7 @@ public Flux stream(Prompt prompt) {
}
})
.doOnError(observation::error)
- .doFinally(s -> {
- observation.stop();
- })
+ .doFinally(s -> observation.stop())
.contextWrite(ctx -> ctx.put(ObservationThreadLocalAccessor.KEY, observation));
// @formatter:on
@@ -454,10 +451,8 @@ else if (message.getMessageType() == MessageType.ASSISTANT) {
else if (message.getMessageType() == MessageType.TOOL) {
ToolResponseMessage toolMessage = (ToolResponseMessage) message;
- toolMessage.getResponses().forEach(response -> {
- Assert.isTrue(response.id() != null, "ToolResponseMessage must have an id");
- });
-
+ toolMessage.getResponses()
+ .forEach(response -> Assert.isTrue(response.id() != null, "ToolResponseMessage must have an id"));
return toolMessage.getResponses()
.stream()
.map(tr -> new ChatCompletionMessage(tr.responseData(), ChatCompletionMessage.Role.TOOL, tr.name(),
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageModel.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageModel.java
index 1da5a9b8694..565822304f1 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageModel.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageModel.java
@@ -169,10 +169,11 @@ private ImageResponse convertResponse(ResponseEntity imageGenerationList = imageApiResponse.data().stream().map(entry -> {
- return new ImageGeneration(new Image(entry.url(), entry.b64Json()),
- new OpenAiImageGenerationMetadata(entry.revisedPrompt()));
- }).toList();
+ List imageGenerationList = imageApiResponse.data()
+ .stream()
+ .map(entry -> new ImageGeneration(new Image(entry.url(), entry.b64Json()),
+ new OpenAiImageGenerationMetadata(entry.revisedPrompt())))
+ .toList();
ImageResponseMetadata openAiImageResponseMetadata = new ImageResponseMetadata(imageApiResponse.created());
return new ImageResponse(imageGenerationList, openAiImageResponseMetadata);
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptions.java
index 1bab88096dd..c9b496ed35f 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptions.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptions.java
@@ -234,7 +234,7 @@ public String toString() {
+ ", user='" + this.user + '\'' + '}';
}
- public static class Builder {
+ public static final class Builder {
private final OpenAiImageOptions options;
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiModerationModel.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiModerationModel.java
index f6719710c05..ca5fb319a05 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiModerationModel.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiModerationModel.java
@@ -106,7 +106,7 @@ private ModerationResponse convertResponse(
OpenAiModerationApi.OpenAiModerationRequest openAiModerationRequest) {
OpenAiModerationApi.OpenAiModerationResponse moderationApiResponse = moderationResponseEntity.getBody();
if (moderationApiResponse == null) {
- this.logger.warn("No moderation response returned for request: {}", openAiModerationRequest);
+ logger.warn("No moderation response returned for request: {}", openAiModerationRequest);
return new ModerationResponse(new Generation());
}
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiModerationOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiModerationOptions.java
index 49688231357..758dda9feea 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiModerationOptions.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiModerationOptions.java
@@ -50,7 +50,7 @@ public void setModel(String model) {
this.model = model;
}
- public static class Builder {
+ public static final class Builder {
private final OpenAiModerationOptions options;
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/aot/OpenAiRuntimeHints.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/aot/OpenAiRuntimeHints.java
index 3a4fe1fa5e2..36f3bc39e05 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/aot/OpenAiRuntimeHints.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/aot/OpenAiRuntimeHints.java
@@ -48,12 +48,15 @@ private static Set eval(Set referenceSet) {
@Override
public void registerHints(@NonNull RuntimeHints hints, @Nullable ClassLoader classLoader) {
var mcs = MemberCategory.values();
- for (var tr : eval(findJsonAnnotatedClassesInPackage(OpenAiApi.class)))
+ for (var tr : eval(findJsonAnnotatedClassesInPackage(OpenAiApi.class))) {
hints.reflection().registerType(tr, mcs);
- for (var tr : eval(findJsonAnnotatedClassesInPackage(OpenAiAudioApi.class)))
+ }
+ for (var tr : eval(findJsonAnnotatedClassesInPackage(OpenAiAudioApi.class))) {
hints.reflection().registerType(tr, mcs);
- for (var tr : eval(findJsonAnnotatedClassesInPackage(OpenAiImageApi.class)))
+ }
+ for (var tr : eval(findJsonAnnotatedClassesInPackage(OpenAiImageApi.class))) {
hints.reflection().registerType(tr, mcs);
+ }
}
}
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java
index b4dd95d29fe..9567c51cf1d 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java
@@ -172,7 +172,7 @@ public OpenAiApi(String baseUrl, String apiKey, MultiValueMap he
this.webClient = webClientBuilder
.baseUrl(baseUrl)
.defaultHeaders(finalHeaders)
- .build();// @formatter:on
+ .build(); // @formatter:on
}
public static String getTextContent(List content) {
@@ -558,7 +558,8 @@ public enum Type {
/**
* Function tool type.
*/
- @JsonProperty("function") FUNCTION
+ @JsonProperty("function")
+ FUNCTION
}
/**
@@ -588,7 +589,7 @@ public Function(String description, String name, String jsonSchema) {
this(description, name, ModelOptionsUtils.jsonToMap(jsonSchema));
}
}
- }// @formatter:on
+ } // @formatter:on
/**
* Creates a model response for the given chat conversation.
@@ -782,7 +783,7 @@ public static Object FUNCTION(String functionName) {
@JsonInclude(Include.NON_NULL)
public record ResponseFormat(
@JsonProperty("type") Type type,
- @JsonProperty("json_schema") JsonSchema jsonSchema ) {
+ @JsonProperty("json_schema") JsonSchema jsonSchema) {
public ResponseFormat(Type type) {
this(type, (JsonSchema) null);
@@ -794,7 +795,7 @@ public ResponseFormat(Type type, String schema) {
@ConstructorBinding
public ResponseFormat(Type type, String name, String schema, Boolean strict) {
- this(type, StringUtils.hasText(schema)? new JsonSchema(name, schema, strict): null);
+ this(type, StringUtils.hasText(schema) ? new JsonSchema(name, schema, strict) : null);
}
public enum Type {
@@ -837,7 +838,7 @@ public JsonSchema(String name, String schema) {
}
public JsonSchema(String name, String schema, Boolean strict) {
- this(StringUtils.hasText(name)? name : "custom_schema", ModelOptionsUtils.jsonToMap(schema), strict);
+ this(StringUtils.hasText(name) ? name : "custom_schema", ModelOptionsUtils.jsonToMap(schema), strict);
}
}
@@ -856,7 +857,7 @@ public record StreamOptions(
public static StreamOptions INCLUDE_USAGE = new StreamOptions(true);
}
- }// @formatter:on
+ } // @formatter:on
/**
* Message comprising the conversation.
@@ -880,7 +881,7 @@ public record ChatCompletionMessage(// @formatter:off
@JsonProperty("name") String name,
@JsonProperty("tool_call_id") String toolCallId,
@JsonProperty("tool_calls") List toolCalls,
- @JsonProperty("refusal") String refusal) {// @formatter:on
+ @JsonProperty("refusal") String refusal) { // @formatter:on
/**
* Create a chat completion message with the given content and role. All other
@@ -999,7 +1000,7 @@ public record ToolCall(// @formatter:off
@JsonProperty("index") Integer index,
@JsonProperty("id") String id,
@JsonProperty("type") String type,
- @JsonProperty("function") ChatCompletionFunction function) {// @formatter:on
+ @JsonProperty("function") ChatCompletionFunction function) { // @formatter:on
public ToolCall(String id, String type, ChatCompletionFunction function) {
this(null, id, type, function);
@@ -1017,7 +1018,7 @@ public ToolCall(String id, String type, ChatCompletionFunction function) {
@JsonInclude(Include.NON_NULL)
public record ChatCompletionFunction(// @formatter:off
@JsonProperty("name") String name,
- @JsonProperty("arguments") String arguments) {// @formatter:on
+ @JsonProperty("arguments") String arguments) { // @formatter:on
}
}
@@ -1046,7 +1047,7 @@ public record ChatCompletion(// @formatter:off
@JsonProperty("model") String model,
@JsonProperty("system_fingerprint") String systemFingerprint,
@JsonProperty("object") String object,
- @JsonProperty("usage") Usage usage) {// @formatter:on
+ @JsonProperty("usage") Usage usage) { // @formatter:on
/**
* Chat completion choice.
@@ -1061,7 +1062,7 @@ public record Choice(// @formatter:off
@JsonProperty("finish_reason") ChatCompletionFinishReason finishReason,
@JsonProperty("index") Integer index,
@JsonProperty("message") ChatCompletionMessage message,
- @JsonProperty("logprobs") LogProbs logprobs) {// @formatter:on
+ @JsonProperty("logprobs") LogProbs logprobs) { // @formatter:on
}
@@ -1094,7 +1095,7 @@ public record Content(// @formatter:off
@JsonProperty("token") String token,
@JsonProperty("logprob") Float logprob,
@JsonProperty("bytes") List probBytes,
- @JsonProperty("top_logprobs") List topLogprobs) {// @formatter:on
+ @JsonProperty("top_logprobs") List topLogprobs) { // @formatter:on
/**
* The most likely tokens and their log probability, at this token position.
@@ -1111,7 +1112,7 @@ public record Content(// @formatter:off
public record TopLogProbs(// @formatter:off
@JsonProperty("token") String token,
@JsonProperty("logprob") Float logprob,
- @JsonProperty("bytes") List probBytes) {// @formatter:on
+ @JsonProperty("bytes") List probBytes) { // @formatter:on
}
}
@@ -1137,7 +1138,7 @@ public record Usage(// @formatter:off
@JsonProperty("prompt_tokens") Integer promptTokens,
@JsonProperty("total_tokens") Integer totalTokens,
@JsonProperty("prompt_tokens_details") PromptTokensDetails promptTokensDetails,
- @JsonProperty("completion_tokens_details") CompletionTokenDetails completionTokenDetails) {// @formatter:on
+ @JsonProperty("completion_tokens_details") CompletionTokenDetails completionTokenDetails) { // @formatter:on
public Usage(Integer completionTokens, Integer promptTokens, Integer totalTokens) {
this(completionTokens, promptTokens, totalTokens, null, null);
@@ -1150,7 +1151,7 @@ public Usage(Integer completionTokens, Integer promptTokens, Integer totalTokens
*/
@JsonInclude(Include.NON_NULL)
public record PromptTokensDetails(// @formatter:off
- @JsonProperty("cached_tokens") Integer cachedTokens) {// @formatter:on
+ @JsonProperty("cached_tokens") Integer cachedTokens) { // @formatter:on
}
/**
@@ -1160,7 +1161,7 @@ public record PromptTokensDetails(// @formatter:off
*/
@JsonInclude(Include.NON_NULL)
public record CompletionTokenDetails(// @formatter:off
- @JsonProperty("reasoning_tokens") Integer reasoningTokens) {// @formatter:on
+ @JsonProperty("reasoning_tokens") Integer reasoningTokens) { // @formatter:on
}
}
@@ -1190,7 +1191,7 @@ public record ChatCompletionChunk(// @formatter:off
@JsonProperty("model") String model,
@JsonProperty("system_fingerprint") String systemFingerprint,
@JsonProperty("object") String object,
- @JsonProperty("usage") Usage usage) {// @formatter:on
+ @JsonProperty("usage") Usage usage) { // @formatter:on
/**
* Chat completion choice.
@@ -1205,7 +1206,7 @@ public record ChunkChoice(// @formatter:off
@JsonProperty("finish_reason") ChatCompletionFinishReason finishReason,
@JsonProperty("index") Integer index,
@JsonProperty("delta") ChatCompletionMessage delta,
- @JsonProperty("logprobs") LogProbs logprobs) {// @formatter:on
+ @JsonProperty("logprobs") LogProbs logprobs) { // @formatter:on
}
}
@@ -1222,7 +1223,7 @@ public record ChunkChoice(// @formatter:off
public record Embedding(// @formatter:off
@JsonProperty("index") Integer index,
@JsonProperty("embedding") float[] embedding,
- @JsonProperty("object") String object) {// @formatter:on
+ @JsonProperty("object") String object) { // @formatter:on
/**
* Create an embedding with the given index, embedding and object type set to
@@ -1259,7 +1260,7 @@ public record EmbeddingRequest(// @formatter:off
@JsonProperty("model") String model,
@JsonProperty("encoding_format") String encodingFormat,
@JsonProperty("dimensions") Integer dimensions,
- @JsonProperty("user") String user) {// @formatter:on
+ @JsonProperty("user") String user) { // @formatter:on
/**
* Create an embedding request with the given input, model and encoding format set
@@ -1296,7 +1297,7 @@ public record EmbeddingList(// @formatter:off
@JsonProperty("object") String object,
@JsonProperty("data") List data,
@JsonProperty("model") String model,
- @JsonProperty("usage") Usage usage) {// @formatter:on
+ @JsonProperty("usage") Usage usage) { // @formatter:on
}
}
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java
index a217026093f..38f99312d1d 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiAudioApi.java
@@ -256,11 +256,13 @@ public enum TtsModel {
/**
* The latest text to speech model, optimized for speed.
*/
- @JsonProperty("tts-1") TTS_1("tts-1"),
+ @JsonProperty("tts-1")
+ TTS_1("tts-1"),
/**
* The latest text to speech model, optimized for quality.
*/
- @JsonProperty("tts-1-hd") TTS_1_HD("tts-1-hd");
+ @JsonProperty("tts-1-hd")
+ TTS_1_HD("tts-1-hd");
// @formatter:on
public final String value;
@@ -286,7 +288,8 @@ public String getValue() {
public enum WhisperModel {
// @formatter:off
- @JsonProperty("whisper-1") WHISPER_1("whisper-1");
+ @JsonProperty("whisper-1")
+ WHISPER_1("whisper-1");
// @formatter:on
public final String value;
@@ -308,11 +311,16 @@ public String getValue() {
public enum TranscriptResponseFormat {
// @formatter:off
- @JsonProperty("json") JSON("json", StructuredResponse.class),
- @JsonProperty("text") TEXT("text", String.class),
- @JsonProperty("srt") SRT("srt", String.class),
- @JsonProperty("verbose_json") VERBOSE_JSON("verbose_json", StructuredResponse.class),
- @JsonProperty("vtt") VTT("vtt", String.class);
+ @JsonProperty("json")
+ JSON("json", StructuredResponse.class),
+ @JsonProperty("text")
+ TEXT("text", String.class),
+ @JsonProperty("srt")
+ SRT("srt", String.class),
+ @JsonProperty("verbose_json")
+ VERBOSE_JSON("verbose_json", StructuredResponse.class),
+ @JsonProperty("vtt")
+ VTT("vtt", String.class);
// @formatter:on
public final String value;
@@ -373,17 +381,23 @@ public static Builder builder() {
public enum Voice {
// @formatter:off
- @JsonProperty("alloy") ALLOY("alloy"),
- @JsonProperty("echo") ECHO("echo"),
- @JsonProperty("fable") FABLE("fable"),
- @JsonProperty("onyx") ONYX("onyx"),
- @JsonProperty("nova") NOVA("nova"),
- @JsonProperty("shimmer") SHIMMER("shimmer");
+ @JsonProperty("alloy")
+ ALLOY("alloy"),
+ @JsonProperty("echo")
+ ECHO("echo"),
+ @JsonProperty("fable")
+ FABLE("fable"),
+ @JsonProperty("onyx")
+ ONYX("onyx"),
+ @JsonProperty("nova")
+ NOVA("nova"),
+ @JsonProperty("shimmer")
+ SHIMMER("shimmer");
// @formatter:on
public final String value;
- private Voice(String value) {
+ Voice(String value) {
this.value = value;
}
@@ -400,10 +414,14 @@ public String getValue() {
public enum AudioResponseFormat {
// @formatter:off
- @JsonProperty("mp3") MP3("mp3"),
- @JsonProperty("opus") OPUS("opus"),
- @JsonProperty("aac") AAC("aac"),
- @JsonProperty("flac") FLAC("flac");
+ @JsonProperty("mp3")
+ MP3("mp3"),
+ @JsonProperty("opus")
+ OPUS("opus"),
+ @JsonProperty("aac")
+ AAC("aac"),
+ @JsonProperty("flac")
+ FLAC("flac");
// @formatter:on
public final String value;
@@ -511,8 +529,10 @@ public static Builder builder() {
public enum GranularityType {
// @formatter:off
- @JsonProperty("word") WORD("word"),
- @JsonProperty("segment") SEGMENT("segment");
+ @JsonProperty("word")
+ WORD("word"),
+ @JsonProperty("segment")
+ SEGMENT("segment");
// @formatter:on
public final String value;
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiImageApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiImageApi.java
index c534054079e..bfb846c0510 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiImageApi.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiImageApi.java
@@ -139,7 +139,7 @@ public String getValue() {
// @formatter:off
@JsonInclude(JsonInclude.Include.NON_NULL)
- public record OpenAiImageRequest (
+ public record OpenAiImageRequest(
@JsonProperty("prompt") String prompt,
@JsonProperty("model") String model,
@JsonProperty("n") Integer n,
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiModerationApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiModerationApi.java
index 02e2b3ca109..f4522dc0eab 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiModerationApi.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiModerationApi.java
@@ -77,7 +77,7 @@ public ResponseEntity createModeration(OpenAiModeratio
// @formatter:off
@JsonInclude(JsonInclude.Include.NON_NULL)
- public record OpenAiModerationRequest (
+ public record OpenAiModerationRequest(
@JsonProperty("input") String prompt,
@JsonProperty("model") String model
) {
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiClientErrorException.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiClientErrorException.java
index 7d5e961714b..57cc9913c1d 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiClientErrorException.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiClientErrorException.java
@@ -31,4 +31,4 @@ public OpenAiApiClientErrorException(String message, Throwable cause) {
super(message, cause);
}
-}
\ No newline at end of file
+}
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiConstants.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiConstants.java
index 81051cf7b72..bc2e2ce4328 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiConstants.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/OpenAiApiConstants.java
@@ -31,4 +31,8 @@ public final class OpenAiApiConstants {
public static final String PROVIDER_NAME = AiProvider.OPENAI.value();
+ private OpenAiApiConstants() {
+
+ }
+
}
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/speech/StreamingSpeechModel.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/speech/StreamingSpeechModel.java
index 92dcfa3473a..6743637948d 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/speech/StreamingSpeechModel.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/audio/speech/StreamingSpeechModel.java
@@ -51,4 +51,4 @@ default Flux stream(String message) {
@Override
Flux stream(SpeechPrompt prompt);
-}
\ No newline at end of file
+}
diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractor.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractor.java
index 1d46556cc1e..7a4d344755d 100644
--- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractor.java
+++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/support/OpenAiResponseHeaderExtractor.java
@@ -47,10 +47,14 @@
* @author Christian Tzolov
* @since 0.7.0
*/
-public class OpenAiResponseHeaderExtractor {
+public final class OpenAiResponseHeaderExtractor {
private static final Logger logger = LoggerFactory.getLogger(OpenAiResponseHeaderExtractor.class);
+ private OpenAiResponseHeaderExtractor() {
+
+ }
+
public static RateLimit extractAiResponseHeaders(ResponseEntity> response) {
Long requestsLimit = getHeaderAsLong(response, REQUESTS_LIMIT_HEADER.getName());
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/ChatCompletionRequestTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/ChatCompletionRequestTests.java
index 74ca86bef95..1bd7236319c 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/ChatCompletionRequestTests.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/ChatCompletionRequestTests.java
@@ -70,7 +70,7 @@ public void promptOptionsTools() {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName(TOOL_FUNCTION_NAME)
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build()),
false);
@@ -97,7 +97,7 @@ public void defaultOptionsTools() {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName(TOOL_FUNCTION_NAME)
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build());
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/aot/OpenAiRuntimeHintsTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/aot/OpenAiRuntimeHintsTests.java
index 4b54d809c7a..e3d849898df 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/aot/OpenAiRuntimeHintsTests.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/aot/OpenAiRuntimeHintsTests.java
@@ -25,8 +25,6 @@
import org.springframework.aot.hint.TypeReference;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
-import static org.springframework.ai.aot.AiRuntimeHints.findJsonAnnotatedClassesInPackage;
-import static org.springframework.aot.hint.predicate.RuntimeHintsPredicates.reflection;
class OpenAiRuntimeHintsTests {
@@ -36,9 +34,11 @@ void registerHints() {
OpenAiRuntimeHints openAiRuntimeHints = new OpenAiRuntimeHints();
openAiRuntimeHints.registerHints(runtimeHints, null);
- Set jsonAnnotatedClasses = findJsonAnnotatedClassesInPackage(OpenAiApi.class);
+ Set jsonAnnotatedClasses = org.springframework.ai.aot.AiRuntimeHints
+ .findJsonAnnotatedClassesInPackage(OpenAiApi.class);
for (TypeReference jsonAnnotatedClass : jsonAnnotatedClasses) {
- assertThat(runtimeHints).matches(reflection().onType(jsonAnnotatedClass));
+ assertThat(runtimeHints).matches(org.springframework.aot.hint.predicate.RuntimeHintsPredicates.reflection()
+ .onType(jsonAnnotatedClass));
}
}
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/MockWeatherService.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/MockWeatherService.java
index 88e5df176bc..2c3eb8bf0ea 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/MockWeatherService.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/MockWeatherService.java
@@ -65,7 +65,7 @@ public enum Unit {
*/
public final String unitName;
- private Unit(String text) {
+ Unit(String text) {
this.unitName = text;
}
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/OpenAiApiToolFunctionCallIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/OpenAiApiToolFunctionCallIT.java
index b224fd61ea9..6a511e8fd68 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/OpenAiApiToolFunctionCallIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/OpenAiApiToolFunctionCallIT.java
@@ -138,7 +138,7 @@ public void toolFunctionCall() {
ResponseEntity chatCompletion2 = this.completionApi
.chatCompletionEntity(functionResponseRequest);
- this.logger.info("Final response: " + chatCompletion2.getBody());
+ logger.info("Final response: " + chatCompletion2.getBody());
assertThat(chatCompletion2.getBody().choices()).isNotEmpty();
@@ -147,11 +147,8 @@ public void toolFunctionCall() {
.containsAnyOf("30.0°C", "30°C");
assertThat(chatCompletion2.getBody().choices().get(0).message().content()).contains("Tokyo")
.containsAnyOf("10.0°C", "10°C");
- ;
assertThat(chatCompletion2.getBody().choices().get(0).message().content()).contains("Paris")
.containsAnyOf("15.0°C", "15°C");
- ;
-
}
}
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionModelWithTranscriptionResponseMetadataTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionModelWithTranscriptionResponseMetadataTests.java
index a1b23b4a7bf..fa6af43a7ad 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionModelWithTranscriptionResponseMetadataTests.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionModelWithTranscriptionResponseMetadataTests.java
@@ -130,24 +130,24 @@ private void prepareMock() {
private String getJson() {
return """
{
- "id": "chatcmpl-123",
- "object": "chat.completion",
- "created": 1677652288,
- "model": "gpt-3.5-turbo-0613",
- "choices": [{
- "index": 0,
- "message": {
- "role": "assistant",
- "content": "I surrender!"
- },
- "finish_reason": "stop"
- }],
- "usage": {
- "prompt_tokens": 9,
- "completion_tokens": 12,
- "total_tokens": 21
- }
- }
+ "id": "chatcmpl-123",
+ "object": "chat.completion",
+ "created": 1677652288,
+ "model": "gpt-3.5-turbo-0613",
+ "choices": [{
+ "index": 0,
+ "message": {
+ "role": "assistant",
+ "content": "I surrender!"
+ },
+ "finish_reason": "stop"
+ }],
+ "usage": {
+ "prompt_tokens": 9,
+ "completion_tokens": 12,
+ "total_tokens": 21
+ }
+ }
""";
}
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionModelTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionModelTests.java
index 1f93fe0f69b..46b07b4067f 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionModelTests.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/TranscriptionModelTests.java
@@ -29,12 +29,11 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isA;
-import static org.mockito.Mockito.doAnswer;
+import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
/**
* Unit Tests for {@link TranscriptionModel}.
@@ -54,11 +53,11 @@ void transcrbeRequestReturnsResponseCorrectly() {
// Create a mock Transcript
AudioTranscription transcript = Mockito.mock(AudioTranscription.class);
- when(transcript.getOutput()).thenReturn(mockTranscription);
+ given(transcript.getOutput()).willReturn(mockTranscription);
// Create a mock TranscriptionResponse with the mock Transcript
AudioTranscriptionResponse response = Mockito.mock(AudioTranscriptionResponse.class);
- when(response.getResult()).thenReturn(transcript);
+ given(response.getResult()).willReturn(transcript);
// Transcript transcript = spy(new Transcript(responseMessage));
// TranscriptionResponse response = spy(new
@@ -66,16 +65,14 @@ void transcrbeRequestReturnsResponseCorrectly() {
doCallRealMethod().when(mockClient).call(any(Resource.class));
- doAnswer(invocationOnMock -> {
-
- AudioTranscriptionPrompt transcriptionRequest = invocationOnMock.getArgument(0);
+ given(mockClient.call(any(AudioTranscriptionPrompt.class))).will(invocation -> {
+ AudioTranscriptionPrompt transcriptionRequest = invocation.getArgument(0);
assertThat(transcriptionRequest).isNotNull();
assertThat(transcriptionRequest.getInstructions()).isEqualTo(mockAudioFile);
return response;
-
- }).when(mockClient).call(any(AudioTranscriptionPrompt.class));
+ });
assertThat(mockClient.call(mockAudioFile)).isEqualTo(mockTranscription);
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/MessageTypeContentTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/MessageTypeContentTests.java
index 1fcb34af273..8b4ac894c58 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/MessageTypeContentTests.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/MessageTypeContentTests.java
@@ -44,7 +44,7 @@
import org.springframework.util.MultiValueMap;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.when;
+import static org.mockito.BDDMockito.given;
/**
* @author Christian Tzolov
@@ -65,7 +65,7 @@ public class MessageTypeContentTests {
ArgumentCaptor> headersCaptor;
Flux fluxResponse = Flux
- .generate(() -> new ChatCompletionChunk("id", List.of(), 0l, "model", "fp", "object", null), (state, sink) -> {
+ .generate(() -> new ChatCompletionChunk("id", List.of(), 0L, "model", "fp", "object", null), (state, sink) -> {
sink.next(state);
sink.complete();
return state;
@@ -79,8 +79,8 @@ public void beforeEach() {
@Test
public void systemMessageSimpleContentType() {
- when(this.openAiApi.chatCompletionEntity(this.pomptCaptor.capture(), this.headersCaptor.capture()))
- .thenReturn(Mockito.mock(ResponseEntity.class));
+ given(this.openAiApi.chatCompletionEntity(this.pomptCaptor.capture(), this.headersCaptor.capture()))
+ .willReturn(Mockito.mock(ResponseEntity.class));
this.chatModel.call(new Prompt(List.of(new SystemMessage("test message"))));
@@ -91,8 +91,8 @@ public void systemMessageSimpleContentType() {
@Test
public void userMessageSimpleContentType() {
- when(this.openAiApi.chatCompletionEntity(this.pomptCaptor.capture(), this.headersCaptor.capture()))
- .thenReturn(Mockito.mock(ResponseEntity.class));
+ given(this.openAiApi.chatCompletionEntity(this.pomptCaptor.capture(), this.headersCaptor.capture()))
+ .willReturn(Mockito.mock(ResponseEntity.class));
this.chatModel.call(new Prompt(List.of(new UserMessage("test message"))));
@@ -102,8 +102,8 @@ public void userMessageSimpleContentType() {
@Test
public void streamUserMessageSimpleContentType() {
- when(this.openAiApi.chatCompletionStream(this.pomptCaptor.capture(), this.headersCaptor.capture()))
- .thenReturn(this.fluxResponse);
+ given(this.openAiApi.chatCompletionStream(this.pomptCaptor.capture(), this.headersCaptor.capture()))
+ .willReturn(this.fluxResponse);
this.chatModel.stream(new Prompt(List.of(new UserMessage("test message")))).subscribe();
@@ -122,8 +122,8 @@ private void validateStringContent(ChatCompletionRequest chatCompletionRequest)
@Test
public void userMessageWithMediaType() throws MalformedURLException {
- when(this.openAiApi.chatCompletionEntity(this.pomptCaptor.capture(), this.headersCaptor.capture()))
- .thenReturn(Mockito.mock(ResponseEntity.class));
+ given(this.openAiApi.chatCompletionEntity(this.pomptCaptor.capture(), this.headersCaptor.capture()))
+ .willReturn(Mockito.mock(ResponseEntity.class));
URL mediaUrl = new URL("http://test");
this.chatModel.call(new Prompt(
@@ -135,8 +135,8 @@ public void userMessageWithMediaType() throws MalformedURLException {
@Test
public void streamUserMessageWithMediaType() throws MalformedURLException {
- when(this.openAiApi.chatCompletionStream(this.pomptCaptor.capture(), this.headersCaptor.capture()))
- .thenReturn(this.fluxResponse);
+ given(this.openAiApi.chatCompletionStream(this.pomptCaptor.capture(), this.headersCaptor.capture()))
+ .willReturn(this.fluxResponse);
URL mediaUrl = new URL("http://test");
this.chatModel
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModeAdditionalHttpHeadersIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModeAdditionalHttpHeadersIT.java
index cce923b87f0..21c5b7e81b5 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModeAdditionalHttpHeadersIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModeAdditionalHttpHeadersIT.java
@@ -33,7 +33,7 @@
import org.springframework.context.annotation.Bean;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertThrows;
+import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
/**
* @author Christian Tzolov
@@ -48,9 +48,8 @@ public class OpenAiChatModeAdditionalHttpHeadersIT {
@Test
void additionalApiKeyHeader() {
- assertThrows(NonTransientAiException.class, () -> {
- this.openAiChatModel.call("Tell me a joke");
- });
+ assertThatThrownBy(() -> this.openAiChatModel.call("Tell me a joke"))
+ .isInstanceOf(NonTransientAiException.class);
// Use the additional headers to override the Api Key.
// Mind that you have to prefix the Api Key with the "Bearer " prefix.
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelFunctionCallingIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelFunctionCallingIT.java
index 5caa848b964..281f86e4688 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelFunctionCallingIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelFunctionCallingIT.java
@@ -66,7 +66,7 @@ void functionCallTest() {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build());
}
@@ -102,7 +102,7 @@ else if (request.location().contains("San Francisco")) {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(biFunction)
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.withToolContext(Map.of("sessionId", "123"))
.build());
@@ -128,7 +128,7 @@ void streamFunctionCallTest() {
.withFunctionCallbacks(List.of((FunctionCallbackWrapper.builder(new MockWeatherService())
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build())))
.build());
}
@@ -163,7 +163,7 @@ else if (request.location().contains("San Francisco")) {
.withFunctionCallbacks(List.of((FunctionCallbackWrapper.builder(biFunction)
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build())))
.withToolContext(Map.of("sessionId", "123"))
.build();
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelIT.java
index b12a10e61c8..14d92756927 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelIT.java
@@ -121,9 +121,7 @@ void streamCompletenessTest() throws InterruptedException {
});
chatResponseFlux.subscribe();
assertThat(latch.await(120, TimeUnit.SECONDS)).isTrue();
- IntStream.rangeClosed(1, 1000).forEach(n -> {
- assertThat(answer).contains(String.valueOf(n));
- });
+ IntStream.rangeClosed(1, 1000).forEach(n -> assertThat(answer).contains(String.valueOf(n)));
}
@Test
@@ -333,7 +331,7 @@ void functionCallTest() {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build();
@@ -358,7 +356,7 @@ void streamFunctionCallTest() {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build();
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelResponseFormatIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelResponseFormatIT.java
index 63bf6a88a91..a9c9f2724e8 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelResponseFormatIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelResponseFormatIT.java
@@ -89,7 +89,7 @@ void jsonObject() throws JsonMappingException, JsonProcessingException {
String content = response.getResult().getOutput().getContent();
- this.logger.info("Response content: {}", content);
+ logger.info("Response content: {}", content);
assertThat(isValidJson(content)).isTrue();
}
@@ -132,7 +132,7 @@ void jsonSchema() throws JsonMappingException, JsonProcessingException {
String content = response.getResult().getOutput().getContent();
- this.logger.info("Response content: {}", content);
+ logger.info("Response content: {}", content);
assertThat(isValidJson(content)).isTrue();
}
@@ -172,7 +172,7 @@ record Items(@JsonProperty(required = true, value = "explanation") String explan
String content = response.getResult().getOutput().getContent();
- this.logger.info("Response content: {}", content);
+ logger.info("Response content: {}", content);
MathReasoning mathReasoning = outputConverter.convert(content);
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelWithChatResponseMetadataTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelWithChatResponseMetadataTests.java
index 2e6f6ddb687..ae598fcaad1 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelWithChatResponseMetadataTests.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelWithChatResponseMetadataTests.java
@@ -143,23 +143,23 @@ private void prepareMock() {
private String getJson() {
return """
{
- "id": "chatcmpl-123",
- "object": "chat.completion",
- "created": 1677652288,
- "model": "gpt-3.5-turbo-0613",
- "choices": [{
+ "id": "chatcmpl-123",
+ "object": "chat.completion",
+ "created": 1677652288,
+ "model": "gpt-3.5-turbo-0613",
+ "choices": [{
"index": 0,
"message": {
- "role": "assistant",
- "content": "I surrender!"
+ "role": "assistant",
+ "content": "I surrender!"
},
"finish_reason": "stop"
- }],
- "usage": {
+ }],
+ "usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
- }
+ }
}
""";
}
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiCompatibleChatModelIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiCompatibleChatModelIT.java
index 10645ee562a..997fb02c3a7 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiCompatibleChatModelIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiCompatibleChatModelIT.java
@@ -52,8 +52,6 @@ static OpenAiChatOptions forModelName(String modelName) {
return OpenAiChatOptions.builder().withModel(modelName).build();
}
- ;
-
static Stream openAiCompatibleApis() {
Stream.Builder builder = Stream.builder();
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiPaymentTransactionIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiPaymentTransactionIT.java
index 97c38b13b9e..98a2892d182 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiPaymentTransactionIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiPaymentTransactionIT.java
@@ -155,19 +155,19 @@ public AdvisedResponse aroundCall(AdvisedRequest advisedRequest, CallAroundAdvis
}
private AdvisedRequest before(AdvisedRequest request) {
- this.logger.info("System text: \n" + request.systemText());
- this.logger.info("System params: " + request.systemParams());
- this.logger.info("User text: \n" + request.userText());
- this.logger.info("User params:" + request.userParams());
- this.logger.info("Function names: " + request.functionNames());
+ logger.info("System text: \n" + request.systemText());
+ logger.info("System params: " + request.systemParams());
+ logger.info("User text: \n" + request.userText());
+ logger.info("User params:" + request.userParams());
+ logger.info("Function names: " + request.functionNames());
- this.logger.info("Options: " + request.chatOptions().toString());
+ logger.info("Options: " + request.chatOptions().toString());
return request;
}
private void observeAfter(AdvisedResponse advisedResponse) {
- this.logger.info("Response: " + advisedResponse.response());
+ logger.info("Response: " + advisedResponse.response());
}
}
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiRetryTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiRetryTests.java
index 9b9e28e4383..24019db9f69 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiRetryTests.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiRetryTests.java
@@ -72,7 +72,7 @@
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.isA;
-import static org.mockito.Mockito.when;
+import static org.mockito.BDDMockito.given;
/**
* @author Christian Tzolov
@@ -124,13 +124,13 @@ public void openAiChatTransientError() {
var choice = new ChatCompletion.Choice(ChatCompletionFinishReason.STOP, 0,
new ChatCompletionMessage("Response", Role.ASSISTANT), null);
- ChatCompletion expectedChatCompletion = new ChatCompletion("id", List.of(choice), 666l, "model", null, null,
+ ChatCompletion expectedChatCompletion = new ChatCompletion("id", List.of(choice), 666L, "model", null, null,
new OpenAiApi.Usage(10, 10, 10));
- when(this.openAiApi.chatCompletionEntity(isA(ChatCompletionRequest.class), any()))
- .thenThrow(new TransientAiException("Transient Error 1"))
- .thenThrow(new TransientAiException("Transient Error 2"))
- .thenReturn(ResponseEntity.of(Optional.of(expectedChatCompletion)));
+ given(this.openAiApi.chatCompletionEntity(isA(ChatCompletionRequest.class), any()))
+ .willThrow(new TransientAiException("Transient Error 1"))
+ .willThrow(new TransientAiException("Transient Error 2"))
+ .willReturn(ResponseEntity.of(Optional.of(expectedChatCompletion)));
var result = this.chatModel.call(new Prompt("text"));
@@ -142,8 +142,8 @@ public void openAiChatTransientError() {
@Test
public void openAiChatNonTransientError() {
- when(this.openAiApi.chatCompletionEntity(isA(ChatCompletionRequest.class), any()))
- .thenThrow(new RuntimeException("Non Transient Error"));
+ given(this.openAiApi.chatCompletionEntity(isA(ChatCompletionRequest.class), any()))
+ .willThrow(new RuntimeException("Non Transient Error"));
assertThrows(RuntimeException.class, () -> this.chatModel.call(new Prompt("text")));
}
@@ -153,13 +153,13 @@ public void openAiChatStreamTransientError() {
var choice = new ChatCompletionChunk.ChunkChoice(ChatCompletionFinishReason.STOP, 0,
new ChatCompletionMessage("Response", Role.ASSISTANT), null);
- ChatCompletionChunk expectedChatCompletion = new ChatCompletionChunk("id", List.of(choice), 666l, "model", null,
+ ChatCompletionChunk expectedChatCompletion = new ChatCompletionChunk("id", List.of(choice), 666L, "model", null,
null, null);
- when(this.openAiApi.chatCompletionStream(isA(ChatCompletionRequest.class), any()))
- .thenThrow(new TransientAiException("Transient Error 1"))
- .thenThrow(new TransientAiException("Transient Error 2"))
- .thenReturn(Flux.just(expectedChatCompletion));
+ given(this.openAiApi.chatCompletionStream(isA(ChatCompletionRequest.class), any()))
+ .willThrow(new TransientAiException("Transient Error 1"))
+ .willThrow(new TransientAiException("Transient Error 2"))
+ .willReturn(Flux.just(expectedChatCompletion));
var result = this.chatModel.stream(new Prompt("text"));
@@ -172,8 +172,8 @@ public void openAiChatStreamTransientError() {
@Test
@Disabled("Currently stream() does not implmement retry")
public void openAiChatStreamNonTransientError() {
- when(this.openAiApi.chatCompletionStream(isA(ChatCompletionRequest.class), any()))
- .thenThrow(new RuntimeException("Non Transient Error"));
+ given(this.openAiApi.chatCompletionStream(isA(ChatCompletionRequest.class), any()))
+ .willThrow(new RuntimeException("Non Transient Error"));
assertThrows(RuntimeException.class, () -> this.chatModel.stream(new Prompt("text")).subscribe());
}
@@ -183,10 +183,10 @@ public void openAiEmbeddingTransientError() {
EmbeddingList expectedEmbeddings = new EmbeddingList<>("list",
List.of(new Embedding(0, new float[] { 9.9f, 8.8f })), "model", new OpenAiApi.Usage(10, 10, 10));
- when(this.openAiApi.embeddings(isA(EmbeddingRequest.class)))
- .thenThrow(new TransientAiException("Transient Error 1"))
- .thenThrow(new TransientAiException("Transient Error 2"))
- .thenReturn(ResponseEntity.of(Optional.of(expectedEmbeddings)));
+ given(this.openAiApi.embeddings(isA(EmbeddingRequest.class)))
+ .willThrow(new TransientAiException("Transient Error 1"))
+ .willThrow(new TransientAiException("Transient Error 2"))
+ .willReturn(ResponseEntity.of(Optional.of(expectedEmbeddings)));
var result = this.embeddingModel
.call(new org.springframework.ai.embedding.EmbeddingRequest(List.of("text1", "text2"), null));
@@ -199,8 +199,8 @@ public void openAiEmbeddingTransientError() {
@Test
public void openAiEmbeddingNonTransientError() {
- when(this.openAiApi.embeddings(isA(EmbeddingRequest.class)))
- .thenThrow(new RuntimeException("Non Transient Error"));
+ given(this.openAiApi.embeddings(isA(EmbeddingRequest.class)))
+ .willThrow(new RuntimeException("Non Transient Error"));
assertThrows(RuntimeException.class, () -> this.embeddingModel
.call(new org.springframework.ai.embedding.EmbeddingRequest(List.of("text1", "text2"), null)));
}
@@ -210,10 +210,10 @@ public void openAiAudioTranscriptionTransientError() {
var expectedResponse = new StructuredResponse("nl", 6.7f, "Transcription Text", List.of(), List.of());
- when(this.openAiAudioApi.createTranscription(isA(TranscriptionRequest.class), isA(Class.class)))
- .thenThrow(new TransientAiException("Transient Error 1"))
- .thenThrow(new TransientAiException("Transient Error 2"))
- .thenReturn(ResponseEntity.of(Optional.of(expectedResponse)));
+ given(this.openAiAudioApi.createTranscription(isA(TranscriptionRequest.class), isA(Class.class)))
+ .willThrow(new TransientAiException("Transient Error 1"))
+ .willThrow(new TransientAiException("Transient Error 2"))
+ .willReturn(ResponseEntity.of(Optional.of(expectedResponse)));
AudioTranscriptionResponse result = this.audioTranscriptionModel
.call(new AudioTranscriptionPrompt(new ClassPathResource("speech/jfk.flac")));
@@ -226,8 +226,8 @@ public void openAiAudioTranscriptionTransientError() {
@Test
public void openAiAudioTranscriptionNonTransientError() {
- when(this.openAiAudioApi.createTranscription(isA(TranscriptionRequest.class), isA(Class.class)))
- .thenThrow(new RuntimeException("Transient Error 1"));
+ given(this.openAiAudioApi.createTranscription(isA(TranscriptionRequest.class), isA(Class.class)))
+ .willThrow(new RuntimeException("Transient Error 1"));
assertThrows(RuntimeException.class, () -> this.audioTranscriptionModel
.call(new AudioTranscriptionPrompt(new ClassPathResource("speech/jfk.flac"))));
}
@@ -235,12 +235,12 @@ public void openAiAudioTranscriptionNonTransientError() {
@Test
public void openAiImageTransientError() {
- var expectedResponse = new OpenAiImageResponse(678l, List.of(new Data("url678", "b64", "prompt")));
+ var expectedResponse = new OpenAiImageResponse(678L, List.of(new Data("url678", "b64", "prompt")));
- when(this.openAiImageApi.createImage(isA(OpenAiImageRequest.class)))
- .thenThrow(new TransientAiException("Transient Error 1"))
- .thenThrow(new TransientAiException("Transient Error 2"))
- .thenReturn(ResponseEntity.of(Optional.of(expectedResponse)));
+ given(this.openAiImageApi.createImage(isA(OpenAiImageRequest.class)))
+ .willThrow(new TransientAiException("Transient Error 1"))
+ .willThrow(new TransientAiException("Transient Error 2"))
+ .willReturn(ResponseEntity.of(Optional.of(expectedResponse)));
var result = this.imageModel.call(new ImagePrompt(List.of(new ImageMessage("Image Message"))));
@@ -252,8 +252,8 @@ public void openAiImageTransientError() {
@Test
public void openAiImageNonTransientError() {
- when(this.openAiImageApi.createImage(isA(OpenAiImageRequest.class)))
- .thenThrow(new RuntimeException("Transient Error 1"));
+ given(this.openAiImageApi.createImage(isA(OpenAiImageRequest.class)))
+ .willThrow(new RuntimeException("Transient Error 1"));
assertThrows(RuntimeException.class,
() -> this.imageModel.call(new ImagePrompt(List.of(new ImageMessage("Image Message")))));
}
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/OpenAiChatClientIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/OpenAiChatClientIT.java
index 6a35872525d..3c8a724a063 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/OpenAiChatClientIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/OpenAiChatClientIT.java
@@ -121,7 +121,8 @@ void listOutputConverterString() {
.user(u -> u.text("List five {subject}")
.param("subject", "ice cream flavors"))
.call()
- .entity(new ParameterizedTypeReference>() {});
+ .entity(new ParameterizedTypeReference>() {
+ });
// @formatter:on
logger.info(collection.toString());
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 e8a4fbb17c5..6ba1682e1d5 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
@@ -190,8 +190,8 @@ else if (request.location().contains("San Francisco")) {
// @formatter:off
String response = ChatClient.builder(this.chatModel)
.defaultFunction("getCurrentWeather", "Get the weather in location", biFunction)
- .defaultUser(u -> u.text("What's the weather like in San Francisco, Tokyo, and Paris?"))
- .build()
+ .defaultUser(u -> u.text("What's the weather like in San Francisco, Tokyo, and Paris?"))
+ .build()
.prompt()
.toolContext(Map.of("sessionId", "123"))
.call().content();
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/GroqWithOpenAiChatModelIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/GroqWithOpenAiChatModelIT.java
index 00e12633498..578827fb024 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/GroqWithOpenAiChatModelIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/GroqWithOpenAiChatModelIT.java
@@ -253,7 +253,7 @@ void functionCallTest() {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build();
@@ -276,7 +276,7 @@ void streamFunctionCallTest() {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build();
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/MistralWithOpenAiChatModelIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/MistralWithOpenAiChatModelIT.java
index 51d29144d1b..80ec34b995b 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/MistralWithOpenAiChatModelIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/MistralWithOpenAiChatModelIT.java
@@ -254,7 +254,7 @@ void functionCallTest(String modelName) {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build();
@@ -279,7 +279,7 @@ void streamFunctionCallTest(String modelName) {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build();
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/NvidiaWithOpenAiChatModelIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/NvidiaWithOpenAiChatModelIT.java
index 4c5ad7bc376..4bbe60e6889 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/NvidiaWithOpenAiChatModelIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/NvidiaWithOpenAiChatModelIT.java
@@ -249,7 +249,7 @@ void functionCallTest() {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build();
@@ -272,7 +272,7 @@ void streamFunctionCallTest() {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build();
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/OllamaWithOpenAiChatModelIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/OllamaWithOpenAiChatModelIT.java
index 523a3fa6481..ef7aa97a114 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/OllamaWithOpenAiChatModelIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/proxy/OllamaWithOpenAiChatModelIT.java
@@ -272,7 +272,7 @@ void functionCallTest(String modelName) {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build();
@@ -296,7 +296,7 @@ void streamFunctionCallTest() {
.withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService())
.withName("getCurrentWeather")
.withDescription("Get the weather in location")
- .withResponseConverter((response) -> "" + response.temp() + response.unit())
+ .withResponseConverter(response -> "" + response.temp() + response.unit())
.build()))
.build();
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/embedding/EmbeddingIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/embedding/EmbeddingIT.java
index ae3f4dbb0b1..7035405c038 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/embedding/EmbeddingIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/embedding/EmbeddingIT.java
@@ -78,11 +78,11 @@ void embeddingBatchDocuments() throws Exception {
void embeddingBatchDocumentsThatExceedTheLimit() throws Exception {
assertThat(this.embeddingModel).isNotNull();
String contentAsString = this.resource.getContentAsString(StandardCharsets.UTF_8);
- assertThatThrownBy(() -> {
- this.embeddingModel.embed(List.of(new Document("Hello World"), new Document(contentAsString)),
- OpenAiEmbeddingOptions.builder().withModel(OpenAiApi.DEFAULT_EMBEDDING_MODEL).build(),
- new TokenCountBatchingStrategy());
- }).isInstanceOf(IllegalArgumentException.class);
+ assertThatThrownBy(
+ () -> this.embeddingModel.embed(List.of(new Document("Hello World"), new Document(contentAsString)),
+ OpenAiEmbeddingOptions.builder().withModel(OpenAiApi.DEFAULT_EMBEDDING_MODEL).build(),
+ new TokenCountBatchingStrategy()))
+ .isInstanceOf(IllegalArgumentException.class);
}
@Test
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/image/OpenAiImageModelWithImageResponseMetadataTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/image/OpenAiImageModelWithImageResponseMetadataTests.java
index 47f8b60e516..a331daef690 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/image/OpenAiImageModelWithImageResponseMetadataTests.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/image/OpenAiImageModelWithImageResponseMetadataTests.java
@@ -113,17 +113,17 @@ private void prepareMock() {
private String getJson() {
return """
- {
- "created": 1589478378,
- "data": [
+ {
+ "created": 1589478378,
+ "data": [
{
- "url": "https://upload.wikimedia.org/wikipedia/commons/4/4e/Mini_Golden_Doodle.jpg"
+ "url": "https://upload.wikimedia.org/wikipedia/commons/4/4e/Mini_Golden_Doodle.jpg"
},
{
- "url": "https://upload.wikimedia.org/wikipedia/commons/8/85/Goldendoodle_puppy_Marty.jpg"
+ "url": "https://upload.wikimedia.org/wikipedia/commons/8/85/Goldendoodle_puppy_Marty.jpg"
}
- ]
- }
+ ]
+ }
""";
}
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/moderation/OpenAiModerationModelTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/moderation/OpenAiModerationModelTests.java
index 30d2a9c2700..ca5e91ca984 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/moderation/OpenAiModerationModelTests.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/moderation/OpenAiModerationModelTests.java
@@ -139,40 +139,40 @@ private void prepareMock() {
private String getJson() {
return """
- {
- "id": "modr-XXXXX",
- "model": "text-moderation-005",
- "results": [
- {
- "flagged": true,
- "categories": {
- "sexual": false,
- "hate": false,
- "harassment": false,
- "self-harm": false,
- "sexual/minors": false,
- "hate/threatening": false,
- "violence/graphic": false,
- "self-harm/intent": false,
- "self-harm/instructions": false,
- "harassment/threatening": true,
- "violence": true
- },
- "category_scores": {
- "sexual": 1.2282071e-06,
- "hate": 0.010696256,
- "harassment": 0.29842457,
- "self-harm": 1.5236925e-08,
- "sexual/minors": 5.7246268e-08,
- "hate/threatening": 0.0060676364,
- "violence/graphic": 4.435014e-06,
- "self-harm/intent": 8.098441e-10,
- "self-harm/instructions": 2.8498655e-11,
- "harassment/threatening": 0.63055265,
- "violence": 0.99011886
- }
- }
- ]
+ {
+ "id": "modr-XXXXX",
+ "model": "text-moderation-005",
+ "results": [
+ {
+ "flagged": true,
+ "categories": {
+ "sexual": false,
+ "hate": false,
+ "harassment": false,
+ "self-harm": false,
+ "sexual/minors": false,
+ "hate/threatening": false,
+ "violence/graphic": false,
+ "self-harm/intent": false,
+ "self-harm/instructions": false,
+ "harassment/threatening": true,
+ "violence": true
+ },
+ "category_scores": {
+ "sexual": 1.2282071e-06,
+ "hate": 0.010696256,
+ "harassment": 0.29842457,
+ "self-harm": 1.5236925e-08,
+ "sexual/minors": 5.7246268e-08,
+ "hate/threatening": 0.0060676364,
+ "violence/graphic": 4.435014e-06,
+ "self-harm/intent": 8.098441e-10,
+ "self-harm/instructions": 2.8498655e-11,
+ "harassment/threatening": 0.63055265,
+ "violence": 0.99011886
+ }
+ }
+ ]
}
""";
}
diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java
index 09d7c42f70f..e12bb25c49e 100644
--- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java
+++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/testutils/AbstractIT.java
@@ -112,4 +112,4 @@ protected void evaluateQuestionAndAnswer(String question, ChatResponse response,
}
}
-}
\ No newline at end of file
+}
diff --git a/src/checkstyle/checkstyle.xml b/src/checkstyle/checkstyle.xml
index 0a224dabb03..5bb11d3320f 100644
--- a/src/checkstyle/checkstyle.xml
+++ b/src/checkstyle/checkstyle.xml
@@ -100,7 +100,7 @@
+ value="org.springframework.ai.aot.AiRuntimeHints.*, org.springframework.ai.openai.metadata.support.OpenAiApiResponseHeaders.*, org.springframework.ai.image.observation.ImageModelObservationDocumentation.*, org.springframework.ai.embedding.observation.EmbeddingModelObservationDocumentation.*, org.springframework.aot.hint.predicate.RuntimeHintsPredicates.*, org.springframework.ai.vectorstore.filter.Filter.ExpressionType.*, org.springframework.ai.chat.observation.ChatModelObservationDocumentation.*, org.assertj.core.api.AssertionsForClassTypes.*, org.junit.jupiter.api.Assertions.*, org.assertj.core.api.Assertions.*, org.junit.Assert.*, org.junit.Assume.*, org.junit.internal.matchers.ThrowableMessageMatcher.*, org.hamcrest.CoreMatchers.*, org.hamcrest.Matchers.*, org.springframework.boot.configurationprocessor.ConfigurationMetadataMatchers.*, org.springframework.boot.configurationprocessor.TestCompiler.*, org.springframework.boot.test.autoconfigure.AutoConfigurationImportedCondition.*, org.mockito.Mockito.*, org.mockito.BDDMockito.*, org.mockito.Matchers.*, org.mockito.ArgumentMatchers.*, org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.*, org.springframework.restdocs.hypermedia.HypermediaDocumentation.*, org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*, org.springframework.test.web.servlet.result.MockMvcResultMatchers.*, org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestBuilders.*, org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*, org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*, org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo, org.springframework.test.web.client.match.MockRestRequestMatchers.*, org.springframework.test.web.client.response.MockRestResponseCreators.*, org.springframework.web.reactive.function.server.RequestPredicates.*, org.springframework.web.reactive.function.server.RouterFunctions.*, org.springframework.test.web.servlet.setup.MockMvcBuilders.*" />