From f8ee49c82d087b042f56cf3633c9cc977d6e01a3 Mon Sep 17 00:00:00 2001 From: youngpar Date: Wed, 6 Mar 2024 22:04:37 +0900 Subject: [PATCH 01/39] add test code add test code for the modified changes --- .../openai/tool/FunctionCallbackWithPlainFunctionBeanIT.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 9aa664925e2..41b3493fc41 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 @@ -27,7 +27,7 @@ import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; -import org.springframework.ai.model.function.FunctionCallingOptions; +import org.springframework.ai.model.function.FunctionCallingOptionsBuilder; import org.springframework.ai.model.function.FunctionCallingOptionsBuilder.PortableFunctionCallingOptions; import org.springframework.ai.openai.OpenAiChatClient; import org.springframework.ai.openai.OpenAiChatOptions; @@ -86,7 +86,7 @@ void functionCallWithPortableFunctionCallingOptions() { // Test weatherFunction UserMessage userMessage = new UserMessage("What's the weather like in San Francisco, Tokyo, and Paris?"); - PortableFunctionCallingOptions functionOptions = FunctionCallingOptions.builder() + PortableFunctionCallingOptions functionOptions = FunctionCallingOptionsBuilder.builder() .withFunction("weatherFunction") .build(); From e0dd9b139b9a3729ff048f2e946df8908083f480 Mon Sep 17 00:00:00 2001 From: youngpar Date: Thu, 7 Mar 2024 18:31:54 +0900 Subject: [PATCH 02/39] refactor separate FunctionCallingOptions Refactored the FunctionCallingOptions interface by separating it into two distinct interfaces: FunctionCallingOptions. java and PortableFunctionCallingOptions.java. This change aims to enhance modularity and clarify the responsibilities of each interface in the system. --- .../function/FunctionCallingOptions.java | 23 ------------------- .../PortableFunctionCallingOptions.java | 22 ++++++++++++++++++ 2 files changed, 22 insertions(+), 23 deletions(-) create mode 100644 spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptions.java diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java index 146b35c4715..856acb13f10 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java @@ -33,33 +33,10 @@ public interface FunctionCallingOptions { */ List getFunctionCallbacks(); - /** - * Set the Function Callbacks to be registered with the ChatClient. - * @param functionCallbacks the Function Callbacks to be registered with the - * ChatClient. - */ - void setFunctionCallbacks(List functionCallbacks); - /** * @return List of function names from the ChatClient registry to be used in the next * chat completion requests. */ Set getFunctions(); - /** - * Set the list of function names from the ChatClient registry to be used in the next - * chat completion requests. - * @param functions the list of function names from the ChatClient registry to be used - * in the next chat completion requests. - */ - void setFunctions(Set functions); - - /** - * @return Returns FunctionCallingOptionsBuilder to create a new instance of - * FunctionCallingOptions. - */ - public static FunctionCallingOptionsBuilder builder() { - return new FunctionCallingOptionsBuilder(); - } - } \ No newline at end of file diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptions.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptions.java new file mode 100644 index 00000000000..e14ee29bbae --- /dev/null +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptions.java @@ -0,0 +1,22 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.model.function; + +import org.springframework.ai.chat.prompt.ChatOptions; + +public interface PortableFunctionCallingOptions extends FunctionCallingOptions, ChatOptions { + +} From b99466abebd7ed93abbfb3304ff01213ff7a0974 Mon Sep 17 00:00:00 2001 From: youngpar Date: Thu, 7 Mar 2024 21:08:23 +0900 Subject: [PATCH 03/39] refactor ChatOptionsBuilder.java Hidden Implementation and Enforced Access through an Interface. --- .../ai/chat/prompt/ChatOptionsBuilder.java | 105 +++++++++++------- 1 file changed, 62 insertions(+), 43 deletions(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java index d367af422ad..0f27bbbf46a 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java @@ -17,69 +17,88 @@ public class ChatOptionsBuilder { - private class ChatOptionsImpl implements ChatOptions { - - private Float temperature; - - private Float topP; - - private Integer topK; + private Float temperature; - @Override - public Float getTemperature() { - return temperature; - } - - public void setTemperature(Float temperature) { - this.temperature = temperature; - } - - @Override - public Float getTopP() { - return topP; - } - - public void setTopP(Float topP) { - this.topP = topP; - } - - @Override - public Integer getTopK() { - return topK; - } - - public void setTopK(Integer topK) { - this.topK = topK; - } - - } + private Float topP; - private final ChatOptionsImpl options = new ChatOptionsImpl(); + private Integer topK; private ChatOptionsBuilder() { } + /** + * Creates a new {@link ChatOptions} instance. + * @return A new instance of ChatOptionsBuilder. + */ public static ChatOptionsBuilder builder() { return new ChatOptionsBuilder(); } - public ChatOptionsBuilder withTemperature(Float temperature) { - options.setTemperature(temperature); + /** + * Initializes a new {@link ChatOptionsBuilder} with settings from an existing + * {@link ChatOptions} object. + * @param options The ChatOptions object whose settings are to be used. + * @return A ChatOptionsBuilder instance initialized with the provided ChatOptions + * settings. + */ + public static ChatOptionsBuilder builder(final ChatOptions options) { + return builder().withTemperature(options.getTemperature()) + .withTopK(options.getTopK()) + .withTopP(options.getTopP()); + } + + public ChatOptionsBuilder withTemperature(final Float temperature) { + this.temperature = temperature; return this; } - public ChatOptionsBuilder withTopP(Float topP) { - options.setTopP(topP); + public ChatOptionsBuilder withTopP(final Float topP) { + this.topP = topP; return this; } - public ChatOptionsBuilder withTopK(Integer topK) { - options.setTopK(topK); + public ChatOptionsBuilder withTopK(final Integer topK) { + this.topK = topK; return this; } public ChatOptions build() { - return options; + return new ChatOptionsImpl(this.temperature, this.topP, this.topK); + } + + /** + * Created only by ChatOptionsBuilder for controlled setup. Hidden implementation, + * accessed via ChatOptions interface. Promotes modularity and easy use. + */ + private class ChatOptionsImpl implements ChatOptions { + + private final Float temperature; + + private final Float topP; + + private final Integer topK; + + ChatOptionsImpl(final Float temperature, final Float topP, final Integer topK) { + this.temperature = temperature; + this.topP = topP; + this.topK = topK; + } + + @Override + public Float getTemperature() { + return temperature; + } + + @Override + public Float getTopP() { + return topP; + } + + @Override + public Integer getTopK() { + return topK; + } + } } \ No newline at end of file From 41f3f3c734ab048e3f8d40966fc1d4b77fb2f879 Mon Sep 17 00:00:00 2001 From: youngpar Date: Thu, 7 Mar 2024 21:15:32 +0900 Subject: [PATCH 04/39] refactor FunctionCallingOptionsBuilder.java Hidden Implementation and Enforced Access through an Interface. --- .../FunctionCallingOptionsBuilder.java | 122 +++++++----------- 1 file changed, 44 insertions(+), 78 deletions(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java index 8b30da67da7..8aa08955ae6 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java @@ -19,126 +19,92 @@ import java.util.HashSet; import java.util.List; import java.util.Set; - -import org.springframework.ai.chat.prompt.ChatOptions; import org.springframework.util.Assert; /** - * Builder for {@link FunctionCallingOptions}. Using the {@link FunctionCallingOptions} - * permits options portability between different AI providers that support - * function-calling. + * Builder for {@link FunctionCallingOptions}. This builder creates option objects + * required for function-calling. * - * @author Christian Tzolov + * @author youngmon * @since 0.8.1 */ public class FunctionCallingOptionsBuilder { - private final PortableFunctionCallingOptions options; + private List functionCallbacks = new ArrayList<>(); - public FunctionCallingOptionsBuilder() { - this.options = new PortableFunctionCallingOptions(); - } + private Set functions = new HashSet<>(); - public FunctionCallingOptionsBuilder withFunctionCallbacks(List functionCallbacks) { - this.options.setFunctionCallbacks(functionCallbacks); - return this; + private FunctionCallingOptionsBuilder() { } - public FunctionCallingOptionsBuilder withFunctionCallback(FunctionCallback functionCallback) { - Assert.notNull(functionCallback, "FunctionCallback must not be null"); - this.options.getFunctionCallbacks().add(functionCallback); - return this; + /** + * Creates a new {@link FunctionCallingOptionsBuilder} instance. + * @return A new instance of FunctionCallingOptionsBuilder. + */ + public static FunctionCallingOptionsBuilder builder() { + return new FunctionCallingOptionsBuilder(); } - public FunctionCallingOptionsBuilder withFunctions(Set functions) { - this.options.setFunctions(functions); - return this; + /** + * Initializes a new {@link FunctionCallingOptionsBuilder} with settings from an + * existing {@link FunctionCallingOptions} object. + * @param options The FunctionCallingOptions object whose settings are to be used. + * @return A FunctionCallingOptionsBuilder instance initialized with the provided + * FunctionCallingOptions settings. + */ + public static FunctionCallingOptionsBuilder builder(final FunctionCallingOptions options) { + return builder().withFunctions(options.getFunctions()).withFunctionCallbacks(options.getFunctionCallbacks()); } - public FunctionCallingOptionsBuilder withFunction(String function) { - Assert.notNull(function, "Function must not be null"); - this.options.getFunctions().add(function); - return this; + public FunctionCallingOptions build() { + return new FunctionCallingOptionsImpl(this.functionCallbacks, this.functions); } - public FunctionCallingOptionsBuilder withTemperature(Float temperature) { - this.options.setTemperature(temperature); + public FunctionCallingOptionsBuilder withFunctionCallbacks(final List functionCallbacks) { + Assert.notNull(functionCallbacks, "FunctionCallback must not be null"); + this.functionCallbacks = functionCallbacks; return this; } - public FunctionCallingOptionsBuilder withTopP(Float topP) { - this.options.setTopP(topP); + public FunctionCallingOptionsBuilder withFunctionCallback(final FunctionCallback functionCallback) { + Assert.notNull(functionCallback, "FunctionCallback must not be null"); + this.functionCallbacks.add(functionCallback); return this; } - public FunctionCallingOptionsBuilder withTopK(Integer topK) { - this.options.setTopK(topK); + public FunctionCallingOptionsBuilder withFunctions(final Set functions) { + Assert.notNull(functions, "Functions must not be null"); + this.functions = functions; return this; } - public PortableFunctionCallingOptions build() { - return this.options; + public FunctionCallingOptionsBuilder withFunction(final String function) { + Assert.notNull(function, "Function must not be null"); + this.functions.add(function); + return this; } - public static class PortableFunctionCallingOptions implements FunctionCallingOptions, ChatOptions { - - private List functionCallbacks = new ArrayList<>(); - - private Set functions = new HashSet<>(); + private class FunctionCallingOptionsImpl implements FunctionCallingOptions { - private Float temperature; + private final List functionCallbacks; - private Float topP; + private final Set functions; - private Integer topK; + FunctionCallingOptionsImpl(final List functionCallbacks, final Set functions) { + this.functionCallbacks = functionCallbacks; + this.functions = functions; + } @Override public List getFunctionCallbacks() { return this.functionCallbacks; } - public void setFunctionCallbacks(List functionCallbacks) { - Assert.notNull(functionCallbacks, "FunctionCallbacks must not be null"); - this.functionCallbacks = functionCallbacks; - } - @Override public Set getFunctions() { return this.functions; } - public void setFunctions(Set functions) { - Assert.notNull(functions, "Functions must not be null"); - this.functions = functions; - } - - @Override - public Float getTemperature() { - return this.temperature; - } - - public void setTemperature(Float temperature) { - this.temperature = temperature; - } - - @Override - public Float getTopP() { - return this.topP; - } - - public void setTopP(Float topP) { - this.topP = topP; - } - - @Override - public Integer getTopK() { - return this.topK; - } - - public void setTopK(Integer topK) { - this.topK = topK; - } - } -} \ No newline at end of file +} From 3e64f5ba768305d6587cf3363a6ea95b3c5f59f0 Mon Sep 17 00:00:00 2001 From: youngpar Date: Thu, 7 Mar 2024 21:28:41 +0900 Subject: [PATCH 05/39] feat PortableFunctionCallingOptionsBuilder.java Hidden Implementation and Enforced Access through an Interface. --- ...PortableFunctionCallingOptionsBuilder.java | 151 ++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptionsBuilder.java diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptionsBuilder.java new file mode 100644 index 00000000000..c86daec88a2 --- /dev/null +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptionsBuilder.java @@ -0,0 +1,151 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.model.function; + +import java.util.List; +import java.util.Set; + +import org.springframework.ai.chat.prompt.ChatOptions; +import org.springframework.ai.chat.prompt.ChatOptionsBuilder; + +/** + * Builder for {@link PortableFunctionCallingOptions}. Using the + * {@link PortableFunctionCallingOptions} permits options portability between different AI + * providers that support function-calling. + * + * @author youngmon + * @author Christian Tzolov + * @since 0.8.1 + */ +public class PortableFunctionCallingOptionsBuilder { + + private FunctionCallingOptionsBuilder functionCallingOptionBuilder = FunctionCallingOptionsBuilder.builder(); + + private ChatOptionsBuilder chatOptionsBuilder = ChatOptionsBuilder.builder(); + + private PortableFunctionCallingOptionsBuilder() { + } + + /** + * Creates a new {@link PortableFunctionCallingOptionsBuilder} instance. + * @return A new instance of PortableFunctionCallingOptionsBuilder. + */ + public static PortableFunctionCallingOptionsBuilder builder() { + return new PortableFunctionCallingOptionsBuilder(); + } + + /** + * Initializes a new {@link PortableFunctionCallingOptionsBuilder} with settings from + * an existing {@link PortableFunctionCallingOptions} object. + * @param options The PortableFunctionCallingOptions object whose settings are to be + * used. + * @return A PortableFunctionCallingOptionsBuilder instance initialized with the + * provided PortableFunctionCallingOptions settings. + */ + public static PortableFunctionCallingOptionsBuilder builder(final PortableFunctionCallingOptions options) { + return builder().withChatOptions(options).withFunctionCallingOptions(options); + } + + public PortableFunctionCallingOptions build() { + return new PortableFunctionCallingOptionsImpl(this.functionCallingOptionBuilder.build(), + this.chatOptionsBuilder.build()); + } + + public PortableFunctionCallingOptionsBuilder withFunctionCallbacks(final List functionCallbacks) { + this.functionCallingOptionBuilder.withFunctionCallbacks(functionCallbacks); + return this; + } + + public PortableFunctionCallingOptionsBuilder withFunctionCallback(final FunctionCallback functionCallback) { + this.functionCallingOptionBuilder.withFunctionCallback(functionCallback); + return this; + } + + public PortableFunctionCallingOptionsBuilder withFunctions(final Set functions) { + this.functionCallingOptionBuilder.withFunctions(functions); + return this; + } + + public PortableFunctionCallingOptionsBuilder withFunction(final String function) { + this.functionCallingOptionBuilder.withFunction(function); + return this; + } + + public PortableFunctionCallingOptionsBuilder withTemperature(final Float temperature) { + this.chatOptionsBuilder.withTemperature(temperature); + return this; + } + + public PortableFunctionCallingOptionsBuilder withTopP(final Float topP) { + this.chatOptionsBuilder.withTopP(topP); + return this; + } + + public PortableFunctionCallingOptionsBuilder withTopK(final Integer topK) { + this.chatOptionsBuilder.withTopK(topK); + return this; + } + + public PortableFunctionCallingOptionsBuilder withChatOptions(final ChatOptions options) { + this.chatOptionsBuilder = ChatOptionsBuilder.builder(options); + return this; + } + + public PortableFunctionCallingOptionsBuilder withFunctionCallingOptions(final FunctionCallingOptions options) { + this.functionCallingOptionBuilder = FunctionCallingOptionsBuilder.builder(options); + return this; + } + + private class PortableFunctionCallingOptionsImpl implements PortableFunctionCallingOptions { + + private final FunctionCallingOptions functionCallingOptions; + + private final ChatOptions chatOptions; + + PortableFunctionCallingOptionsImpl(final FunctionCallingOptions functionCallingOptions, + final ChatOptions chatOptions) { + this.functionCallingOptions = functionCallingOptions; + this.chatOptions = chatOptions; + } + + @Override + public List getFunctionCallbacks() { + return this.functionCallingOptions.getFunctionCallbacks(); + } + + @Override + public Set getFunctions() { + return this.functionCallingOptions.getFunctions(); + } + + @Override + public Float getTemperature() { + return this.chatOptions.getTemperature(); + } + + @Override + public Float getTopP() { + return this.chatOptions.getTopP(); + } + + @Override + public Integer getTopK() { + return this.chatOptions.getTopK(); + } + + } + +} \ No newline at end of file From 75065afd74133ecb69409a6c736109d18ed7dc61 Mon Sep 17 00:00:00 2001 From: youngpar Date: Thu, 7 Mar 2024 21:37:10 +0900 Subject: [PATCH 06/39] refactor Fix side-effect Modified code that was using the existing builder. --- .../ai/mistralai/MistralAiChatOptions.java | 17 ++--------------- .../ai/openai/OpenAiChatOptions.java | 9 --------- ...FunctionCallbackWithPlainFunctionBeanIT.java | 6 +++--- 3 files changed, 5 insertions(+), 27 deletions(-) diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java index 86c0bda36bb..16167472954 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java @@ -23,12 +23,11 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import org.springframework.ai.chat.prompt.ChatOptions; import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionRequest.ResponseFormat; import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionRequest.ToolChoice; import org.springframework.ai.mistralai.api.MistralAiApi.FunctionTool; import org.springframework.ai.model.function.FunctionCallback; -import org.springframework.ai.model.function.FunctionCallingOptions; +import org.springframework.ai.model.function.PortableFunctionCallingOptions; import org.springframework.boot.context.properties.NestedConfigurationProperty; import org.springframework.util.Assert; @@ -38,7 +37,7 @@ * @since 0.8.1 */ @JsonInclude(JsonInclude.Include.NON_NULL) -public class MistralAiChatOptions implements FunctionCallingOptions, ChatOptions { +public class MistralAiChatOptions implements PortableFunctionCallingOptions { /** * ID of the model to use @@ -292,21 +291,9 @@ public List getFunctionCallbacks() { return this.functionCallbacks; } - @Override - public void setFunctionCallbacks(List functionCallbacks) { - Assert.notNull(functionCallbacks, "FunctionCallbacks must not be null"); - this.functionCallbacks = functionCallbacks; - } - @Override public Set getFunctions() { return this.functions; } - @Override - public void setFunctions(Set functions) { - Assert.notNull(functions, "Function must not be null"); - this.functions = functions; - } - } diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java index 14faaf6f82d..3cfe6f0a262 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java @@ -374,20 +374,11 @@ public List getFunctionCallbacks() { return this.functionCallbacks; } - @Override - public void setFunctionCallbacks(List functionCallbacks) { - this.functionCallbacks = functionCallbacks; - } - @Override public Set getFunctions() { return functions; } - public void setFunctions(Set functionNames) { - this.functions = functionNames; - } - @Override public int hashCode() { final int prime = 31; 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 41b3493fc41..279afbb4be3 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 @@ -27,8 +27,8 @@ import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; -import org.springframework.ai.model.function.FunctionCallingOptionsBuilder; -import org.springframework.ai.model.function.FunctionCallingOptionsBuilder.PortableFunctionCallingOptions; +import org.springframework.ai.model.function.PortableFunctionCallingOptions; +import org.springframework.ai.model.function.PortableFunctionCallingOptionsBuilder; import org.springframework.ai.openai.OpenAiChatClient; import org.springframework.ai.openai.OpenAiChatOptions; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -86,7 +86,7 @@ void functionCallWithPortableFunctionCallingOptions() { // Test weatherFunction UserMessage userMessage = new UserMessage("What's the weather like in San Francisco, Tokyo, and Paris?"); - PortableFunctionCallingOptions functionOptions = FunctionCallingOptionsBuilder.builder() + PortableFunctionCallingOptions functionOptions = PortableFunctionCallingOptionsBuilder.builder() .withFunction("weatherFunction") .build(); From 092b6a9ebac14e6738c512fe9742c0e5358a7ded Mon Sep 17 00:00:00 2001 From: youngpar Date: Fri, 8 Mar 2024 00:44:08 +0900 Subject: [PATCH 07/39] refactor ImageOptionsBuilder.java Hidden Implementation and Enforced Access through an Interface. --- .../ai/image/ImageOptionsBuilder.java | 156 ++++++++++-------- 1 file changed, 91 insertions(+), 65 deletions(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java index c7b7f3eb115..d4c26072bd4 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java @@ -15,104 +15,130 @@ */ package org.springframework.ai.image; +/** + * Builder for {@link ImageOptions}. This builder creates option objects required for + * image generation. + * + * @author youngmon + * @since 0.8.1 + */ public class ImageOptionsBuilder { - private class ImageModelOptionsImpl implements ImageOptions { + private Integer n; + + private String model; + + private Integer width; + + private Integer height; + + private String responseFormat; + + private ImageOptionsBuilder() { + } + + /** + * Creates a new {@link ImageOptionsBuilder} instance. + * @return A new instance of ImageOptionsBuilder. + */ + public static ImageOptionsBuilder builder() { + return new ImageOptionsBuilder(); + } + + /** + * Initializes a new {@link ImageOptionsBuilder} with settings from an existing + * {@link ImageOptions} object. + * @param options The ImageOptions object whose settings are to be used. + * @return A ImageOptionsBuilder instance initialized with the provided ImageOptions + * settings. + */ + public static ImageOptionsBuilder builder(final ImageOptions options) { + return builder().withN(options.getN()) + .withModel(options.getModel()) + .withHeight(options.getHeight()) + .withWidth(options.getWidth()) + .withResponseFormat(options.getResponseFormat()); + } + + public ImageOptions build() { + return new ImageOptionsImpl(this.n, this.model, this.width, this.height, this.responseFormat); + } + + public ImageOptionsBuilder withN(final Integer n) { + this.n = n; + return this; + } + + public ImageOptionsBuilder withModel(final String model) { + this.model = model; + return this; + } + + public ImageOptionsBuilder withResponseFormat(final String responseFormat) { + this.responseFormat = responseFormat; + return this; + } - private Integer n; + public ImageOptionsBuilder withWidth(final Integer width) { + this.width = width; + return this; + } + + public ImageOptionsBuilder withHeight(final Integer height) { + this.height = height; + return this; + } - private String model; + /** + * Created only by ImageOptionsBuilder for controlled setup. Hidden implementation, + * accessed via ImageOptions interface. Promotes modularity and easy use. + */ + private class ImageOptionsImpl implements ImageOptions { - private Integer width; + private final Integer n; - private Integer height; + private final String model; - private String responseFormat; + private final Integer width; + + private final Integer height; + + private final String responseFormat; + + ImageOptionsImpl(final Integer n, final String model, final Integer width, final Integer height, + final String responseFormat) { + this.n = n; + this.model = model; + this.width = width; + this.height = height; + this.responseFormat = responseFormat; + } @Override public Integer getN() { return n; } - public void setN(Integer n) { - this.n = n; - } - @Override public String getModel() { return model; } - public void setModel(String model) { - this.model = model; - } - @Override public String getResponseFormat() { return responseFormat; } - public void setResponseFormat(String responseFormat) { - this.responseFormat = responseFormat; - } - @Override public Integer getWidth() { return width; } - public void setWidth(Integer width) { - this.width = width; - } - @Override public Integer getHeight() { return height; } - public void setHeight(Integer height) { - this.height = height; - } - - } - - private final ImageModelOptionsImpl options = new ImageModelOptionsImpl(); - - private ImageOptionsBuilder() { - - } - - public static ImageOptionsBuilder builder() { - return new ImageOptionsBuilder(); - } - - public ImageOptionsBuilder withN(Integer n) { - options.setN(n); - return this; - } - - public ImageOptionsBuilder withModel(String model) { - options.setModel(model); - return this; - } - - public ImageOptionsBuilder withResponseFormat(String responseFormat) { - options.setResponseFormat(responseFormat); - return this; - } - - public ImageOptionsBuilder withWidth(Integer width) { - options.setWidth(width); - return this; - } - - public ImageOptionsBuilder withHeight(Integer height) { - options.setHeight(height); - return this; - } - - public ImageOptions build() { - return options; } } From 9bf18a17b4429876e0bd54c7a0b14dc2de3740ef Mon Sep 17 00:00:00 2001 From: youngpar Date: Fri, 8 Mar 2024 00:45:36 +0900 Subject: [PATCH 08/39] test add TestCode for Options * ChatBuilderTests.java * ImageOptionsTests.java * FunctionCallingOptionsTests.java --- ...uilderTests.java => ChatOptionsTests.java} | 54 +----- .../ai/image/ImageOptionsTests.java | 80 ++++++++ .../function/FunctionCallingOptionsTests.java | 178 ++++++++++++++++++ 3 files changed, 265 insertions(+), 47 deletions(-) rename spring-ai-core/src/test/java/org/springframework/ai/chat/{ChatBuilderTests.java => ChatOptionsTests.java} (51%) create mode 100644 spring-ai-core/src/test/java/org/springframework/ai/image/ImageOptionsTests.java create mode 100644 spring-ai-core/src/test/java/org/springframework/ai/model/function/FunctionCallingOptionsTests.java diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatBuilderTests.java b/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatOptionsTests.java similarity index 51% rename from spring-ai-core/src/test/java/org/springframework/ai/chat/ChatBuilderTests.java rename to spring-ai-core/src/test/java/org/springframework/ai/chat/ChatOptionsTests.java index fb4ca1acf60..5a009cd8252 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatBuilderTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/chat/ChatOptionsTests.java @@ -16,28 +16,18 @@ package org.springframework.ai.chat; import static org.assertj.core.api.Assertions.assertThat; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; import org.junit.jupiter.api.Test; import org.springframework.ai.chat.prompt.ChatOptions; import org.springframework.ai.chat.prompt.ChatOptionsBuilder; -import org.springframework.ai.chat.prompt.Prompt; -import org.springframework.ai.model.function.FunctionCallback; -import org.springframework.ai.model.function.FunctionCallbackWrapper; -import org.springframework.ai.model.function.FunctionCallingOptions; -import org.springframework.ai.model.function.FunctionCallingOptionsBuilder; /** - * Unit Tests for {@link Prompt}. + * Unit Tests for {@link ChatOptions}. * * @author youngmon * @since 0.8.1 */ -public class ChatBuilderTests { +public class ChatOptionsTests { @Test void createNewChatOptionsTest() { @@ -68,43 +58,13 @@ void duplicateChatOptionsTest() { .withTopK(initTopK) .build(); - } - - @Test - void createFunctionCallingOptionTest() { - Float temperature = 1.1f; - Float topP = 2.2f; - Integer topK = 111; - List functionCallbacks = new ArrayList<>(); - Set functions = new HashSet<>(); - - String func = "func"; - FunctionCallback cb = FunctionCallbackWrapper.builder(i -> i) - .withName("cb") - .withDescription("cb") - .build(); - - functions.add(func); - functionCallbacks.add(cb); - - FunctionCallingOptions options = FunctionCallingOptions.builder() - .withFunctionCallbacks(functionCallbacks) - .withFunctions(functions) - .withTopK(topK) - .withTopP(topP) - .withTemperature(temperature) - .build(); - - // Callback Functions - assertThat(options.getFunctionCallbacks()).isNotNull(); - assertThat(options.getFunctionCallbacks().size()).isEqualTo(1); - assertThat(options.getFunctionCallbacks().contains(cb)); + ChatOptions options1 = ChatOptionsBuilder.builder(options).build(); - // Functions - assertThat(options.getFunctions()).isNotNull(); - assertThat(options.getFunctions().size()).isEqualTo(1); - assertThat(options.getFunctions().contains(func)); + assertThat(options.getTopP()).isEqualTo(options1.getTopP()); + assertThat(options.getTopK()).isEqualTo(options1.getTopK()); + assertThat(options.getTemperature()).isEqualTo(options1.getTemperature()); + assertThat(options).isNotSameAs(options1); } } diff --git a/spring-ai-core/src/test/java/org/springframework/ai/image/ImageOptionsTests.java b/spring-ai-core/src/test/java/org/springframework/ai/image/ImageOptionsTests.java new file mode 100644 index 00000000000..14fbad39886 --- /dev/null +++ b/spring-ai-core/src/test/java/org/springframework/ai/image/ImageOptionsTests.java @@ -0,0 +1,80 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.image; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Unit Tests for {@link ImageOptions}. + * + * @author youngmon + * @since 0.8.1 + */ +public class ImageOptionsTests { + + @Test + void createImageOptionsTest() { + ImageOptions options = ImageOptionsBuilder.builder().build(); + + assertThat(options).isNotNull(); + assertThat(options).isInstanceOf(ImageOptions.class); + } + + @Test + void initImageOptionsTest() { + ImageOptions options = ImageOptionsBuilder.builder().build(); + + assertThat(options.getN()).isNull(); + assertThat(options.getModel()).isNull(); + assertThat(options.getHeight()).isNull(); + assertThat(options.getHeight()).isNull(); + assertThat(options.getWidth()).isNull(); + } + + @Test + void assignImageOptionsTest() { + String responseFormat = "url"; + String model = "dall-e-3"; + Integer n = 3; + Integer width = 512; + Integer height = 768; + + ImageOptions options = ImageOptionsBuilder.builder() + .withResponseFormat(responseFormat) + .withWidth(width) + .withHeight(height) + .withModel(model) + .withN(n) + .build(); + + assertThat(options.getWidth()).isEqualTo(width); + assertThat(options.getHeight()).isEqualTo(height); + assertThat(options.getModel()).isEqualTo(model); + assertThat(options.getN()).isEqualTo(n); + assertThat(options.getResponseFormat()).isEqualTo(responseFormat); + } + + @Test + void immutableTest() { + ImageOptions options = ImageOptionsBuilder.builder().build(); + ImageOptions options1 = ImageOptionsBuilder.builder(options).build(); + + assertThat(options).isNotSameAs(options1); + } + +} diff --git a/spring-ai-core/src/test/java/org/springframework/ai/model/function/FunctionCallingOptionsTests.java b/spring-ai-core/src/test/java/org/springframework/ai/model/function/FunctionCallingOptionsTests.java new file mode 100644 index 00000000000..14d902b4ce6 --- /dev/null +++ b/spring-ai-core/src/test/java/org/springframework/ai/model/function/FunctionCallingOptionsTests.java @@ -0,0 +1,178 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.model.function; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; +import org.springframework.ai.chat.prompt.ChatOptions; +import org.springframework.ai.chat.prompt.ChatOptionsBuilder; + +/** + * Unit Tests for {@link FunctionCallingOptions}. + * + * @author youngmon + * @since 0.8.1 + */ +public class FunctionCallingOptionsTests { + + final String func = "func"; + + final FunctionCallback cb = FunctionCallbackWrapper.builder(i -> i) + .withName("cb") + .withDescription("cb") + .build(); + + @Test + void createFunctionCallingOptionsTest() { + FunctionCallingOptions options = FunctionCallingOptionsBuilder.builder().build(); + + assertThat(options).isNotNull(); + assertThat(options).isInstanceOf(FunctionCallingOptions.class); + } + + @Test + void createPortableFunctionCallingOptionsTest() { + PortableFunctionCallingOptions options = PortableFunctionCallingOptionsBuilder.builder().build(); + + assertThat(options).isNotNull(); + assertThat(options).isInstanceOf(PortableFunctionCallingOptions.class); + } + + @Test + void castingPortableFunctionCallingOptionsTest() { + ChatOptions chatOptions = PortableFunctionCallingOptionsBuilder.builder().build(); + FunctionCallingOptions functionCallingOptions = PortableFunctionCallingOptionsBuilder.builder().build(); + + assertThat(chatOptions).isNotNull(); + assertThat(functionCallingOptions).isNotNull(); + + assertThat(chatOptions).isInstanceOf(ChatOptions.class).isInstanceOf(PortableFunctionCallingOptions.class); + assertThat(functionCallingOptions).isInstanceOf(FunctionCallingOptions.class) + .isInstanceOf(PortableFunctionCallingOptions.class); + } + + @Test + void initFunctionCallingOptionsTest() { + FunctionCallingOptions options = FunctionCallingOptionsBuilder.builder().build(); + + // Callback Functions + assertThat(options.getFunctionCallbacks()).isNotNull(); + assertThat(options.getFunctionCallbacks().isEmpty()).isTrue(); + + // Functions + assertThat(options.getFunctions()).isNotNull(); + assertThat(options.getFunctions().isEmpty()).isTrue(); + } + + @Test + void initPortableFunctionCallingOptionsTest() { + PortableFunctionCallingOptions options = PortableFunctionCallingOptionsBuilder.builder().build(); + + // Callback Funcions + assertThat(options.getFunctionCallbacks()).isNotNull(); + assertThat(options.getFunctionCallbacks().isEmpty()).isTrue(); + + // Functions + assertThat(options.getFunctions()).isNotNull(); + assertThat(options.getFunctions().isEmpty()).isTrue(); + } + + @Test + void assignFunctionCallingOptionsTest() { + FunctionCallingOptions options = FunctionCallingOptionsBuilder.builder() + .withFunction(func) + .withFunctionCallback(cb) + .build(); + + // Callback Functions + assertThat(options.getFunctionCallbacks()).isNotNull(); + assertThat(options.getFunctions().size()).isEqualTo(1); + assertThat(options.getFunctionCallbacks().contains(cb)); + + // Functions + assertThat(options.getFunctions()).isNotNull(); + assertThat(options.getFunctions().size()).isEqualTo(1); + assertThat(options.getFunctions().contains(func)); + } + + @Test + void assignPortableFunctionCallingOptionsTest() { + PortableFunctionCallingOptions options = PortableFunctionCallingOptionsBuilder.builder() + .withFunction(func) + .withFunctionCallback(cb) + .build(); + + // Callback Functions + assertThat(options.getFunctionCallbacks()).isNotNull(); + assertThat(options.getFunctions().size()).isEqualTo(1); + assertThat(options.getFunctionCallbacks().contains(cb)); + + // Functions + assertThat(options.getFunctions()).isNotNull(); + assertThat(options.getFunctions().size()).isEqualTo(1); + assertThat(options.getFunctions().contains(func)); + } + + @Test + void convertPortableFunctionCallingOptionsTest() { + String func = "func"; + Integer topK = 123; + + PortableFunctionCallingOptions options = PortableFunctionCallingOptionsBuilder.builder() + .withFunction(func) + .withTopK(topK) + .build(); + + assertThat(options.getFunctions()).contains(func); + assertThat(options.getTopK()).isEqualTo(topK); + + // type + assertThat(options).isInstanceOf(ChatOptions.class); + assertThat(options).isInstanceOf(FunctionCallingOptions.class); + + // up casting + FunctionCallingOptions functionCallingOptions = options; + ChatOptions chatOptions = options; + + assertThat(functionCallingOptions.getFunctions()).contains(func); + assertThat(chatOptions.getTopK()).isEqualTo(topK); + + // down casting + { + PortableFunctionCallingOptions tmp = (PortableFunctionCallingOptions) functionCallingOptions; + assertThat(tmp.getFunctions()).contains(func); + } + { + PortableFunctionCallingOptions tmp = (PortableFunctionCallingOptions) chatOptions; + assertThat(tmp.getTopK()).isEqualTo(topK); + } + + // build new Instance for modify + String newFunc = "newFunc"; + Float topP = 1.2f; + + FunctionCallingOptions newFunctionCallingOptions = FunctionCallingOptionsBuilder.builder(options) + .withFunction(newFunc) + .build(); + ChatOptions newChatOptions = ChatOptionsBuilder.builder(options).withTopP(topP).build(); + + assertThat(newFunctionCallingOptions.getFunctions()).contains(func, newFunc); + assertThat(newChatOptions.getTopK()).isEqualTo(topK); + assertThat(newChatOptions.getTopP()).isEqualTo(topP); + } + +} From 5ddf788a9e7091ad3224764ce8cebc5eaaca2909 Mon Sep 17 00:00:00 2001 From: youngpar Date: Fri, 8 Mar 2024 22:12:19 +0900 Subject: [PATCH 09/39] fix elements undermining immutability Adjusted sections where modifications to injected objects could potentially cause issues. --- .../ai/model/function/FunctionCallingOptionsBuilder.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java index 8aa08955ae6..4d6f3a78eca 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java @@ -30,9 +30,9 @@ */ public class FunctionCallingOptionsBuilder { - private List functionCallbacks = new ArrayList<>(); + private final List functionCallbacks = new ArrayList<>(); - private Set functions = new HashSet<>(); + private final Set functions = new HashSet<>(); private FunctionCallingOptionsBuilder() { } @@ -62,7 +62,7 @@ public FunctionCallingOptions build() { public FunctionCallingOptionsBuilder withFunctionCallbacks(final List functionCallbacks) { Assert.notNull(functionCallbacks, "FunctionCallback must not be null"); - this.functionCallbacks = functionCallbacks; + this.functionCallbacks.addAll(functionCallbacks); return this; } @@ -74,7 +74,7 @@ public FunctionCallingOptionsBuilder withFunctionCallback(final FunctionCallback public FunctionCallingOptionsBuilder withFunctions(final Set functions) { Assert.notNull(functions, "Functions must not be null"); - this.functions = functions; + this.functions.addAll(functions); return this; } From 231e9ccee19ff8b24cf1e0e685cb640fd6b8a486 Mon Sep 17 00:00:00 2001 From: youngpar Date: Fri, 8 Mar 2024 22:20:17 +0900 Subject: [PATCH 10/39] docs FunctionCallingOptionsBuilder.java Modified to facilitate documentation through the use of the @NonNull annotation. --- .../model/function/FunctionCallingOptionsBuilder.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java index 4d6f3a78eca..98f8b2de16b 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java @@ -19,6 +19,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.springframework.lang.NonNull; import org.springframework.util.Assert; /** @@ -60,25 +61,26 @@ public FunctionCallingOptions build() { return new FunctionCallingOptionsImpl(this.functionCallbacks, this.functions); } - public FunctionCallingOptionsBuilder withFunctionCallbacks(final List functionCallbacks) { + public FunctionCallingOptionsBuilder withFunctionCallbacks( + @NonNull final List functionCallbacks) { Assert.notNull(functionCallbacks, "FunctionCallback must not be null"); this.functionCallbacks.addAll(functionCallbacks); return this; } - public FunctionCallingOptionsBuilder withFunctionCallback(final FunctionCallback functionCallback) { + public FunctionCallingOptionsBuilder withFunctionCallback(@NonNull final FunctionCallback functionCallback) { Assert.notNull(functionCallback, "FunctionCallback must not be null"); this.functionCallbacks.add(functionCallback); return this; } - public FunctionCallingOptionsBuilder withFunctions(final Set functions) { + public FunctionCallingOptionsBuilder withFunctions(@NonNull final Set functions) { Assert.notNull(functions, "Functions must not be null"); this.functions.addAll(functions); return this; } - public FunctionCallingOptionsBuilder withFunction(final String function) { + public FunctionCallingOptionsBuilder withFunction(@NonNull final String function) { Assert.notNull(function, "Function must not be null"); this.functions.add(function); return this; From 38621b6559958e7e07f99d7594ac0d2eb46b2cfe Mon Sep 17 00:00:00 2001 From: sblashuk Date: Fri, 1 Mar 2024 17:33:00 +0100 Subject: [PATCH 11/39] Add Ollama enum with supported models and their ids - Add missing license header --- .../ai/ollama/api/OllamaModel.java | 92 +++++++++++++++++++ .../ai/ollama/api/OllamaOptions.java | 5 +- 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaModel.java diff --git a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaModel.java b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaModel.java new file mode 100644 index 00000000000..bdb7ee1b084 --- /dev/null +++ b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaModel.java @@ -0,0 +1,92 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.ollama.api; + +/** + * Helper class for common Ollama models. + * + * @author Siarhei Blashuk + * @since 0.8.1 + */ +public enum OllamaModel { + + /** + * Llama 2 is a collection of language models ranging from 7B to 70B parameters. + */ + LLAMA2("llama2"), + + /** + * The 7B parameters model + */ + MISTRAL("mistral"), + + /** + * The 2.7B uncensored Dolphin model + */ + DOLPHIN_PHI("dolphin-phi"), + + /** + * The Phi-2 2.7B language model + */ + PHI("phi"), + + /** + * A fine-tuned Mistral model + */ + NEURAL_CHAT("neural-chat"), + + /** + * Starling-7B model + */ + STARLING_LM("starling-lm"), + + /** + * Code Llama is based on Llama 2 model + */ + CODELLAMA("codellama"), + + /** + * Orca Mini is based on Llama and Llama 2 ranging from 3 billion parameters to 70 + * billion + */ + ORCA_MINI("orca-mini"), + + /** + * Llava is a Large Language and Vision Assistant model + */ + LLAVA("llava"), + + /** + * Gemma is a lightweight model with 2 billion and 7 billion + */ + GEMMA("gemma"), + + /** + * Uncensored Llama 2 model + */ + LLAMA2_UNCENSORED("llama2-uncensored"); + + private final String id; + + OllamaModel(String id) { + this.id = id; + } + + public String id() { + return this.id; + } + +} diff --git a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java index 786dfc4ba59..ac060d9f23e 100644 --- a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java +++ b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaOptions.java @@ -43,7 +43,7 @@ @JsonInclude(Include.NON_NULL) public class OllamaOptions implements ChatOptions, EmbeddingOptions { - public static final String DEFAULT_MODEL = "mistral"; + public static final String DEFAULT_MODEL = OllamaModel.MISTRAL.id(); // @formatter:off /** @@ -243,6 +243,9 @@ public class OllamaOptions implements ChatOptions, EmbeddingOptions { */ @JsonProperty("model") private String model; + /** + * @param model The ollama model names to use. See the {@link OllamaModel} for the common models. + */ public OllamaOptions withModel(String model) { this.model = model; return this; From f85facde0b863521b7cd68298fcd393ccb85aded Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 7 Mar 2024 15:42:00 +0100 Subject: [PATCH 12/39] Exclude .antlr and aot.factories from license headers check --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index 57a62fd27e6..1d3670df9ca 100644 --- a/pom.xml +++ b/pom.xml @@ -297,6 +297,8 @@ limitations under the License. + **/.antlr/** + **/aot.factories **/.sdkmanrc **/*.adoc **/*.puml From 927cf9f481f043ae4e7415109ff4737a2236a7bb Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Wed, 6 Mar 2024 11:53:24 +0100 Subject: [PATCH 13/39] Refactor and centralize Retry logic: - Establish a new "spring-ai-retry" project, implementing a default HTTP error handler, RetryTemplate, and handling both Transient and Non-Transient Exceptions. - Streamline existing clients (e.g., OpenAI and MistralAI) to utilize "spring-ai-retry." - Integrate retry auto-configuration with customizable properties, extending it to OpenAI and MistralAI Auto-Configs. - Allow configuration of RetryTemplate and ResponseErrorHandler for various clients, including OpenAIChatClient, OpenAiEmbeddingClient, OpenAiAudioTranscriptionCline, OpenAiImageClient, MistralAiChatClient, and MistralAiEmbeddingClient. - Add tests for default RestTemplate and ResponseErrorHandler configurations in OpenAI and MistralAI. - Introduce new retry auto-config properties: "onClientErrors" and "onHttpCodes". - Implement tests for retry auto-config properties. - Generate missing license headers. --- models/spring-ai-mistral-ai/pom.xml | 21 +- .../ai/mistralai/MistralAiChatClient.java | 57 ++-- .../mistralai/MistralAiEmbeddingClient.java | 39 ++- .../ai/mistralai/api/MistralAiApi.java | 67 +---- ...> MistralAiChatCompletionRequestTest.java} | 2 +- ...ddingIT.java => MistralAiEmbeddingIT.java} | 2 +- .../ai/mistralai/MistralAiRetryTests.java | 192 +++++++++++++ models/spring-ai-openai/pom.xml | 11 +- .../OpenAiAudioTranscriptionClient.java | 18 +- .../ai/openai/OpenAiChatClient.java | 51 ++-- .../ai/openai/OpenAiEmbeddingClient.java | 26 +- .../ai/openai/OpenAiImageClient.java | 34 +-- .../ai/openai/api/ApiUtils.java | 37 +++ .../ai/openai/api/OpenAiApi.java | 30 +- .../ai/openai/api/OpenAiAudioApi.java | 11 +- .../ai/openai/api/OpenAiImageApi.java | 23 +- .../ai/openai/ChatCompletionRequestTests.java | 2 +- .../ai/openai/{chat => }/api/OpenAiApiIT.java | 2 +- .../api/RestClientBuilderTests.java | 3 +- .../api/tool/MockWeatherService.java | 2 +- .../api/tool/OpenAiApiToolFunctionCallIT.java | 3 +- ...ithTranscriptionResponseMetadataTests.java | 3 +- .../ai/openai/chat/OpenAiChatClientIT.java | 2 +- .../ai/openai/chat/OpenAiRetryTests.java | 272 ++++++++++++++++++ models/spring-ai-stability-ai/pom.xml | 7 +- .../stabilityai/StabilityAiImageClient.java | 30 +- .../StabilityAiImageGenerationMetadata.java | 11 +- .../ai/stabilityai/StyleEnum.java | 22 +- .../ai/stabilityai/api/StabilityAiApi.java | 37 +-- pom.xml | 2 + spring-ai-bom/pom.xml | 18 +- .../pages/api/clients/image/openai-image.adoc | 15 + .../pages/api/clients/mistralai-chat.adoc | 14 + .../ROOT/pages/api/clients/openai-chat.adoc | 14 + .../api/embeddings/openai-embeddings.adoc | 12 + spring-ai-retry/pom.xml | 50 ++++ .../ai/retry/NonTransientAiException.java | 36 +++ .../springframework/ai/retry/RetryUtils.java | 49 +++- .../ai/retry/TransientAiException.java | 36 +++ .../mistralai/MistralAiAutoConfiguration.java | 25 +- .../openai/OpenAiAutoConfiguration.java | 38 ++- .../retry/SpringAiRetryAutoConfiguration.java | 108 +++++++ .../retry/SpringAiRetryProperties.java | 127 ++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 2 +- .../MistralAiAutoConfigurationIT.java | 4 +- .../mistralai/MistralAiPropertiesTests.java | 14 +- .../mistralai/tool/PaymentStatusBeanIT.java | 4 +- .../tool/PaymentStatusBeanOpenAiIT.java | 4 +- .../mistralai/tool/PaymentStatusPromptIT.java | 4 +- .../tool/WeatherServicePromptIT.java | 4 +- .../openai/OpenAiAutoConfigurationIT.java | 4 +- .../openai/OpenAiPropertiesTests.java | 64 +++-- .../tool/FunctionCallbackInPromptIT.java | 4 +- ...nctionCallbackWithPlainFunctionBeanIT.java | 4 +- .../tool/FunctionCallbackWrapperIT.java | 4 +- .../SpringAiRetryAutoConfigurationIT.java | 44 +++ .../retry/SpringAiRetryPropertiesTests.java | 75 +++++ 57 files changed, 1411 insertions(+), 385 deletions(-) rename models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/{MistralChatCompletionRequestTest.java => MistralAiChatCompletionRequestTest.java} (97%) rename models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/{MistralEmbeddingIT.java => MistralAiEmbeddingIT.java} (98%) create mode 100644 models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiRetryTests.java create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/ApiUtils.java rename models/spring-ai-openai/src/test/java/org/springframework/ai/openai/{chat => }/api/OpenAiApiIT.java (98%) rename models/spring-ai-openai/src/test/java/org/springframework/ai/openai/{chat => }/api/RestClientBuilderTests.java (96%) rename models/spring-ai-openai/src/test/java/org/springframework/ai/openai/{chat => }/api/tool/MockWeatherService.java (97%) rename models/spring-ai-openai/src/test/java/org/springframework/ai/openai/{chat => }/api/tool/OpenAiApiToolFunctionCallIT.java (99%) create mode 100644 models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiRetryTests.java create mode 100644 spring-ai-retry/pom.xml create mode 100644 spring-ai-retry/src/main/java/org/springframework/ai/retry/NonTransientAiException.java rename models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/ApiUtils.java => spring-ai-retry/src/main/java/org/springframework/ai/retry/RetryUtils.java (50%) create mode 100644 spring-ai-retry/src/main/java/org/springframework/ai/retry/TransientAiException.java create mode 100644 spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java create mode 100644 spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java create mode 100644 spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfigurationIT.java create mode 100644 spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java diff --git a/models/spring-ai-mistral-ai/pom.xml b/models/spring-ai-mistral-ai/pom.xml index a613e4f6a1c..07fd0e087ef 100644 --- a/models/spring-ai-mistral-ai/pom.xml +++ b/models/spring-ai-mistral-ai/pom.xml @@ -29,24 +29,13 @@ ${project.parent.version} - - org.springframework - spring-web - ${spring-framework.version} - - - - org.springframework.retry - spring-retry - 2.0.4 - - + + org.springframework.ai + spring-ai-retry + ${project.parent.version} + - - org.springframework - spring-webflux - org.springframework spring-context-support diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java index 73bffce3e49..ee212817d35 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatClient.java @@ -15,7 +15,6 @@ */ package org.springframework.ai.mistralai; -import java.time.Duration; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -41,10 +40,8 @@ import org.springframework.ai.model.ModelOptionsUtils; import org.springframework.ai.model.function.AbstractFunctionCallSupport; import org.springframework.ai.model.function.FunctionCallbackContext; +import org.springframework.ai.retry.RetryUtils; import org.springframework.http.ResponseEntity; -import org.springframework.retry.RetryCallback; -import org.springframework.retry.RetryContext; -import org.springframework.retry.RetryListener; import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; @@ -70,17 +67,7 @@ public class MistralAiChatClient extends */ private final MistralAiApi mistralAiApi; - private final RetryTemplate retryTemplate = RetryTemplate.builder() - .maxAttempts(10) - .retryOn(MistralAiApi.MistralAiApiException.class) - .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) - .withListener(new RetryListener() { - public void onError(RetryContext context, - RetryCallback callback, Throwable throwable) { - log.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); - }; - }) - .build(); + private final RetryTemplate retryTemplate; public MistralAiChatClient(MistralAiApi mistralAiApi) { this(mistralAiApi, @@ -93,46 +80,50 @@ public MistralAiChatClient(MistralAiApi mistralAiApi) { } public MistralAiChatClient(MistralAiApi mistralAiApi, MistralAiChatOptions options) { - this(mistralAiApi, options, null); + this(mistralAiApi, options, null, RetryUtils.DEFAULT_RETRY_TEMPLATE); } public MistralAiChatClient(MistralAiApi mistralAiApi, MistralAiChatOptions options, - FunctionCallbackContext functionCallbackContext) { + FunctionCallbackContext functionCallbackContext, RetryTemplate retryTemplate) { super(functionCallbackContext); Assert.notNull(mistralAiApi, "MistralAiApi must not be null"); Assert.notNull(options, "Options must not be null"); + Assert.notNull(retryTemplate, "RetryTemplate must not be null"); this.mistralAiApi = mistralAiApi; this.defaultOptions = options; + this.retryTemplate = retryTemplate; } @Override public ChatResponse call(Prompt prompt) { - // return retryTemplate.execute(ctx -> { var request = createRequest(prompt, false); - // var completionEntity = this.mistralAiApi.chatCompletionEntity(request); - ResponseEntity completionEntity = this.callWithFunctionSupport(request); + return retryTemplate.execute(ctx -> { - var chatCompletion = completionEntity.getBody(); - if (chatCompletion == null) { - log.warn("No chat completion returned for prompt: {}", prompt); - return new ChatResponse(List.of()); - } + ResponseEntity completionEntity = this.callWithFunctionSupport(request); - List generations = chatCompletion.choices() - .stream() - .map(choice -> new Generation(choice.message().content(), Map.of("role", choice.message().role().name())) - .withGenerationMetadata(ChatGenerationMetadata.from(choice.finishReason().name(), null))) - .toList(); + var chatCompletion = completionEntity.getBody(); + if (chatCompletion == null) { + log.warn("No chat completion returned for prompt: {}", prompt); + return new ChatResponse(List.of()); + } + + List generations = chatCompletion.choices() + .stream() + .map(choice -> new Generation(choice.message().content(), + Map.of("role", choice.message().role().name())) + .withGenerationMetadata(ChatGenerationMetadata.from(choice.finishReason().name(), null))) + .toList(); - return new ChatResponse(generations); - // }); + return new ChatResponse(generations); + }); } @Override public Flux stream(Prompt prompt) { + var request = createRequest(prompt, true); + return retryTemplate.execute(ctx -> { - var request = createRequest(prompt, true); var completionChunks = this.mistralAiApi.chatCompletionStream(request); diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingClient.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingClient.java index 30e17b36f38..e42908c348d 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingClient.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiEmbeddingClient.java @@ -15,23 +15,25 @@ */ package org.springframework.ai.mistralai; +import java.util.List; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.springframework.ai.document.Document; import org.springframework.ai.document.MetadataMode; -import org.springframework.ai.embedding.*; +import org.springframework.ai.embedding.AbstractEmbeddingClient; +import org.springframework.ai.embedding.Embedding; +import org.springframework.ai.embedding.EmbeddingOptions; +import org.springframework.ai.embedding.EmbeddingRequest; +import org.springframework.ai.embedding.EmbeddingResponse; +import org.springframework.ai.embedding.EmbeddingResponseMetadata; import org.springframework.ai.mistralai.api.MistralAiApi; -import org.springframework.ai.mistralai.api.MistralAiApi.MistralAiApiException; import org.springframework.ai.model.ModelOptionsUtils; -import org.springframework.retry.RetryCallback; -import org.springframework.retry.RetryContext; -import org.springframework.retry.RetryListener; +import org.springframework.ai.retry.RetryUtils; import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; -import java.time.Duration; -import java.util.List; - /** * @author Ricken Bazolo * @since 0.8.1 @@ -46,17 +48,7 @@ public class MistralAiEmbeddingClient extends AbstractEmbeddingClient { private final MistralAiApi mistralAiApi; - private final RetryTemplate retryTemplate = RetryTemplate.builder() - .maxAttempts(10) - .retryOn(MistralAiApiException.class) - .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) - .withListener(new RetryListener() { - public void onError(RetryContext context, - RetryCallback callback, Throwable throwable) { - log.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); - }; - }) - .build(); + private final RetryTemplate retryTemplate; public MistralAiEmbeddingClient(MistralAiApi mistralAiApi) { this(mistralAiApi, MetadataMode.EMBED); @@ -64,22 +56,25 @@ public MistralAiEmbeddingClient(MistralAiApi mistralAiApi) { public MistralAiEmbeddingClient(MistralAiApi mistralAiApi, MetadataMode metadataMode) { this(mistralAiApi, metadataMode, - MistralAiEmbeddingOptions.builder().withModel(MistralAiApi.EmbeddingModel.EMBED.getValue()).build()); + MistralAiEmbeddingOptions.builder().withModel(MistralAiApi.EmbeddingModel.EMBED.getValue()).build(), + RetryUtils.DEFAULT_RETRY_TEMPLATE); } public MistralAiEmbeddingClient(MistralAiApi mistralAiApi, MistralAiEmbeddingOptions options) { - this(mistralAiApi, MetadataMode.EMBED, options); + this(mistralAiApi, MetadataMode.EMBED, options, RetryUtils.DEFAULT_RETRY_TEMPLATE); } public MistralAiEmbeddingClient(MistralAiApi mistralAiApi, MetadataMode metadataMode, - MistralAiEmbeddingOptions options) { + MistralAiEmbeddingOptions options, RetryTemplate retryTemplate) { Assert.notNull(mistralAiApi, "MistralAiApi must not be null"); Assert.notNull(metadataMode, "metadataMode must not be null"); Assert.notNull(options, "options must not be null"); + Assert.notNull(retryTemplate, "retryTemplate must not be null"); this.mistralAiApi = mistralAiApi; this.metadataMode = metadataMode; this.defaultOptions = options; + this.retryTemplate = retryTemplate; } @Override diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java index f227e5f521a..d2bd75c4a7c 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/api/MistralAiApi.java @@ -15,8 +15,6 @@ */ package org.springframework.ai.mistralai.api; -import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Map; import java.util.function.Consumer; @@ -25,22 +23,18 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import org.springframework.ai.model.ModelOptionsUtils; +import org.springframework.ai.retry.RetryUtils; import org.springframework.boot.context.properties.bind.ConstructorBinding; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.http.client.ClientHttpResponse; -import org.springframework.lang.NonNull; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; -import org.springframework.util.StreamUtils; import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; import org.springframework.web.reactive.function.client.WebClient; @@ -70,8 +64,6 @@ public class MistralAiApi { private WebClient webClient; - private final ObjectMapper objectMapper; - /** * Create a new client api with DEFAULT_BASE_URL * @param mistralAiApiKey Mistral api Key. @@ -86,7 +78,7 @@ public MistralAiApi(String mistralAiApiKey) { * @param mistralAiApiKey Mistral api Key. */ public MistralAiApi(String baseUrl, String mistralAiApiKey) { - this(baseUrl, mistralAiApiKey, RestClient.builder()); + this(baseUrl, mistralAiApiKey, RestClient.builder(), RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER); } /** @@ -94,67 +86,22 @@ public MistralAiApi(String baseUrl, String mistralAiApiKey) { * @param baseUrl api base URL. * @param mistralAiApiKey Mistral api Key. * @param restClientBuilder RestClient builder. + * @param responseErrorHandler Response error handler. */ - public MistralAiApi(String baseUrl, String mistralAiApiKey, RestClient.Builder restClientBuilder) { - - this.objectMapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + public MistralAiApi(String baseUrl, String mistralAiApiKey, RestClient.Builder restClientBuilder, + ResponseErrorHandler responseErrorHandler) { Consumer jsonContentHeaders = headers -> { headers.setBearerAuth(mistralAiApiKey); headers.setContentType(MediaType.APPLICATION_JSON); }; - var responseErrorHandler = new ResponseErrorHandler() { - - @Override - public boolean hasError(@NonNull ClientHttpResponse response) throws IOException { - return response.getStatusCode().isError(); - } - - @Override - public void handleError(@NonNull ClientHttpResponse response) throws IOException { - if (response.getStatusCode().isError()) { - String error = StreamUtils.copyToString(response.getBody(), StandardCharsets.UTF_8); - String message = String.format("%s - %s", response.getStatusCode().value(), error); - if (response.getStatusCode().is4xxClientError()) { - throw new MistralAiApiClientErrorException(message); - } - throw new MistralAiApiException(message); - } - } - }; - this.restClient = restClientBuilder.baseUrl(baseUrl) .defaultHeaders(jsonContentHeaders) .defaultStatusHandler(responseErrorHandler) .build(); - this.webClient = WebClient.builder().baseUrl(baseUrl).defaultHeaders(jsonContentHeaders).build(); - } - - public static class MistralAiApiException extends RuntimeException { - - public MistralAiApiException(String message) { - super(message); - } - - public MistralAiApiException(String message, Throwable t) { - super(message, t); - } - - } - - /** - * Thrown on 4xx client errors, such as 401 - Incorrect API key provided, 401 - You - * must be a member of an organization to use the API, 429 - Rate limit reached for - * requests, 429 - You exceeded your current quota , please check your plan and - * billing details. - */ - public static class MistralAiApiClientErrorException extends RuntimeException { - - public MistralAiApiClientErrorException(String message) { - super(message); - } + this.webClient = WebClient.builder().baseUrl(baseUrl).defaultHeaders(jsonContentHeaders).build(); } /** @@ -594,7 +541,7 @@ public enum ChatCompletionFinishReason { // anticipation of future changes. Based on: // https://github.com/mistralai/client-python/blob/main/src/mistralai/models/chat_completion.py @JsonProperty("error") ERROR, - + @JsonProperty("tool_calls") TOOL_CALLS // @formatter:on diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralChatCompletionRequestTest.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatCompletionRequestTest.java similarity index 97% rename from models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralChatCompletionRequestTest.java rename to models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatCompletionRequestTest.java index ae63e5158f7..57135164bc3 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralChatCompletionRequestTest.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiChatCompletionRequestTest.java @@ -30,7 +30,7 @@ */ @SpringBootTest @EnabledIfEnvironmentVariable(named = "MISTRAL_AI_API_KEY", matches = ".+") -public class MistralChatCompletionRequestTest { +public class MistralAiChatCompletionRequestTest { MistralAiChatClient chatClient = new MistralAiChatClient(new MistralAiApi("test")); diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralEmbeddingIT.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiEmbeddingIT.java similarity index 98% rename from models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralEmbeddingIT.java rename to models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiEmbeddingIT.java index fb934520ef1..ba472a0976e 100644 --- a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralEmbeddingIT.java +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiEmbeddingIT.java @@ -28,7 +28,7 @@ @SpringBootTest @EnabledIfEnvironmentVariable(named = "MISTRAL_AI_API_KEY", matches = ".+") -class MistralEmbeddingIT { +class MistralAiEmbeddingIT { @Autowired private MistralAiEmbeddingClient mistralAiEmbeddingClient; diff --git a/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiRetryTests.java b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiRetryTests.java new file mode 100644 index 00000000000..549d788eade --- /dev/null +++ b/models/spring-ai-mistral-ai/src/test/java/org/springframework/ai/mistralai/MistralAiRetryTests.java @@ -0,0 +1,192 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.mistralai; + +import java.util.List; +import java.util.Optional; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import reactor.core.publisher.Flux; + +import org.springframework.ai.chat.prompt.Prompt; +import org.springframework.ai.document.MetadataMode; +import org.springframework.ai.mistralai.api.MistralAiApi; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletion; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionChunk; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionFinishReason; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionMessage; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionMessage.Role; +import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionRequest; +import org.springframework.ai.mistralai.api.MistralAiApi.Embedding; +import org.springframework.ai.mistralai.api.MistralAiApi.EmbeddingList; +import org.springframework.ai.mistralai.api.MistralAiApi.EmbeddingRequest; +import org.springframework.ai.retry.RetryUtils; +import org.springframework.ai.retry.TransientAiException; +import org.springframework.http.ResponseEntity; +import org.springframework.retry.RetryCallback; +import org.springframework.retry.RetryContext; +import org.springframework.retry.RetryListener; +import org.springframework.retry.support.RetryTemplate; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.isA; +import static org.mockito.Mockito.when; + +/** + * @author Christian Tzolov + */ +@SuppressWarnings("unchecked") +@ExtendWith(MockitoExtension.class) +public class MistralAiRetryTests { + + private class TestRetryListener implements RetryListener { + + int onErrorRetryCount = 0; + + int onSuccessRetryCount = 0; + + @Override + public void onSuccess(RetryContext context, RetryCallback callback, T result) { + onSuccessRetryCount = context.getRetryCount(); + } + + @Override + public void onError(RetryContext context, RetryCallback callback, + Throwable throwable) { + onErrorRetryCount = context.getRetryCount(); + } + + } + + private TestRetryListener retryListener; + + private RetryTemplate retryTemplate; + + private @Mock MistralAiApi mistralAiApi; + + private MistralAiChatClient chatClient; + + private MistralAiEmbeddingClient embeddingClient; + + @BeforeEach + public void beforeEach() { + retryTemplate = RetryUtils.DEFAULT_RETRY_TEMPLATE; + retryListener = new TestRetryListener(); + retryTemplate.registerListener(retryListener); + + chatClient = new MistralAiChatClient(mistralAiApi, + MistralAiChatOptions.builder() + .withTemperature(0.7f) + .withTopP(1f) + .withSafePrompt(false) + .withModel(MistralAiApi.ChatModel.TINY.getValue()) + .build(), + null, retryTemplate); + embeddingClient = new MistralAiEmbeddingClient(mistralAiApi, MetadataMode.EMBED, + MistralAiEmbeddingOptions.builder().withModel(MistralAiApi.EmbeddingModel.EMBED.getValue()).build(), + retryTemplate); + } + + @Test + public void mistralAiChatTransientError() { + + var choice = new ChatCompletion.Choice(0, new ChatCompletionMessage("Response", Role.ASSISTANT), + ChatCompletionFinishReason.STOP); + ChatCompletion expectedChatCompletion = new ChatCompletion("id", "chat.completion", 789l, "model", + List.of(choice), new MistralAiApi.Usage(10, 10, 10)); + + when(mistralAiApi.chatCompletionEntity(isA(ChatCompletionRequest.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(ResponseEntity.of(Optional.of(expectedChatCompletion))); + + var result = chatClient.call(new Prompt("text")); + + assertThat(result).isNotNull(); + assertThat(result.getResult().getOutput().getContent()).isSameAs("Response"); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void mistralAiChatNonTransientError() { + when(mistralAiApi.chatCompletionEntity(isA(ChatCompletionRequest.class))) + .thenThrow(new RuntimeException("Non Transient Error")); + assertThrows(RuntimeException.class, () -> chatClient.call(new Prompt("text"))); + } + + @Test + public void mistralAiChatStreamTransientError() { + + var choice = new ChatCompletionChunk.ChunkChoice(0, new ChatCompletionMessage("Response", Role.ASSISTANT), + ChatCompletionFinishReason.STOP); + ChatCompletionChunk expectedChatCompletion = new ChatCompletionChunk("id", "chat.completion.chunk", 789l, + "model", List.of(choice)); + + when(mistralAiApi.chatCompletionStream(isA(ChatCompletionRequest.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(Flux.just(expectedChatCompletion)); + + var result = chatClient.stream(new Prompt("text")); + + assertThat(result).isNotNull(); + assertThat(result.collectList().block().get(0).getResult().getOutput().getContent()).isSameAs("Response"); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void mistralAiChatStreamNonTransientError() { + when(mistralAiApi.chatCompletionStream(isA(ChatCompletionRequest.class))) + .thenThrow(new RuntimeException("Non Transient Error")); + assertThrows(RuntimeException.class, () -> chatClient.stream(new Prompt("text"))); + } + + @Test + public void mistralAiEmbeddingTransientError() { + + EmbeddingList expectedEmbeddings = new EmbeddingList<>("list", + List.of(new Embedding(0, List.of(9.9, 8.8))), "model", new MistralAiApi.Usage(10, 10, 10)); + + when(mistralAiApi.embeddings(isA(EmbeddingRequest.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(ResponseEntity.of(Optional.of(expectedEmbeddings))); + + var result = embeddingClient + .call(new org.springframework.ai.embedding.EmbeddingRequest(List.of("text1", "text2"), null)); + + assertThat(result).isNotNull(); + assertThat(result.getResult().getOutput()).isEqualTo(List.of(9.9, 8.8)); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void mistralAiEmbeddingNonTransientError() { + when(mistralAiApi.embeddings(isA(EmbeddingRequest.class))) + .thenThrow(new RuntimeException("Non Transient Error")); + assertThrows(RuntimeException.class, () -> embeddingClient + .call(new org.springframework.ai.embedding.EmbeddingRequest(List.of("text1", "text2"), null))); + } + +} diff --git a/models/spring-ai-openai/pom.xml b/models/spring-ai-openai/pom.xml index 7fbfce8ea56..10be9e4c14f 100644 --- a/models/spring-ai-openai/pom.xml +++ b/models/spring-ai-openai/pom.xml @@ -29,9 +29,9 @@ - org.springframework.retry - spring-retry - 2.0.4 + org.springframework.ai + spring-ai-retry + ${project.parent.version} @@ -57,11 +57,6 @@ ${victools.version} - - org.springframework - spring-webflux - - org.springframework spring-context-support diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java index 68e24808de4..30982ec12af 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java @@ -31,8 +31,6 @@ package org.springframework.ai.openai; -import java.time.Duration; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,12 +38,12 @@ import org.springframework.ai.model.ModelClient; import org.springframework.ai.openai.api.OpenAiAudioApi; import org.springframework.ai.openai.api.OpenAiAudioApi.StructuredResponse; -import org.springframework.ai.openai.api.common.OpenAiApiException; import org.springframework.ai.openai.audio.transcription.AudioTranscription; import org.springframework.ai.openai.audio.transcription.AudioTranscriptionPrompt; import org.springframework.ai.openai.audio.transcription.AudioTranscriptionResponse; import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionResponseMetadata; import org.springframework.ai.openai.metadata.support.OpenAiResponseHeaderExtractor; +import org.springframework.ai.retry.RetryUtils; import org.springframework.core.io.Resource; import org.springframework.http.ResponseEntity; import org.springframework.retry.support.RetryTemplate; @@ -66,11 +64,7 @@ public class OpenAiAudioTranscriptionClient private final OpenAiAudioTranscriptionOptions defaultOptions; - public final RetryTemplate retryTemplate = RetryTemplate.builder() - .maxAttempts(10) - .retryOn(OpenAiApiException.class) - .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) - .build(); + public final RetryTemplate retryTemplate; private final OpenAiAudioApi audioApi; @@ -80,14 +74,18 @@ public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi) { .withModel(OpenAiAudioApi.WhisperModel.WHISPER_1.getValue()) .withResponseFormat(OpenAiAudioApi.TranscriptResponseFormat.JSON) .withTemperature(0.7f) - .build()); + .build(), + RetryUtils.DEFAULT_RETRY_TEMPLATE); } - public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi, OpenAiAudioTranscriptionOptions options) { + public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi, OpenAiAudioTranscriptionOptions options, + RetryTemplate retryTemplate) { Assert.notNull(audioApi, "OpenAiAudioApi must not be null"); Assert.notNull(options, "OpenAiTranscriptionOptions must not be null"); + Assert.notNull(retryTemplate, "RetryTemplate must not be null"); this.audioApi = audioApi; this.defaultOptions = options; + this.retryTemplate = retryTemplate; } public String call(Resource audioResource) { diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java index bd977a58d05..14ef4e7833a 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java @@ -15,7 +15,6 @@ */ package org.springframework.ai.openai; -import java.time.Duration; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -43,14 +42,11 @@ import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage.Role; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage.ToolCall; -import org.springframework.ai.openai.api.common.OpenAiApiException; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest; import org.springframework.ai.openai.metadata.OpenAiChatResponseMetadata; import org.springframework.ai.openai.metadata.support.OpenAiResponseHeaderExtractor; +import org.springframework.ai.retry.RetryUtils; import org.springframework.http.ResponseEntity; -import org.springframework.retry.RetryCallback; -import org.springframework.retry.RetryContext; -import org.springframework.retry.RetryListener; import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; @@ -73,7 +69,7 @@ public class OpenAiChatClient extends AbstractFunctionCallSupport> implements ChatClient, StreamingChatClient { - private final Logger logger = LoggerFactory.getLogger(getClass()); + private static final Logger logger = LoggerFactory.getLogger(OpenAiChatClient.class); /** * The default options used for the chat completion requests. @@ -83,48 +79,59 @@ public class OpenAiChatClient extends /** * The retry template used to retry the OpenAI API calls. */ - public final RetryTemplate retryTemplate = RetryTemplate.builder() - .maxAttempts(10) - .retryOn(OpenAiApiException.class) - .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) - .withListener(new RetryListener() { - @Override - public void onError(RetryContext context, - RetryCallback callback, Throwable throwable) { - logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); - }; - }) - .build(); + public final RetryTemplate retryTemplate; /** * Low-level access to the OpenAI API. */ private final OpenAiApi openAiApi; + /** + * Creates an instance of the OpenAiChatClient. + * @param openAiApi The OpenAiApi instance to be used for interacting with the OpenAI + * Chat API. + * @throws IllegalArgumentException if openAiApi is null + */ public OpenAiChatClient(OpenAiApi openAiApi) { this(openAiApi, OpenAiChatOptions.builder().withModel(OpenAiApi.DEFAULT_CHAT_MODEL).withTemperature(0.7f).build()); } + /** + * Initializes an instance of the OpenAiChatClient. + * @param openAiApi The OpenAiApi instance to be used for interacting with the OpenAI + * Chat API. + * @param options The OpenAiChatOptions to configure the chat client. + */ public OpenAiChatClient(OpenAiApi openAiApi, OpenAiChatOptions options) { - this(openAiApi, options, null); + this(openAiApi, options, null, RetryUtils.DEFAULT_RETRY_TEMPLATE); } + /** + * Initializes a new instance of the OpenAiChatClient. + * @param openAiApi The OpenAiApi instance to be used for interacting with the OpenAI + * Chat API. + * @param options The OpenAiChatOptions to configure the chat client. + * @param functionCallbackContext The function callback context. + * @param retryTemplate The retry template. + */ public OpenAiChatClient(OpenAiApi openAiApi, OpenAiChatOptions options, - FunctionCallbackContext functionCallbackContext) { + FunctionCallbackContext functionCallbackContext, RetryTemplate retryTemplate) { super(functionCallbackContext); Assert.notNull(openAiApi, "OpenAiApi must not be null"); Assert.notNull(options, "Options must not be null"); + Assert.notNull(retryTemplate, "RetryTemplate must not be null"); this.openAiApi = openAiApi; this.defaultOptions = options; + this.retryTemplate = retryTemplate; } @Override public ChatResponse call(Prompt prompt) { - return this.retryTemplate.execute(ctx -> { + ChatCompletionRequest request = createRequest(prompt, false); - ChatCompletionRequest request = createRequest(prompt, false); + return this.retryTemplate.execute(ctx -> { ResponseEntity completionEntity = this.callWithFunctionSupport(request); diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java index 839828f9541..f5d5730d750 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java @@ -15,7 +15,6 @@ */ package org.springframework.ai.openai; -import java.time.Duration; import java.util.List; import org.slf4j.Logger; @@ -33,10 +32,7 @@ import org.springframework.ai.openai.api.OpenAiApi; import org.springframework.ai.openai.api.OpenAiApi.EmbeddingList; import org.springframework.ai.openai.api.OpenAiApi.Usage; -import org.springframework.ai.openai.api.common.OpenAiApiException; -import org.springframework.retry.RetryCallback; -import org.springframework.retry.RetryContext; -import org.springframework.retry.RetryListener; +import org.springframework.ai.retry.RetryUtils; import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; @@ -51,17 +47,7 @@ public class OpenAiEmbeddingClient extends AbstractEmbeddingClient { private final OpenAiEmbeddingOptions defaultOptions; - private final RetryTemplate retryTemplate = RetryTemplate.builder() - .maxAttempts(10) - .retryOn(OpenAiApiException.class) - .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) - .withListener(new RetryListener() { - public void onError(RetryContext context, - RetryCallback callback, Throwable throwable) { - logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); - }; - }) - .build(); + private final RetryTemplate retryTemplate; private final OpenAiApi openAiApi; @@ -73,17 +59,21 @@ public OpenAiEmbeddingClient(OpenAiApi openAiApi) { public OpenAiEmbeddingClient(OpenAiApi openAiApi, MetadataMode metadataMode) { this(openAiApi, metadataMode, - OpenAiEmbeddingOptions.builder().withModel(OpenAiApi.DEFAULT_EMBEDDING_MODEL).build()); + OpenAiEmbeddingOptions.builder().withModel(OpenAiApi.DEFAULT_EMBEDDING_MODEL).build(), + RetryUtils.DEFAULT_RETRY_TEMPLATE); } - public OpenAiEmbeddingClient(OpenAiApi openAiApi, MetadataMode metadataMode, OpenAiEmbeddingOptions options) { + public OpenAiEmbeddingClient(OpenAiApi openAiApi, MetadataMode metadataMode, OpenAiEmbeddingOptions options, + RetryTemplate retryTemplate) { Assert.notNull(openAiApi, "OpenAiService must not be null"); Assert.notNull(metadataMode, "metadataMode must not be null"); Assert.notNull(options, "options must not be null"); + Assert.notNull(retryTemplate, "retryTemplate must not be null"); this.openAiApi = openAiApi; this.metadataMode = metadataMode; this.defaultOptions = options; + this.retryTemplate = retryTemplate; } @Override diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java index e9020302e38..1bc78d4c23d 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java @@ -15,7 +15,6 @@ */ package org.springframework.ai.openai; -import java.time.Duration; import java.util.List; import org.slf4j.Logger; @@ -30,13 +29,10 @@ import org.springframework.ai.image.ImageResponseMetadata; import org.springframework.ai.model.ModelOptionsUtils; import org.springframework.ai.openai.api.OpenAiImageApi; -import org.springframework.ai.openai.api.common.OpenAiApiException; import org.springframework.ai.openai.metadata.OpenAiImageGenerationMetadata; import org.springframework.ai.openai.metadata.OpenAiImageResponseMetadata; +import org.springframework.ai.retry.RetryUtils; import org.springframework.http.ResponseEntity; -import org.springframework.retry.RetryCallback; -import org.springframework.retry.RetryContext; -import org.springframework.retry.RetryListener; import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; @@ -50,38 +46,32 @@ */ public class OpenAiImageClient implements ImageClient { - private final Logger logger = LoggerFactory.getLogger(getClass()); + private final static Logger logger = LoggerFactory.getLogger(OpenAiImageClient.class); private OpenAiImageOptions defaultOptions; private final OpenAiImageApi openAiImageApi; - public final RetryTemplate retryTemplate = RetryTemplate.builder() - .maxAttempts(10) - .retryOn(OpenAiApiException.class) - .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) - .withListener(new RetryListener() { - public void onError(RetryContext context, - RetryCallback callback, Throwable throwable) { - logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); - }; - }) - .build(); + public final RetryTemplate retryTemplate; public OpenAiImageClient(OpenAiImageApi openAiImageApi) { + this(openAiImageApi, OpenAiImageOptions.builder().build(), RetryUtils.DEFAULT_RETRY_TEMPLATE); + } + + public OpenAiImageClient(OpenAiImageApi openAiImageApi, OpenAiImageOptions defaultOptions, + RetryTemplate retryTemplate) { Assert.notNull(openAiImageApi, "OpenAiImageApi must not be null"); + Assert.notNull(defaultOptions, "defaultOptions must not be null"); + Assert.notNull(retryTemplate, "retryTemplate must not be null"); this.openAiImageApi = openAiImageApi; + this.defaultOptions = defaultOptions; + this.retryTemplate = retryTemplate; } public OpenAiImageOptions getDefaultOptions() { return this.defaultOptions; } - public OpenAiImageClient withDefaultOptions(OpenAiImageOptions defaultOptions) { - this.defaultOptions = defaultOptions; - return this; - } - @Override public ImageResponse call(ImagePrompt imagePrompt) { return this.retryTemplate.execute(ctx -> { diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/ApiUtils.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/ApiUtils.java new file mode 100644 index 00000000000..36ad4b8f758 --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/ApiUtils.java @@ -0,0 +1,37 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.openai.api; + +import java.util.function.Consumer; + +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; + +/** + * @author Christian Tzolov + */ +public class ApiUtils { + + public static final String DEFAULT_BASE_URL = "https://api.openai.com"; + + public static Consumer getJsonContentHeaders(String apiKey) { + return (headers) -> { + headers.setBearerAuth(apiKey); + headers.setContentType(MediaType.APPLICATION_JSON); + }; + }; + +} 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 647f06c8d1b..795014139cd 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 @@ -26,14 +26,13 @@ import reactor.core.publisher.Mono; import org.springframework.ai.model.ModelOptionsUtils; -import org.springframework.ai.openai.api.common.ApiUtils; +import org.springframework.ai.retry.RetryUtils; import org.springframework.boot.context.properties.bind.ConstructorBinding; import org.springframework.core.ParameterizedTypeReference; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; -import org.springframework.util.MultiValueMap; +import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; import org.springframework.web.reactive.function.client.WebClient; @@ -53,8 +52,6 @@ public class OpenAiApi { private final RestClient restClient; - private final RestClient multipartRestClient; - private final WebClient webClient; /** @@ -84,20 +81,23 @@ public OpenAiApi(String baseUrl, String openAiToken) { * @param restClientBuilder RestClient builder. */ public OpenAiApi(String baseUrl, String openAiToken, RestClient.Builder restClientBuilder) { + this(baseUrl, openAiToken, restClientBuilder, RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER); + } + + /** + * Create a new chat completion api. + * + * @param baseUrl api base URL. + * @param openAiToken OpenAI apiKey. + * @param restClientBuilder RestClient builder. + * @param responseErrorHandler Response error handler. + */ + public OpenAiApi(String baseUrl, String openAiToken, RestClient.Builder restClientBuilder, ResponseErrorHandler responseErrorHandler) { this.restClient = restClientBuilder .baseUrl(baseUrl) .defaultHeaders(ApiUtils.getJsonContentHeaders(openAiToken)) - .defaultStatusHandler(ApiUtils.DEFAULT_RESPONSE_ERROR_HANDLER) - .build(); - - this.multipartRestClient = restClientBuilder - .baseUrl(baseUrl) - .defaultHeaders(multipartFormDataHeaders -> { - multipartFormDataHeaders.setBearerAuth(openAiToken); - multipartFormDataHeaders.setContentType(MediaType.MULTIPART_FORM_DATA); - }) - .defaultStatusHandler(ApiUtils.DEFAULT_RESPONSE_ERROR_HANDLER) + .defaultStatusHandler(RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER) .build(); this.webClient = WebClient.builder() 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 fcdd1fd4d13..65e5ca310af 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 @@ -21,12 +21,13 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; -import org.springframework.ai.openai.api.common.ApiUtils; +import org.springframework.ai.retry.RetryUtils; import org.springframework.core.io.ByteArrayResource; import org.springframework.http.ResponseEntity; import org.springframework.util.Assert; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; +import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; /** @@ -45,7 +46,7 @@ public class OpenAiAudioApi { * @param openAiToken OpenAI apiKey. */ public OpenAiAudioApi(String openAiToken) { - this(ApiUtils.DEFAULT_BASE_URL, openAiToken, RestClient.builder()); + this(ApiUtils.DEFAULT_BASE_URL, openAiToken, RestClient.builder(), RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER); } /** @@ -53,12 +54,14 @@ public OpenAiAudioApi(String openAiToken) { * @param baseUrl api base URL. * @param openAiToken OpenAI apiKey. * @param restClientBuilder RestClient builder. + * @param responseErrorHandler Response error handler. */ - public OpenAiAudioApi(String baseUrl, String openAiToken, RestClient.Builder restClientBuilder) { + public OpenAiAudioApi(String baseUrl, String openAiToken, RestClient.Builder restClientBuilder, + ResponseErrorHandler responseErrorHandler) { this.restClient = restClientBuilder.baseUrl(baseUrl).defaultHeaders(headers -> { headers.setBearerAuth(openAiToken); - }).defaultStatusHandler(ApiUtils.DEFAULT_RESPONSE_ERROR_HANDLER).build(); + }).defaultStatusHandler(responseErrorHandler).build(); } /** 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 6499f51174f..18b3d0bff4e 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 @@ -20,9 +20,10 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import org.springframework.ai.openai.api.common.ApiUtils; +import org.springframework.ai.retry.RetryUtils; import org.springframework.http.ResponseEntity; import org.springframework.util.Assert; +import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; /** @@ -44,11 +45,29 @@ public OpenAiImageApi(String openAiToken) { this(ApiUtils.DEFAULT_BASE_URL, openAiToken, RestClient.builder()); } + /** + * Create a new OpenAI Image API with the provided base URL. + * @param baseUrl the base URL for the OpenAI API. + * @param openAiToken OpenAI apiKey. + * @param restClientBuilder the rest client builder to use. + */ public OpenAiImageApi(String baseUrl, String openAiToken, RestClient.Builder restClientBuilder) { + this(baseUrl, openAiToken, restClientBuilder, RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER); + } + + /** + * Create a new OpenAI Image API with the provided base URL. + * @param baseUrl the base URL for the OpenAI API. + * @param openAiToken OpenAI apiKey. + * @param restClientBuilder the rest client builder to use. + * @param responseErrorHandler the response error handler to use. + */ + public OpenAiImageApi(String baseUrl, String openAiToken, RestClient.Builder restClientBuilder, + ResponseErrorHandler responseErrorHandler) { this.restClient = restClientBuilder.baseUrl(baseUrl) .defaultHeaders(ApiUtils.getJsonContentHeaders(openAiToken)) - .defaultStatusHandler(ApiUtils.DEFAULT_RESPONSE_ERROR_HANDLER) + .defaultStatusHandler(responseErrorHandler) .build(); } 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 a3190312d7f..300cdfafbb8 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 @@ -22,7 +22,7 @@ import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.model.function.FunctionCallbackWrapper; import org.springframework.ai.openai.api.OpenAiApi; -import org.springframework.ai.openai.chat.api.tool.MockWeatherService; +import org.springframework.ai.openai.api.tool.MockWeatherService; import static org.assertj.core.api.Assertions.assertThat; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/OpenAiApiIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/OpenAiApiIT.java similarity index 98% rename from models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/OpenAiApiIT.java rename to models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/OpenAiApiIT.java index e54b7e87792..182a11dcec2 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/OpenAiApiIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/OpenAiApiIT.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.openai.chat.api; +package org.springframework.ai.openai.api; import java.util.List; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/RestClientBuilderTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/RestClientBuilderTests.java similarity index 96% rename from models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/RestClientBuilderTests.java rename to models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/RestClientBuilderTests.java index 96c45d56bf6..ffdccf035fb 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/RestClientBuilderTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/RestClientBuilderTests.java @@ -13,9 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.openai.chat.api; +package org.springframework.ai.openai.api; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.http.client.SimpleClientHttpRequestFactory; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/MockWeatherService.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/MockWeatherService.java similarity index 97% rename from models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/MockWeatherService.java rename to models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/MockWeatherService.java index e1364756ac3..db41af1f0d4 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/MockWeatherService.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/MockWeatherService.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.openai.chat.api.tool; +package org.springframework.ai.openai.api.tool; import java.util.function.Function; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/OpenAiApiToolFunctionCallIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/OpenAiApiToolFunctionCallIT.java similarity index 99% rename from models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/OpenAiApiToolFunctionCallIT.java rename to models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/OpenAiApiToolFunctionCallIT.java index b3ac24b09d9..4138a24a98c 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/api/tool/OpenAiApiToolFunctionCallIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/tool/OpenAiApiToolFunctionCallIT.java @@ -13,7 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.openai.chat.api.tool; + +package org.springframework.ai.openai.api.tool; import java.util.ArrayList; import java.util.List; diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java index 8d99b60fe13..3b2629714f8 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientWithTranscriptionResponseMetadataTests.java @@ -26,6 +26,7 @@ import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionMetadata; import org.springframework.ai.openai.metadata.audio.OpenAiAudioTranscriptionResponseMetadata; import org.springframework.ai.openai.metadata.support.OpenAiApiResponseHeaders; +import org.springframework.ai.retry.RetryUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.test.autoconfigure.web.client.RestClientTest; @@ -151,7 +152,7 @@ static class Config { @Bean public OpenAiAudioApi chatCompletionApi(RestClient.Builder builder) { - return new OpenAiAudioApi("", TEST_API_KEY, builder); + return new OpenAiAudioApi("", TEST_API_KEY, builder, RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER); } @Bean diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java index a5f754a2ce7..579502daff1 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java @@ -37,7 +37,7 @@ import org.springframework.ai.model.function.FunctionCallbackWrapper; import org.springframework.ai.openai.OpenAiChatOptions; import org.springframework.ai.openai.OpenAiTestConfiguration; -import org.springframework.ai.openai.chat.api.tool.MockWeatherService; +import org.springframework.ai.openai.api.tool.MockWeatherService; import org.springframework.ai.openai.testutils.AbstractIT; import org.springframework.ai.parser.BeanOutputParser; import org.springframework.ai.parser.ListOutputParser; 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 new file mode 100644 index 00000000000..dcf0f303ff0 --- /dev/null +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiRetryTests.java @@ -0,0 +1,272 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.openai.chat; + +import java.util.List; +import java.util.Optional; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import reactor.core.publisher.Flux; + +import org.springframework.ai.chat.prompt.Prompt; +import org.springframework.ai.document.MetadataMode; +import org.springframework.ai.image.ImageMessage; +import org.springframework.ai.image.ImagePrompt; +import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; +import org.springframework.ai.openai.OpenAiAudioTranscriptionOptions; +import org.springframework.ai.openai.OpenAiChatClient; +import org.springframework.ai.openai.OpenAiChatOptions; +import org.springframework.ai.openai.OpenAiEmbeddingClient; +import org.springframework.ai.openai.OpenAiEmbeddingOptions; +import org.springframework.ai.openai.OpenAiImageClient; +import org.springframework.ai.openai.OpenAiImageOptions; +import org.springframework.ai.openai.api.OpenAiApi; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletion; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionChunk; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionFinishReason; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionMessage.Role; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest; +import org.springframework.ai.openai.api.OpenAiApi.Embedding; +import org.springframework.ai.openai.api.OpenAiApi.EmbeddingList; +import org.springframework.ai.openai.api.OpenAiApi.EmbeddingRequest; +import org.springframework.ai.openai.api.OpenAiAudioApi; +import org.springframework.ai.openai.api.OpenAiAudioApi.StructuredResponse; +import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptResponseFormat; +import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptionRequest; +import org.springframework.ai.openai.api.OpenAiImageApi; +import org.springframework.ai.openai.api.OpenAiImageApi.Data; +import org.springframework.ai.openai.api.OpenAiImageApi.OpenAiImageRequest; +import org.springframework.ai.openai.api.OpenAiImageApi.OpenAiImageResponse; +import org.springframework.ai.openai.audio.transcription.AudioTranscriptionPrompt; +import org.springframework.ai.openai.audio.transcription.AudioTranscriptionResponse; +import org.springframework.ai.retry.RetryUtils; +import org.springframework.ai.retry.TransientAiException; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.ResponseEntity; +import org.springframework.retry.RetryCallback; +import org.springframework.retry.RetryContext; +import org.springframework.retry.RetryListener; +import org.springframework.retry.support.RetryTemplate; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.isA; +import static org.mockito.Mockito.when; + +/** + * @author Christian Tzolov + */ +@SuppressWarnings("unchecked") +@ExtendWith(MockitoExtension.class) +public class OpenAiRetryTests { + + private class TestRetryListener implements RetryListener { + + int onErrorRetryCount = 0; + + int onSuccessRetryCount = 0; + + @Override + public void onSuccess(RetryContext context, RetryCallback callback, T result) { + onSuccessRetryCount = context.getRetryCount(); + } + + @Override + public void onError(RetryContext context, RetryCallback callback, + Throwable throwable) { + onErrorRetryCount = context.getRetryCount(); + } + + } + + private TestRetryListener retryListener; + + private RetryTemplate retryTemplate; + + private @Mock OpenAiApi openAiApi; + + private @Mock OpenAiAudioApi openAiAudioApi; + + private @Mock OpenAiImageApi openAiImageApi; + + private OpenAiChatClient chatClient; + + private OpenAiEmbeddingClient embeddingClient; + + private OpenAiAudioTranscriptionClient audioTranscriptionClient; + + private OpenAiImageClient imageClient; + + @BeforeEach + public void beforeEach() { + retryTemplate = RetryUtils.DEFAULT_RETRY_TEMPLATE; + retryListener = new TestRetryListener(); + retryTemplate.registerListener(retryListener); + + chatClient = new OpenAiChatClient(openAiApi, OpenAiChatOptions.builder().build(), null, retryTemplate); + embeddingClient = new OpenAiEmbeddingClient(openAiApi, MetadataMode.EMBED, + OpenAiEmbeddingOptions.builder().build(), retryTemplate); + audioTranscriptionClient = new OpenAiAudioTranscriptionClient(openAiAudioApi, + OpenAiAudioTranscriptionOptions.builder() + .withModel("model") + .withResponseFormat(TranscriptResponseFormat.JSON) + .build(), + retryTemplate); + imageClient = new OpenAiImageClient(openAiImageApi, OpenAiImageOptions.builder().build(), retryTemplate); + } + + @Test + 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, + new OpenAiApi.Usage(10, 10, 10)); + + when(openAiApi.chatCompletionEntity(isA(ChatCompletionRequest.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(ResponseEntity.of(Optional.of(expectedChatCompletion))); + + var result = chatClient.call(new Prompt("text")); + + assertThat(result).isNotNull(); + assertThat(result.getResult().getOutput().getContent()).isSameAs("Response"); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void openAiChatNonTransientError() { + when(openAiApi.chatCompletionEntity(isA(ChatCompletionRequest.class))) + .thenThrow(new RuntimeException("Non Transient Error")); + assertThrows(RuntimeException.class, () -> chatClient.call(new Prompt("text"))); + } + + @Test + 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, + null); + + when(openAiApi.chatCompletionStream(isA(ChatCompletionRequest.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(Flux.just(expectedChatCompletion)); + + var result = chatClient.stream(new Prompt("text")); + + assertThat(result).isNotNull(); + assertThat(result.collectList().block().get(0).getResult().getOutput().getContent()).isSameAs("Response"); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void openAiChatStreamNonTransientError() { + when(openAiApi.chatCompletionStream(isA(ChatCompletionRequest.class))) + .thenThrow(new RuntimeException("Non Transient Error")); + assertThrows(RuntimeException.class, () -> chatClient.stream(new Prompt("text"))); + } + + @Test + public void openAiEmbeddingTransientError() { + + EmbeddingList expectedEmbeddings = new EmbeddingList<>("list", + List.of(new Embedding(0, List.of(9.9, 8.8))), "model", new OpenAiApi.Usage(10, 10, 10)); + + when(openAiApi.embeddings(isA(EmbeddingRequest.class))).thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(ResponseEntity.of(Optional.of(expectedEmbeddings))); + + var result = embeddingClient + .call(new org.springframework.ai.embedding.EmbeddingRequest(List.of("text1", "text2"), null)); + + assertThat(result).isNotNull(); + assertThat(result.getResult().getOutput()).isEqualTo(List.of(9.9, 8.8)); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void openAiEmbeddingNonTransientError() { + when(openAiApi.embeddings(isA(EmbeddingRequest.class))) + .thenThrow(new RuntimeException("Non Transient Error")); + assertThrows(RuntimeException.class, () -> embeddingClient + .call(new org.springframework.ai.embedding.EmbeddingRequest(List.of("text1", "text2"), null))); + } + + @Test + public void openAiAudioTranscriptionTransientError() { + + var expectedResponse = new StructuredResponse("nl", 6.7f, "Transcription Text", List.of(), List.of()); + + when(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))); + + AudioTranscriptionResponse result = audioTranscriptionClient + .call(new AudioTranscriptionPrompt(new ClassPathResource("speech/jfk.flac"))); + + assertThat(result).isNotNull(); + assertThat(result.getResult().getOutput()).isEqualTo(expectedResponse.text()); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void openAiAudioTranscriptionNonTransientError() { + when(openAiAudioApi.createTranscription(isA(TranscriptionRequest.class), isA(Class.class))) + .thenThrow(new RuntimeException("Transient Error 1")); + assertThrows(RuntimeException.class, () -> audioTranscriptionClient + .call(new AudioTranscriptionPrompt(new ClassPathResource("speech/jfk.flac")))); + } + + @Test + public void openAiImageTransientError() { + + var expectedResponse = new OpenAiImageResponse(678l, List.of(new Data("url678", "b64", "prompt"))); + + when(openAiImageApi.createImage(isA(OpenAiImageRequest.class))) + .thenThrow(new TransientAiException("Transient Error 1")) + .thenThrow(new TransientAiException("Transient Error 2")) + .thenReturn(ResponseEntity.of(Optional.of(expectedResponse))); + + var result = imageClient.call(new ImagePrompt(List.of(new ImageMessage("Image Message")))); + + assertThat(result).isNotNull(); + assertThat(result.getResult().getOutput().getUrl()).isEqualTo("url678"); + assertThat(retryListener.onSuccessRetryCount).isEqualTo(2); + assertThat(retryListener.onErrorRetryCount).isEqualTo(2); + } + + @Test + public void openAiImageNonTransientError() { + when(openAiImageApi.createImage(isA(OpenAiImageRequest.class))) + .thenThrow(new RuntimeException("Transient Error 1")); + assertThrows(RuntimeException.class, + () -> imageClient.call(new ImagePrompt(List.of(new ImageMessage("Image Message"))))); + } + +} diff --git a/models/spring-ai-stability-ai/pom.xml b/models/spring-ai-stability-ai/pom.xml index b14b51a17ec..b5180e6faf0 100644 --- a/models/spring-ai-stability-ai/pom.xml +++ b/models/spring-ai-stability-ai/pom.xml @@ -30,12 +30,11 @@ - org.springframework - spring-web - ${spring-framework.version} + org.springframework.ai + spring-ai-retry + ${project.parent.version} - org.springframework diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java index d39594998b5..e632e5235b5 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageClient.java @@ -15,17 +15,24 @@ */ package org.springframework.ai.stabilityai; +import java.util.List; +import java.util.stream.Collectors; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.ai.image.*; + +import org.springframework.ai.image.Image; +import org.springframework.ai.image.ImageClient; +import org.springframework.ai.image.ImageGeneration; +import org.springframework.ai.image.ImageOptions; +import org.springframework.ai.image.ImagePrompt; +import org.springframework.ai.image.ImageResponse; +import org.springframework.ai.image.ImageResponseMetadata; import org.springframework.ai.model.ModelOptionsUtils; import org.springframework.ai.stabilityai.api.StabilityAiApi; import org.springframework.ai.stabilityai.api.StabilityAiImageOptions; import org.springframework.util.Assert; -import java.util.List; -import java.util.stream.Collectors; - /** * StabilityAiImageClient is a class that implements the ImageClient interface. It * provides a client for calling the StabilityAI image generation API. @@ -50,7 +57,7 @@ public StabilityAiImageClient(StabilityAiApi stabilityAiApi, StabilityAiImageOpt } public StabilityAiImageOptions getOptions() { - return options; + return this.options; } /** @@ -159,17 +166,4 @@ private StabilityAiImageOptions convertOptions(ImageOptions runtimeOptions) { return builder.build(); } - private ImagePrompt createUpdatedPrompt(ImagePrompt prompt) { - ImageOptions runtimeImageModelOptions = prompt.getOptions(); - ImageOptionsBuilder imageOptionsBuilder = ImageOptionsBuilder.builder(); - - if (runtimeImageModelOptions != null) { - if (runtimeImageModelOptions.getModel() != null) { - imageOptionsBuilder.withModel(runtimeImageModelOptions.getModel()); - } - } - ImageOptions updatedImageModelOptions = imageOptionsBuilder.build(); - return new ImagePrompt(prompt.getInstructions(), updatedImageModelOptions); - } - } diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java index 680f4ee3620..648dae1a5d9 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StabilityAiImageGenerationMetadata.java @@ -35,16 +35,17 @@ public StabilityAiImageGenerationMetadata(String finishReason, Long seed) { } public String getFinishReason() { - return finishReason; + return this.finishReason; } public Long getSeed() { - return seed; + return this.seed; } @Override public String toString() { - return "StabilityAiImageGenerationMetadata{" + "finishReason='" + finishReason + '\'' + ", seed=" + seed + '}'; + return "StabilityAiImageGenerationMetadata{" + "finishReason='" + this.finishReason + '\'' + ", seed=" + + this.seed + '}'; } @Override @@ -53,12 +54,12 @@ public boolean equals(Object o) { return true; if (!(o instanceof StabilityAiImageGenerationMetadata that)) return false; - return Objects.equals(finishReason, that.finishReason) && Objects.equals(seed, that.seed); + return Objects.equals(this.finishReason, that.finishReason) && Objects.equals(this.seed, that.seed); } @Override public int hashCode() { - return Objects.hash(finishReason, seed); + return Objects.hash(this.finishReason, this.seed); } } diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java index 15c8645e481..e1d7c9efa5a 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/StyleEnum.java @@ -20,11 +20,25 @@ */ public enum StyleEnum { - THREE_D_MODEL("3d-model"), ANALOG_FILM("analog-film"), ANIME("anime"), CINEMATIC("cinematic"), - COMIC_BOOK("comic-book"), DIGITAL_ART("digital-art"), ENHANCE("enhance"), FANTASY_ART("fantasy-art"), - ISOMETRIC("isometric"), LINE_ART("line-art"), LOW_POLY("low-poly"), MODELING_COMPOUND("modeling-compound"), - NEON_PUNK("neon-punk"), ORIGAMI("origami"), PHOTOGRAPHIC("photographic"), PIXEL_ART("pixel-art"), + // @formatter:off + THREE_D_MODEL("3d-model"), + ANALOG_FILM("analog-film"), + ANIME("anime"), + CINEMATIC("cinematic"), + COMIC_BOOK("comic-book"), + DIGITAL_ART("digital-art"), + ENHANCE("enhance"), + FANTASY_ART("fantasy-art"), + ISOMETRIC("isometric"), + LINE_ART("line-art"), + LOW_POLY("low-poly"), + MODELING_COMPOUND("modeling-compound"), + NEON_PUNK("neon-punk"), + ORIGAMI("origami"), + PHOTOGRAPHIC("photographic"), + PIXEL_ART("pixel-art"), TILE_TEXTURE("tile-texture"); + // @formatter:on private final String text; diff --git a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java index 984098a1c8a..2ee5b2f7f24 100644 --- a/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java +++ b/models/spring-ai-stability-ai/src/main/java/org/springframework/ai/stabilityai/api/StabilityAiApi.java @@ -15,20 +15,18 @@ */ package org.springframework.ai.stabilityai.api; +import java.util.List; +import java.util.function.Consumer; + import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.ObjectMapper; + +import org.springframework.ai.retry.RetryUtils; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; -import org.springframework.http.client.ClientHttpResponse; import org.springframework.util.Assert; -import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; -import java.io.IOException; -import java.util.List; -import java.util.function.Consumer; - /** * Represents the StabilityAI API. */ @@ -80,35 +78,12 @@ public StabilityAiApi(String apiKey, String model, String baseUrl, RestClient.Bu headers.setContentType(MediaType.APPLICATION_JSON); }; - ResponseErrorHandler responseErrorHandler = new ResponseErrorHandler() { - @Override - public boolean hasError(ClientHttpResponse response) throws IOException { - return response.getStatusCode().isError(); - } - - @Override - public void handleError(ClientHttpResponse response) throws IOException { - if (response.getStatusCode().isError()) { - throw new RuntimeException(String.format("%s - %s", response.getStatusCode().value(), - new ObjectMapper().readValue(response.getBody(), ResponseError.class))); - } - } - }; - this.restClient = restClientBuilder.baseUrl(baseUrl) .defaultHeaders(jsonContentHeaders) - .defaultStatusHandler(responseErrorHandler) + .defaultStatusHandler(RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER) .build(); } - @JsonInclude(JsonInclude.Include.NON_NULL) - public record ResponseError(@JsonProperty("id") String id, @JsonProperty("name") String name, - @JsonProperty("message") String message - - ) { - - } - @JsonInclude(JsonInclude.Include.NON_NULL) public record GenerateImageRequest(@JsonProperty("text_prompts") List textPrompts, @JsonProperty("height") Integer height, @JsonProperty("width") Integer width, diff --git a/pom.xml b/pom.xml index 1d3670df9ca..da31f6831f7 100644 --- a/pom.xml +++ b/pom.xml @@ -59,6 +59,7 @@ vector-stores/spring-ai-qdrant spring-ai-spring-boot-starters/spring-ai-starter-bedrock-ai spring-ai-spring-boot-starters/spring-ai-starter-mistral-ai + spring-ai-retry @@ -115,6 +116,7 @@ 1.17.0 26.33.0 1.7.1 + 2.0.5 3.25.2 diff --git a/spring-ai-bom/pom.xml b/spring-ai-bom/pom.xml index e838b6c080e..4f604f768e7 100644 --- a/spring-ai-bom/pom.xml +++ b/spring-ai-bom/pom.xml @@ -33,12 +33,18 @@ ${project.version} - - - org.springframework.ai - spring-ai-pdf-document-reader - ${project.version} - + + org.springframework.ai + spring-ai-retry + ${project.parent.version} + + + + + org.springframework.ai + spring-ai-pdf-document-reader + ${project.version} + org.springframework.ai diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc index 3ac1ccd5b71..0846515f306 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc @@ -41,6 +41,21 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Image Generation Properties +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. + +[cols="3,5,1"] +|==== +| Property | Description | Default + +| spring.ai.retry.max-attempts | Maximum number of retry attempts. | 10 +| spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. +| spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 +| spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +| spring.ai.retry.on-client-errors | If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx client error codes | false +| spring.ai.retry.on-http-codes | List of HTTP Error Code to include for retry | empty +|==== + + The prefix `spring.ai.openai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc index faf9d3b9720..8166855302a 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc @@ -49,6 +49,20 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Chat Properties +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. + +[cols="3,5,1"] +|==== +| Property | Description | Default + +| spring.ai.retry.max-attempts | Maximum number of retry attempts. | 10 +| spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. +| spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 +| spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +| spring.ai.retry.on-client-errors | If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx client error codes | false +| spring.ai.retry.on-http-codes | List of HTTP Error Code to include for retry | empty +|==== + The prefix `spring.ai.mistralai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc index 2d184853c39..63828c6d5b6 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc @@ -49,6 +49,20 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Chat Properties +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. + +[cols="3,5,1"] +|==== +| Property | Description | Default + +| spring.ai.retry.max-attempts | Maximum number of retry attempts. | 10 +| spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. +| spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 +| spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +| spring.ai.retry.on-client-errors | If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx client error codes | false +| spring.ai.retry.on-http-codes | List of HTTP Error Code to include for retry | empty +|==== + The prefix `spring.ai.openai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc index 9a9d3c2e5b7..57f19e66b36 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc @@ -50,6 +50,18 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Embedding Properties +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. + +[cols="3,5,1"] +|==== +| Property | Description | Default + +| spring.ai.retry.max-attempts | Maximum number of retry attempts. | 10 +| spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. +| spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 +| spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +|==== + The prefix `spring.ai.openai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] diff --git a/spring-ai-retry/pom.xml b/spring-ai-retry/pom.xml new file mode 100644 index 00000000000..9c2327c9037 --- /dev/null +++ b/spring-ai-retry/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + org.springframework.ai + spring-ai + 0.8.1-SNAPSHOT + + spring-ai-retry + jar + Spring AI Retry + Spring AI utility project helping with remote call retry + https://github.com/spring-projects/spring-ai + + + https://github.com/spring-projects/spring-ai + git://github.com/spring-projects/spring-ai.git + git@github.com:spring-projects/spring-ai.git + + + + + + + org.springframework.ai + spring-ai-core + ${project.parent.version} + + + + org.springframework.retry + spring-retry + ${spring-retry.version} + + + + org.springframework + spring-webflux + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + diff --git a/spring-ai-retry/src/main/java/org/springframework/ai/retry/NonTransientAiException.java b/spring-ai-retry/src/main/java/org/springframework/ai/retry/NonTransientAiException.java new file mode 100644 index 00000000000..fcd824693c3 --- /dev/null +++ b/spring-ai-retry/src/main/java/org/springframework/ai/retry/NonTransientAiException.java @@ -0,0 +1,36 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.retry; + +/** + * Root of the hierarchy of Model access exceptions that are considered non-transient - + * where a retry of the same operation would fail unless the cause of the Exception is + * corrected. + * + * @author Christian Tzolov + * @since 0.8.1 + */ +public class NonTransientAiException extends RuntimeException { + + public NonTransientAiException(String message) { + super(message); + } + + public NonTransientAiException(String message, Throwable cause) { + super(message, cause); + } + +} diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/ApiUtils.java b/spring-ai-retry/src/main/java/org/springframework/ai/retry/RetryUtils.java similarity index 50% rename from models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/ApiUtils.java rename to spring-ai-retry/src/main/java/org/springframework/ai/retry/RetryUtils.java index 8219170532d..bbc584335c3 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/common/ApiUtils.java +++ b/spring-ai-retry/src/main/java/org/springframework/ai/retry/RetryUtils.java @@ -13,32 +13,47 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.ai.openai.api.common; +package org.springframework.ai.retry; import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.util.function.Consumer; +import java.time.Duration; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; import org.springframework.http.client.ClientHttpResponse; import org.springframework.lang.NonNull; +import org.springframework.retry.RetryCallback; +import org.springframework.retry.RetryContext; +import org.springframework.retry.RetryListener; +import org.springframework.retry.support.RetryTemplate; import org.springframework.util.StreamUtils; import org.springframework.web.client.ResponseErrorHandler; /** + * RetryUtils is a utility class for configuring and handling retry operations. It + * provides a default RetryTemplate and a default ResponseErrorHandler. + * * @author Christian Tzolov + * @since 0.8.1 */ -public class ApiUtils { +public abstract class RetryUtils { - public static final String DEFAULT_BASE_URL = "https://api.openai.com"; + private static final Logger logger = LoggerFactory.getLogger(RetryUtils.class); - public static Consumer getJsonContentHeaders(String apiKey) { - return (headers) -> { - headers.setBearerAuth(apiKey); - headers.setContentType(MediaType.APPLICATION_JSON); - }; - }; + public static final RetryTemplate DEFAULT_RETRY_TEMPLATE = RetryTemplate.builder() + .maxAttempts(10) + .retryOn(TransientAiException.class) + .exponentialBackoff(Duration.ofMillis(2000), 5, Duration.ofMillis(3 * 60000)) + .withListener(new RetryListener() { + @Override + public void onError(RetryContext context, + RetryCallback callback, Throwable throwable) { + logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); + }; + }) + .build(); public static final ResponseErrorHandler DEFAULT_RESPONSE_ERROR_HANDLER = new ResponseErrorHandler() { @@ -52,10 +67,16 @@ public void handleError(@NonNull ClientHttpResponse response) throws IOException if (response.getStatusCode().isError()) { String error = StreamUtils.copyToString(response.getBody(), StandardCharsets.UTF_8); String message = String.format("%s - %s", response.getStatusCode().value(), error); + /** + * Thrown on 4xx client errors, such as 401 - Incorrect API key provided, + * 401 - You must be a member of an organization to use the API, 429 - + * Rate limit reached for requests, 429 - You exceeded your current quota + * , please check your plan and billing details. + */ if (response.getStatusCode().is4xxClientError()) { - throw new OpenAiApiClientErrorException(message); + throw new NonTransientAiException(message); } - throw new OpenAiApiException(message); + throw new TransientAiException(message); } } }; diff --git a/spring-ai-retry/src/main/java/org/springframework/ai/retry/TransientAiException.java b/spring-ai-retry/src/main/java/org/springframework/ai/retry/TransientAiException.java new file mode 100644 index 00000000000..94a7104840f --- /dev/null +++ b/spring-ai-retry/src/main/java/org/springframework/ai/retry/TransientAiException.java @@ -0,0 +1,36 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.retry; + +/** + * Root of the hierarchy of Model access exceptions that are considered transient - where + * a previously failed operation might be able to succeed when the operation is retried + * without any intervention by application-level functionality. + * + * @author Christian Tzolov + * @since 0.8.1 + */ +public class TransientAiException extends RuntimeException { + + public TransientAiException(String message) { + super(message); + } + + public TransientAiException(String message, Throwable cause) { + super(message, cause); + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfiguration.java index a3f67f8864d..1328f3488ba 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfiguration.java @@ -17,6 +17,7 @@ import java.util.List; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.mistralai.MistralAiChatClient; import org.springframework.ai.mistralai.MistralAiEmbeddingClient; import org.springframework.ai.mistralai.api.MistralAiApi; @@ -30,9 +31,11 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; +import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; /** @@ -40,7 +43,7 @@ * @author Christian Tzolov * @since 0.8.1 */ -@AutoConfiguration(after = { RestClientAutoConfiguration.class }) +@AutoConfiguration(after = { RestClientAutoConfiguration.class, SpringAiRetryAutoConfiguration.class }) @EnableConfigurationProperties({ MistralAiEmbeddingProperties.class, MistralAiCommonProperties.class, MistralAiChatProperties.class }) @ConditionalOnClass(MistralAiApi.class) @@ -51,13 +54,15 @@ public class MistralAiAutoConfiguration { @ConditionalOnProperty(prefix = MistralAiEmbeddingProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) public MistralAiEmbeddingClient mistralAiEmbeddingClient(MistralAiCommonProperties commonProperties, - MistralAiEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder) { + MistralAiEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder, + RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler) { var mistralAiApi = mistralAiApi(embeddingProperties.getApiKey(), commonProperties.getApiKey(), - embeddingProperties.getBaseUrl(), commonProperties.getBaseUrl(), restClientBuilder); + embeddingProperties.getBaseUrl(), commonProperties.getBaseUrl(), restClientBuilder, + responseErrorHandler); return new MistralAiEmbeddingClient(mistralAiApi, embeddingProperties.getMetadataMode(), - embeddingProperties.getOptions()); + embeddingProperties.getOptions(), retryTemplate); } @Bean @@ -66,20 +71,22 @@ public MistralAiEmbeddingClient mistralAiEmbeddingClient(MistralAiCommonProperti matchIfMissing = true) public MistralAiChatClient mistralAiChatClient(MistralAiCommonProperties commonProperties, MistralAiChatProperties chatProperties, RestClient.Builder restClientBuilder, - List toolFunctionCallbacks, FunctionCallbackContext functionCallbackContext) { + List toolFunctionCallbacks, FunctionCallbackContext functionCallbackContext, + RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler) { var mistralAiApi = mistralAiApi(chatProperties.getApiKey(), commonProperties.getApiKey(), - chatProperties.getBaseUrl(), commonProperties.getBaseUrl(), restClientBuilder); + chatProperties.getBaseUrl(), commonProperties.getBaseUrl(), restClientBuilder, responseErrorHandler); if (!CollectionUtils.isEmpty(toolFunctionCallbacks)) { chatProperties.getOptions().getFunctionCallbacks().addAll(toolFunctionCallbacks); } - return new MistralAiChatClient(mistralAiApi, chatProperties.getOptions(), functionCallbackContext); + return new MistralAiChatClient(mistralAiApi, chatProperties.getOptions(), functionCallbackContext, + retryTemplate); } private MistralAiApi mistralAiApi(String apiKey, String commonApiKey, String baseUrl, String commonBaseUrl, - RestClient.Builder restClientBuilder) { + RestClient.Builder restClientBuilder, ResponseErrorHandler responseErrorHandler) { var resolvedApiKey = StringUtils.hasText(apiKey) ? apiKey : commonApiKey; var resoledBaseUrl = StringUtils.hasText(baseUrl) ? baseUrl : commonBaseUrl; @@ -87,7 +94,7 @@ private MistralAiApi mistralAiApi(String apiKey, String commonApiKey, String bas Assert.hasText(resolvedApiKey, "Mistral API key must be set"); Assert.hasText(resoledBaseUrl, "Mistral base URL must be set"); - return new MistralAiApi(resoledBaseUrl, resolvedApiKey, restClientBuilder); + return new MistralAiApi(resoledBaseUrl, resolvedApiKey, restClientBuilder, responseErrorHandler); } @Bean diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java index a6d2a56260e..b9899440641 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java @@ -17,6 +17,7 @@ import java.util.List; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.model.function.FunctionCallback; import org.springframework.ai.model.function.FunctionCallbackContext; @@ -35,15 +36,17 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; +import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestClient; /** * @author Christian Tzolov */ -@AutoConfiguration(after = { RestClientAutoConfiguration.class }) +@AutoConfiguration(after = { RestClientAutoConfiguration.class, SpringAiRetryAutoConfiguration.class }) @ConditionalOnClass(OpenAiApi.class) @EnableConfigurationProperties({ OpenAiConnectionProperties.class, OpenAiChatProperties.class, OpenAiEmbeddingProperties.class, OpenAiImageProperties.class, OpenAiAudioTranscriptionProperties.class }) @@ -55,16 +58,17 @@ public class OpenAiAutoConfiguration { matchIfMissing = true) public OpenAiChatClient openAiChatClient(OpenAiConnectionProperties commonProperties, OpenAiChatProperties chatProperties, RestClient.Builder restClientBuilder, - List toolFunctionCallbacks, FunctionCallbackContext functionCallbackContext) { + List toolFunctionCallbacks, FunctionCallbackContext functionCallbackContext, + RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler) { var openAiApi = openAiApi(chatProperties.getBaseUrl(), commonProperties.getBaseUrl(), - chatProperties.getApiKey(), commonProperties.getApiKey(), restClientBuilder); + chatProperties.getApiKey(), commonProperties.getApiKey(), restClientBuilder, responseErrorHandler); if (!CollectionUtils.isEmpty(toolFunctionCallbacks)) { chatProperties.getOptions().getFunctionCallbacks().addAll(toolFunctionCallbacks); } - return new OpenAiChatClient(openAiApi, chatProperties.getOptions(), functionCallbackContext); + return new OpenAiChatClient(openAiApi, chatProperties.getOptions(), functionCallbackContext, retryTemplate); } @Bean @@ -72,17 +76,18 @@ public OpenAiChatClient openAiChatClient(OpenAiConnectionProperties commonProper @ConditionalOnProperty(prefix = OpenAiEmbeddingProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) public EmbeddingClient openAiEmbeddingClient(OpenAiConnectionProperties commonProperties, - OpenAiEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder) { + OpenAiEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder, + RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler) { var openAiApi = openAiApi(embeddingProperties.getBaseUrl(), commonProperties.getBaseUrl(), - embeddingProperties.getApiKey(), commonProperties.getApiKey(), restClientBuilder); + embeddingProperties.getApiKey(), commonProperties.getApiKey(), restClientBuilder, responseErrorHandler); return new OpenAiEmbeddingClient(openAiApi, embeddingProperties.getMetadataMode(), - embeddingProperties.getOptions()); + embeddingProperties.getOptions(), retryTemplate); } private OpenAiApi openAiApi(String baseUrl, String commonBaseUrl, String apiKey, String commonApiKey, - RestClient.Builder restClientBuilder) { + RestClient.Builder restClientBuilder, ResponseErrorHandler responseErrorHandler) { String resolvedBaseUrl = StringUtils.hasText(baseUrl) ? baseUrl : commonBaseUrl; Assert.hasText(resolvedBaseUrl, "OpenAI base URL must be set"); @@ -90,7 +95,7 @@ private OpenAiApi openAiApi(String baseUrl, String commonBaseUrl, String apiKey, String resolvedApiKey = StringUtils.hasText(apiKey) ? apiKey : commonApiKey; Assert.hasText(resolvedApiKey, "OpenAI API key must be set"); - return new OpenAiApi(resolvedBaseUrl, resolvedApiKey, restClientBuilder); + return new OpenAiApi(resolvedBaseUrl, resolvedApiKey, restClientBuilder, responseErrorHandler); } @Bean @@ -98,7 +103,9 @@ private OpenAiApi openAiApi(String baseUrl, String commonBaseUrl, String apiKey, @ConditionalOnProperty(prefix = OpenAiImageProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) public OpenAiImageClient openAiImageClient(OpenAiConnectionProperties commonProperties, - OpenAiImageProperties imageProperties, RestClient.Builder restClientBuilder) { + OpenAiImageProperties imageProperties, RestClient.Builder restClientBuilder, RetryTemplate retryTemplate, + ResponseErrorHandler responseErrorHandler) { + String apiKey = StringUtils.hasText(imageProperties.getApiKey()) ? imageProperties.getApiKey() : commonProperties.getApiKey(); @@ -108,15 +115,16 @@ public OpenAiImageClient openAiImageClient(OpenAiConnectionProperties commonProp Assert.hasText(apiKey, "OpenAI API key must be set"); Assert.hasText(baseUrl, "OpenAI base URL must be set"); - var openAiImageApi = new OpenAiImageApi(baseUrl, apiKey, restClientBuilder); + var openAiImageApi = new OpenAiImageApi(baseUrl, apiKey, restClientBuilder, responseErrorHandler); - return new OpenAiImageClient(openAiImageApi).withDefaultOptions(imageProperties.getOptions()); + return new OpenAiImageClient(openAiImageApi, imageProperties.getOptions(), retryTemplate); } @Bean @ConditionalOnMissingBean public OpenAiAudioTranscriptionClient openAiAudioTranscriptionClient(OpenAiConnectionProperties commonProperties, - OpenAiAudioTranscriptionProperties transcriptionProperties) { + OpenAiAudioTranscriptionProperties transcriptionProperties, RetryTemplate retryTemplate, + ResponseErrorHandler responseErrorHandler) { String apiKey = StringUtils.hasText(transcriptionProperties.getApiKey()) ? transcriptionProperties.getApiKey() : commonProperties.getApiKey(); @@ -127,10 +135,10 @@ public OpenAiAudioTranscriptionClient openAiAudioTranscriptionClient(OpenAiConne Assert.hasText(apiKey, "OpenAI API key must be set"); Assert.hasText(baseUrl, "OpenAI base URL must be set"); - var openAiAudioApi = new OpenAiAudioApi(baseUrl, apiKey, RestClient.builder()); + var openAiAudioApi = new OpenAiAudioApi(baseUrl, apiKey, RestClient.builder(), responseErrorHandler); OpenAiAudioTranscriptionClient openAiChatClient = new OpenAiAudioTranscriptionClient(openAiAudioApi, - transcriptionProperties.getOptions()); + transcriptionProperties.getOptions(), retryTemplate); return openAiChatClient; } diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java new file mode 100644 index 00000000000..c3659d65e6f --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java @@ -0,0 +1,108 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.autoconfigure.retry; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.ai.retry.NonTransientAiException; +import org.springframework.ai.retry.TransientAiException; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.http.client.ClientHttpResponse; +import org.springframework.lang.NonNull; +import org.springframework.retry.RetryCallback; +import org.springframework.retry.RetryContext; +import org.springframework.retry.RetryListener; +import org.springframework.retry.support.RetryTemplate; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StreamUtils; +import org.springframework.web.client.ResponseErrorHandler; + +/** + * @author Christian Tzolov + */ +@AutoConfiguration +@ConditionalOnClass(RetryTemplate.class) +@EnableConfigurationProperties({ SpringAiRetryProperties.class }) +public class SpringAiRetryAutoConfiguration { + + private static final Logger logger = LoggerFactory.getLogger(SpringAiRetryAutoConfiguration.class); + + @Bean + @ConditionalOnMissingBean + public RetryTemplate retryTemplate(SpringAiRetryProperties properties) { + return RetryTemplate.builder() + .maxAttempts(properties.getMaxAttempts()) + .retryOn(NonTransientAiException.class) + .exponentialBackoff(properties.getBackoff().getInitialInterval(), properties.getBackoff().getMultiplier(), + properties.getBackoff().getMaxInterval()) + .withListener(new RetryListener() { + @Override + public void onError(RetryContext context, + RetryCallback callback, Throwable throwable) { + logger.warn("Retry error. Retry count:" + context.getRetryCount(), throwable); + }; + }) + .build(); + } + + @Bean + @ConditionalOnMissingBean + public ResponseErrorHandler responseErrorHandler(SpringAiRetryProperties properties) { + + return new ResponseErrorHandler() { + + @Override + public boolean hasError(@NonNull ClientHttpResponse response) throws IOException { + return response.getStatusCode().isError(); + } + + @Override + public void handleError(@NonNull ClientHttpResponse response) throws IOException { + if (response.getStatusCode().isError()) { + String error = StreamUtils.copyToString(response.getBody(), StandardCharsets.UTF_8); + String message = String.format("%s - %s", response.getStatusCode().value(), error); + /** + * Thrown on 4xx client errors, such as 401 - Incorrect API key + * provided, 401 - You must be a member of an organization to use the + * API, 429 - Rate limit reached for requests, 429 - You exceeded your + * current quota , please check your plan and billing details. + */ + // onClientErrors - If true, do not throw a NonTransientAiException, + // and do not attempt retry for 4xx client error codes, false by + // default. + if (!properties.isOnClientErrors() && response.getStatusCode().is4xxClientError()) { + throw new NonTransientAiException(message); + } + // Explicitly configured non-transient codes + if (!CollectionUtils.isEmpty(properties.getOnHttpCodes()) + && properties.getOnHttpCodes().contains(response.getStatusCode().value())) { + throw new NonTransientAiException(message); + } + throw new TransientAiException(message); + } + } + }; + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java new file mode 100644 index 00000000000..bbbd0f4e16d --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java @@ -0,0 +1,127 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.autoconfigure.retry; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; + +/** + * @author Christian Tzolov + */ +@ConfigurationProperties(SpringAiRetryProperties.CONFIG_PREFIX) +public class SpringAiRetryProperties { + + public static final String CONFIG_PREFIX = "spring.ai.retry"; + + /** + * Maximum number of retry attempts. + */ + private int maxAttempts = 10; + + /** + * Exponential Backoff properties. + */ + @NestedConfigurationProperty + private Backoff backoff = new Backoff(); + + /** + * If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx + * client error codes false by default. + * + */ + private boolean onClientErrors = false; + + private List onHttpCodes = new ArrayList<>(); + + /** + * Exponential Backoff properties. + */ + public static class Backoff { + + /** + * Initial sleep duration. + */ + private Duration initialInterval = Duration.ofMillis(2000); + + /** + * Backoff interval multiplier. + */ + private int multiplier = 5; + + /** + * Maximum backoff duration. + */ + private Duration maxInterval = Duration.ofMillis(3 * 60000); + + public Duration getInitialInterval() { + return initialInterval; + } + + public void setInitialInterval(Duration initialInterval) { + this.initialInterval = initialInterval; + } + + public int getMultiplier() { + return multiplier; + } + + public void setMultiplier(int multiplier) { + this.multiplier = multiplier; + } + + public Duration getMaxInterval() { + return maxInterval; + } + + public void setMaxInterval(Duration maxInterval) { + this.maxInterval = maxInterval; + } + + } + + public int getMaxAttempts() { + return this.maxAttempts; + } + + public void setMaxAttempts(int maxAttempts) { + this.maxAttempts = maxAttempts; + } + + public Backoff getBackoff() { + return this.backoff; + } + + public List getOnHttpCodes() { + return this.onHttpCodes; + } + + public void setOnHttpCodes(List onHttpCodes) { + this.onHttpCodes = onHttpCodes; + } + + public boolean isOnClientErrors() { + return this.onClientErrors; + } + + public void setOnClientErrors(boolean onClientErrors) { + this.onClientErrors = onClientErrors; + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index f2ced6509de..172f4785d0b 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/spring-ai-spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -22,4 +22,4 @@ org.springframework.ai.autoconfigure.vectorstore.azure.AzureVectorStoreAutoConfi org.springframework.ai.autoconfigure.vectorstore.weaviate.WeaviateVectorStoreAutoConfiguration org.springframework.ai.autoconfigure.vectorstore.neo4j.Neo4jVectorStoreAutoConfiguration org.springframework.ai.autoconfigure.vectorstore.qdrant.QdrantVectorStoreAutoConfiguration - +org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfigurationIT.java index c3e56639c0d..25816e8c0e4 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiAutoConfigurationIT.java @@ -24,6 +24,7 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import reactor.core.publisher.Flux; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -47,7 +48,8 @@ public class MistralAiAutoConfigurationIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.mistralai.apiKey=" + System.getenv("MISTRAL_AI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)); + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)); @Test void generate() { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiPropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiPropertiesTests.java index 6963855c837..ee4cf9aa7ba 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiPropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/MistralAiPropertiesTests.java @@ -16,6 +16,8 @@ package org.springframework.ai.autoconfigure.mistralai; import org.junit.jupiter.api.Test; + +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; @@ -33,8 +35,8 @@ public void embeddingProperties() { new ApplicationContextRunner() .withPropertyValues("spring.ai.mistralai.base-url=TEST_BASE_URL", "spring.ai.mistralai.api-key=abc123", "spring.ai.mistralai.embedding.options.model=MODEL_XYZ") - .withConfiguration( - AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) .run(context -> { var embeddingProperties = context.getBean(MistralAiEmbeddingProperties.class); var connectionProperties = context.getBean(MistralAiCommonProperties.class); @@ -55,8 +57,8 @@ public void embeddingOverrideConnectionProperties() { new ApplicationContextRunner().withPropertyValues("spring.ai.mistralai.base-url=TEST_BASE_URL", "spring.ai.mistralai.api-key=abc123", "spring.ai.mistralai.embedding.base-url=TEST_BASE_URL2", "spring.ai.mistralai.embedding.api-key=456", "spring.ai.mistralai.embedding.options.model=MODEL_XYZ") - .withConfiguration( - AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) .run(context -> { var embeddingProperties = context.getBean(MistralAiEmbeddingProperties.class); var connectionProperties = context.getBean(MistralAiCommonProperties.class); @@ -79,8 +81,8 @@ public void embeddingOptionsTest() { "spring.ai.mistralai.embedding.options.model=MODEL_XYZ", "spring.ai.mistralai.embedding.options.encodingFormat=MyEncodingFormat") - .withConfiguration( - AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) .run(context -> { var connectionProperties = context.getBean(MistralAiCommonProperties.class); var embeddingProperties = context.getBean(MistralAiEmbeddingProperties.class); diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanIT.java index 0b7972bdfbc..d4259f3ee38 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanIT.java @@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.autoconfigure.mistralai.MistralAiAutoConfiguration; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -48,7 +49,8 @@ class PaymentStatusBeanIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.mistralai.apiKey=" + System.getenv("MISTRAL_AI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)) .withUserConfiguration(Config.class); @Test diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java index 33a5e327c6c..15796f921b2 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java @@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -55,7 +56,8 @@ class PaymentStatusBeanOpenAiIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.apiKey=" + System.getenv("MISTRAL_AI_API_KEY"), "spring.ai.openai.chat.base-url=https://api.mistral.ai") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .withUserConfiguration(Config.class); @Test diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java index d7a46ece4ee..58bd9e84cc6 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusPromptIT.java @@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.autoconfigure.mistralai.MistralAiAutoConfiguration; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -46,7 +47,8 @@ public class PaymentStatusPromptIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.mistralai.apiKey=" + System.getenv("MISTRAL_AI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)); + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)); public record Transaction(@JsonProperty(required = true, value = "transaction_id") String id) { } diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/WeatherServicePromptIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/WeatherServicePromptIT.java index 915c378f008..6bf052f5697 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/WeatherServicePromptIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/WeatherServicePromptIT.java @@ -29,6 +29,7 @@ import org.springframework.ai.autoconfigure.mistralai.MistralAiAutoConfiguration; import org.springframework.ai.autoconfigure.mistralai.tool.WeatherServicePromptIT.MyWeatherService.Request; import org.springframework.ai.autoconfigure.mistralai.tool.WeatherServicePromptIT.MyWeatherService.Response; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -54,7 +55,8 @@ public class WeatherServicePromptIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.mistralai.api-key=" + System.getenv("MISTRAL_AI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)); + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, MistralAiAutoConfiguration.class)); @Test void promptFunctionCall() { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java index 2561279f91f..41bbfb8c7b1 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfigurationIT.java @@ -31,6 +31,7 @@ import org.springframework.core.io.Resource; import reactor.core.publisher.Flux; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.embedding.EmbeddingResponse; import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; @@ -49,7 +50,8 @@ public class OpenAiAutoConfigurationIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.apiKey=" + System.getenv("OPENAI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)); + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)); @Test void generate() { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java index 0eb67dd6c7b..e14a6a562de 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/OpenAiPropertiesTests.java @@ -19,6 +19,7 @@ import org.skyscreamer.jsonassert.JSONAssert; import org.skyscreamer.jsonassert.JSONCompareMode; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.openai.OpenAiChatClient; import org.springframework.ai.openai.OpenAiEmbeddingClient; import org.springframework.ai.openai.OpenAiImageClient; @@ -52,7 +53,8 @@ public void chatProperties() { "spring.ai.openai.chat.options.model=MODEL_XYZ", "spring.ai.openai.chat.options.temperature=0.55") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var chatProperties = context.getBean(OpenAiChatProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -78,7 +80,8 @@ public void transcriptionProperties() { "spring.ai.openai.audio.transcription.options.model=MODEL_XYZ", "spring.ai.openai.audio.transcription.options.temperature=0.55") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var transcriptionProperties = context.getBean(OpenAiAudioTranscriptionProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -106,7 +109,8 @@ public void chatOverrideConnectionProperties() { "spring.ai.openai.chat.options.model=MODEL_XYZ", "spring.ai.openai.chat.options.temperature=0.55") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var chatProperties = context.getBean(OpenAiChatProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -134,7 +138,8 @@ public void transcriptionOverrideConnectionProperties() { "spring.ai.openai.audio.transcription.options.model=MODEL_XYZ", "spring.ai.openai.audio.transcription.options.temperature=0.55") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var transcriptionProperties = context.getBean(OpenAiAudioTranscriptionProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -159,7 +164,8 @@ public void embeddingProperties() { "spring.ai.openai.api-key=abc123", "spring.ai.openai.embedding.options.model=MODEL_XYZ") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var embeddingProperties = context.getBean(OpenAiEmbeddingProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -185,7 +191,8 @@ public void embeddingOverrideConnectionProperties() { "spring.ai.openai.embedding.api-key=456", "spring.ai.openai.embedding.options.model=MODEL_XYZ") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var embeddingProperties = context.getBean(OpenAiEmbeddingProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -209,7 +216,8 @@ public void imageProperties() { "spring.ai.openai.image.options.model=MODEL_XYZ", "spring.ai.openai.image.options.n=3") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var imageProperties = context.getBean(OpenAiImageProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -236,7 +244,8 @@ public void imageOverrideConnectionProperties() { "spring.ai.openai.image.options.model=MODEL_XYZ", "spring.ai.openai.image.options.n=3") // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var imageProperties = context.getBean(OpenAiImageProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -304,7 +313,8 @@ public void chatOptionsTest() { "spring.ai.openai.chat.options.user=userXYZ" ) // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var chatProperties = context.getBean(OpenAiChatProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -357,7 +367,8 @@ public void transcriptionOptionsTest() { "spring.ai.openai.audio.transcription.options.temperature=0.55" ) // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var transcriptionProperties = context.getBean(OpenAiAudioTranscriptionProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -390,7 +401,8 @@ public void embeddingOptionsTest() { "spring.ai.openai.embedding.options.user=userXYZ" ) // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var connectionProperties = context.getBean(OpenAiConnectionProperties.class); var embeddingProperties = context.getBean(OpenAiEmbeddingProperties.class); @@ -422,7 +434,8 @@ public void imageOptionsTest() { "spring.ai.openai.image.options.user=userXYZ" ) // @formatter:on - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { var imageProperties = context.getBean(OpenAiImageProperties.class); var connectionProperties = context.getBean(OpenAiConnectionProperties.class); @@ -448,7 +461,8 @@ void embeddingActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL", "spring.ai.openai.embedding.enabled=false") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiEmbeddingProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiEmbeddingClient.class)).isEmpty(); @@ -456,7 +470,8 @@ void embeddingActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiEmbeddingProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiEmbeddingClient.class)).isNotEmpty(); @@ -465,7 +480,8 @@ void embeddingActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL", "spring.ai.openai.embedding.enabled=true") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiEmbeddingProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiEmbeddingClient.class)).isNotEmpty(); @@ -477,7 +493,8 @@ void chatActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL", "spring.ai.openai.chat.enabled=false") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiChatProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiChatClient.class)).isEmpty(); @@ -485,7 +502,8 @@ void chatActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiChatProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiChatClient.class)).isNotEmpty(); @@ -494,7 +512,8 @@ void chatActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL", "spring.ai.openai.chat.enabled=true") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiChatProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiChatClient.class)).isNotEmpty(); @@ -507,7 +526,8 @@ void imageActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL", "spring.ai.openai.image.enabled=false") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiImageProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiImageClient.class)).isEmpty(); @@ -515,7 +535,8 @@ void imageActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiImageProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiImageClient.class)).isNotEmpty(); @@ -524,7 +545,8 @@ void imageActivation() { new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.api-key=API_KEY", "spring.ai.openai.base-url=TEST_BASE_URL", "spring.ai.openai.image.enabled=true") - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .run(context -> { assertThat(context.getBeansOfType(OpenAiImageProperties.class)).isNotEmpty(); assertThat(context.getBeansOfType(OpenAiImageClient.class)).isNotEmpty(); diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java index a5c0574b448..09e17abe5e5 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java @@ -23,6 +23,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -42,7 +43,8 @@ public class FunctionCallbackInPromptIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.apiKey=" + System.getenv("OPENAI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)); + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)); @Test void functionCallTest() { 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 279afbb4be3..598676beeb2 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 @@ -24,6 +24,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -47,7 +48,8 @@ class FunctionCallbackWithPlainFunctionBeanIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.apiKey=" + System.getenv("OPENAI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .withUserConfiguration(Config.class); @Test diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java index df1f6a33276..9a4e70072dd 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java @@ -23,6 +23,7 @@ import org.slf4j.LoggerFactory; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; +import org.springframework.ai.autoconfigure.retry.SpringAiRetryAutoConfiguration; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; @@ -45,7 +46,8 @@ public class FunctionCallbackWrapperIT { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withPropertyValues("spring.ai.openai.apiKey=" + System.getenv("OPENAI_API_KEY")) - .withConfiguration(AutoConfigurations.of(RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, + RestClientAutoConfiguration.class, OpenAiAutoConfiguration.class)) .withUserConfiguration(Config.class); @Test diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfigurationIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfigurationIT.java new file mode 100644 index 00000000000..f15e605fc50 --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfigurationIT.java @@ -0,0 +1,44 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.autoconfigure.retry; + +import org.junit.jupiter.api.Test; + +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.retry.support.RetryTemplate; +import org.springframework.web.client.ResponseErrorHandler; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Christian Tzolov + */ +public class SpringAiRetryAutoConfigurationIT { + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().withConfiguration( + AutoConfigurations.of(SpringAiRetryAutoConfiguration.class, RestClientAutoConfiguration.class)); + + @Test + void testRetryAutoConfiguration() { + this.contextRunner.run((context) -> { + assertThat(context).hasSingleBean(RetryTemplate.class); + assertThat(context).hasSingleBean(ResponseErrorHandler.class); + }); + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java new file mode 100644 index 00000000000..812edbbf23f --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java @@ -0,0 +1,75 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.autoconfigure.retry; + +import org.junit.jupiter.api.Test; + +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Unit Tests for {@link SpringAiRetryProperties}. + * + * @author Christian Tzolov + */ +public class SpringAiRetryPropertiesTests { + + @Test + public void retryDefaultProperties() { + + new ApplicationContextRunner().withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class)) + .run(context -> { + var retryProperties = context.getBean(SpringAiRetryProperties.class); + + assertThat(retryProperties.getMaxAttempts()).isEqualTo(10); + assertThat(retryProperties.isOnClientErrors()).isFalse(); // do not retry + // on 4xx + // errors + assertThat(retryProperties.getOnHttpCodes()).isEmpty(); + assertThat(retryProperties.getBackoff().getInitialInterval().toMillis()).isEqualTo(2000); + assertThat(retryProperties.getBackoff().getMultiplier()).isEqualTo(5); + assertThat(retryProperties.getBackoff().getMaxInterval().toMillis()).isEqualTo(3 * 60000); + }); + } + + @Test + public void retryCustomProperties() { + + new ApplicationContextRunner().withPropertyValues( + // @formatter:off + "spring.ai.retry.max-attempts=100", + "spring.ai.retry.on-client-errors=false", + "spring.ai.retry.on-http-codes=404,500", + "spring.ai.retry.backoff.initial-interval=1000", + "spring.ai.retry.backoff.multiplier=2", + "spring.ai.retry.backoff.max-interval=60000" ) + // @formatter:on + .withConfiguration(AutoConfigurations.of(SpringAiRetryAutoConfiguration.class)) + .run(context -> { + var retryProperties = context.getBean(SpringAiRetryProperties.class); + + assertThat(retryProperties.getMaxAttempts()).isEqualTo(100); + assertThat(retryProperties.isOnClientErrors()).isFalse(); + assertThat(retryProperties.getOnHttpCodes()).containsExactly(404, 500); + assertThat(retryProperties.getBackoff().getInitialInterval().toMillis()).isEqualTo(1000); + assertThat(retryProperties.getBackoff().getMultiplier()).isEqualTo(2); + assertThat(retryProperties.getBackoff().getMaxInterval().toMillis()).isEqualTo(60000); + }); + } + +} From f7293ce893b026f8e11fb4a7f1adc53b5f7d9829 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Thu, 7 Mar 2024 19:42:16 +0100 Subject: [PATCH 14/39] Resolve OpenAiApi initialization bug --- .../main/java/org/springframework/ai/openai/api/OpenAiApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 795014139cd..b105d8824bb 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 @@ -97,7 +97,7 @@ public OpenAiApi(String baseUrl, String openAiToken, RestClient.Builder restClie this.restClient = restClientBuilder .baseUrl(baseUrl) .defaultHeaders(ApiUtils.getJsonContentHeaders(openAiToken)) - .defaultStatusHandler(RetryUtils.DEFAULT_RESPONSE_ERROR_HANDLER) + .defaultStatusHandler(responseErrorHandler) .build(); this.webClient = WebClient.builder() From 8fe6705efbb9fb2680694ecb2d2c699269d2d940 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 07:08:30 +0100 Subject: [PATCH 15/39] Adjust the retry properties names and documentation --- .../pages/api/clients/image/openai-image.adoc | 11 +++++++--- .../pages/api/clients/mistralai-chat.adoc | 12 ++++++++--- .../ROOT/pages/api/clients/openai-chat.adoc | 11 ++++++++-- .../api/embeddings/mistralai-embeddings.adoc | 20 +++++++++++++++++++ .../api/embeddings/openai-embeddings.adoc | 10 +++++++++- .../retry/SpringAiRetryAutoConfiguration.java | 4 ++-- .../retry/SpringAiRetryProperties.java | 20 +++++++++++-------- .../retry/SpringAiRetryPropertiesTests.java | 6 +++--- 8 files changed, 72 insertions(+), 22 deletions(-) diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc index 0846515f306..d4f378ba97e 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/image/openai-image.adoc @@ -41,7 +41,9 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Image Generation Properties -The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. +==== Retry Properties + +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Image client. [cols="3,5,1"] |==== @@ -51,10 +53,11 @@ The prefix `spring.ai.retry` is used as the property prefix that lets you config | spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. | spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 | spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. -| spring.ai.retry.on-client-errors | If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx client error codes | false -| spring.ai.retry.on-http-codes | List of HTTP Error Code to include for retry | empty +| spring.ai.retry.on-client-errors | If false, throw a NonTransientAiException, and do not attempt retry for `4xx` client error codes | false +| spring.ai.retry.exclude-on-http-codes | List of HTTP status codes that should not trigger a retry (e.g. to throw NonTransientAiException). | empty |==== +==== Connection Properties The prefix `spring.ai.openai` is used as the property prefix that lets you connect to OpenAI. @@ -65,6 +68,8 @@ The prefix `spring.ai.openai` is used as the property prefix that lets you conne | spring.ai.openai.api-key | The API Key | - |==== +==== Configuration Properties + The prefix `spring.ai.openai.image` is the property prefix that lets you configure the `ImageClient` implementation for OpenAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc index 8166855302a..0df388c917c 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/mistralai-chat.adoc @@ -49,7 +49,9 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Chat Properties -The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. +==== Retry Properties + +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the Mistral AI Chat client. [cols="3,5,1"] |==== @@ -59,10 +61,12 @@ The prefix `spring.ai.retry` is used as the property prefix that lets you config | spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. | spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 | spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. -| spring.ai.retry.on-client-errors | If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx client error codes | false -| spring.ai.retry.on-http-codes | List of HTTP Error Code to include for retry | empty +| spring.ai.retry.on-client-errors | If false, throw a NonTransientAiException, and do not attempt retry for `4xx` client error codes | false +| spring.ai.retry.exclude-on-http-codes | List of HTTP status codes that should not trigger a retry (e.g. to throw NonTransientAiException). | empty |==== +==== Connection Properties + The prefix `spring.ai.mistralai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] @@ -73,6 +77,8 @@ The prefix `spring.ai.mistralai` is used as the property prefix that lets you co | spring.ai.mistralai.api-key | The API Key | - |==== +==== Configuration Properties + The prefix `spring.ai.mistralai.chat` is the property prefix that lets you configure the chat client implementation for MistralAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc index 63828c6d5b6..a9303495edc 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/clients/openai-chat.adoc @@ -49,6 +49,8 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Chat Properties +==== Retry Properties + The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. [cols="3,5,1"] @@ -59,10 +61,12 @@ The prefix `spring.ai.retry` is used as the property prefix that lets you config | spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. | spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 | spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. -| spring.ai.retry.on-client-errors | If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx client error codes | false -| spring.ai.retry.on-http-codes | List of HTTP Error Code to include for retry | empty +| spring.ai.retry.on-client-errors | If false, throw a NonTransientAiException, and do not attempt retry for `4xx` client error codes | false +| spring.ai.retry.exclude-on-http-codes | List of HTTP status codes that should not trigger a retry (e.g. to throw NonTransientAiException). | empty |==== +==== Connection Properties + The prefix `spring.ai.openai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] @@ -73,6 +77,9 @@ The prefix `spring.ai.openai` is used as the property prefix that lets you conne | spring.ai.openai.api-key | The API Key | - |==== + +==== Configuration Properties + The prefix `spring.ai.openai.chat` is the property prefix that lets you configure the chat client implementation for OpenAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/mistralai-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/mistralai-embeddings.adoc index 3c0379eecc9..8cc14e6426d 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/mistralai-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/mistralai-embeddings.adoc @@ -49,6 +49,24 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Embedding Properties +==== Retry Properties + +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the Mistral AI Embedding client. + +[cols="3,5,1"] +|==== +| Property | Description | Default + +| spring.ai.retry.max-attempts | Maximum number of retry attempts. | 10 +| spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. +| spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 +| spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +| spring.ai.retry.on-client-errors | If false, throw a NonTransientAiException, and do not attempt retry for `4xx` client error codes | false +| spring.ai.retry.exclude-on-http-codes | List of HTTP status codes that should not trigger a retry (e.g. to throw NonTransientAiException). | empty +|==== + +==== Connection Properties + The prefix `spring.ai.mistralai` is used as the property prefix that lets you connect to MistralAI. [cols="3,5,1"] @@ -59,6 +77,8 @@ The prefix `spring.ai.mistralai` is used as the property prefix that lets you co | spring.ai.mistralai.api-key | The API Key | - |==== +==== Configuration Properties + The prefix `spring.ai.mistralai.embedding` is property prefix that configures the `EmbeddingClient` implementation for MistralAI. [cols="3,5,1"] diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc index 57f19e66b36..f61b1bf92ee 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/embeddings/openai-embeddings.adoc @@ -50,7 +50,9 @@ TIP: Refer to the xref:getting-started.adoc#dependency-management[Dependency Man === Embedding Properties -The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Chat client. +==== Retry Properties + +The prefix `spring.ai.retry` is used as the property prefix that lets you configure the retry mechanism for the OpenAI Embedding client. [cols="3,5,1"] |==== @@ -60,8 +62,12 @@ The prefix `spring.ai.retry` is used as the property prefix that lets you config | spring.ai.retry.backoff.initial-interval | Initial sleep duration for the exponential backoff policy. | 2 sec. | spring.ai.retry.backoff.multiplier | Backoff interval multiplier. | 5 | spring.ai.retry.backoff.max-interval | Maximum backoff duration. | 3 min. +| spring.ai.retry.on-client-errors | If false, throw a NonTransientAiException, and do not attempt retry for `4xx` client error codes | false +| spring.ai.retry.exclude-on-http-codes | List of HTTP status codes that should not trigger a retry (e.g. to throw NonTransientAiException). | empty |==== +==== Connection Properties + The prefix `spring.ai.openai` is used as the property prefix that lets you connect to OpenAI. [cols="3,5,1"] @@ -72,6 +78,8 @@ The prefix `spring.ai.openai` is used as the property prefix that lets you conne | spring.ai.openai.api-key | The API Key | - |==== +==== Configuration Properties + The prefix `spring.ai.openai.embedding` is property prefix that configures the `EmbeddingClient` implementation for OpenAI. [cols="3,5,1"] diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java index c3659d65e6f..df0b43d23bc 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryAutoConfiguration.java @@ -95,8 +95,8 @@ public void handleError(@NonNull ClientHttpResponse response) throws IOException throw new NonTransientAiException(message); } // Explicitly configured non-transient codes - if (!CollectionUtils.isEmpty(properties.getOnHttpCodes()) - && properties.getOnHttpCodes().contains(response.getStatusCode().value())) { + if (!CollectionUtils.isEmpty(properties.getExcludeOnHttpCodes()) + && properties.getExcludeOnHttpCodes().contains(response.getStatusCode().value())) { throw new NonTransientAiException(message); } throw new TransientAiException(message); diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java index bbbd0f4e16d..1f70659d4fb 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryProperties.java @@ -42,13 +42,17 @@ public class SpringAiRetryProperties { private Backoff backoff = new Backoff(); /** - * If true, do not throw a NonTransientAiException, and do not attempt retry for 4xx - * client error codes false by default. - * + * If false, throw a NonTransientAiException, and do not attempt retry for 4xx client + * error codes. False by default. If true, throw a TransientAiException, and attempt + * retry for 4xx client. */ private boolean onClientErrors = false; - private List onHttpCodes = new ArrayList<>(); + /** + * List of HTTP status codes that should not trigger a retry (e.g. throw + * NonTransientAiException). + */ + private List excludeOnHttpCodes = new ArrayList<>(); /** * Exponential Backoff properties. @@ -108,12 +112,12 @@ public Backoff getBackoff() { return this.backoff; } - public List getOnHttpCodes() { - return this.onHttpCodes; + public List getExcludeOnHttpCodes() { + return this.excludeOnHttpCodes; } - public void setOnHttpCodes(List onHttpCodes) { - this.onHttpCodes = onHttpCodes; + public void setExcludeOnHttpCodes(List onHttpCodes) { + this.excludeOnHttpCodes = onHttpCodes; } public boolean isOnClientErrors() { diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java index 812edbbf23f..eba635f5923 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/retry/SpringAiRetryPropertiesTests.java @@ -40,7 +40,7 @@ public void retryDefaultProperties() { assertThat(retryProperties.isOnClientErrors()).isFalse(); // do not retry // on 4xx // errors - assertThat(retryProperties.getOnHttpCodes()).isEmpty(); + assertThat(retryProperties.getExcludeOnHttpCodes()).isEmpty(); assertThat(retryProperties.getBackoff().getInitialInterval().toMillis()).isEqualTo(2000); assertThat(retryProperties.getBackoff().getMultiplier()).isEqualTo(5); assertThat(retryProperties.getBackoff().getMaxInterval().toMillis()).isEqualTo(3 * 60000); @@ -54,7 +54,7 @@ public void retryCustomProperties() { // @formatter:off "spring.ai.retry.max-attempts=100", "spring.ai.retry.on-client-errors=false", - "spring.ai.retry.on-http-codes=404,500", + "spring.ai.retry.exclude-on-http-codes=404,500", "spring.ai.retry.backoff.initial-interval=1000", "spring.ai.retry.backoff.multiplier=2", "spring.ai.retry.backoff.max-interval=60000" ) @@ -65,7 +65,7 @@ public void retryCustomProperties() { assertThat(retryProperties.getMaxAttempts()).isEqualTo(100); assertThat(retryProperties.isOnClientErrors()).isFalse(); - assertThat(retryProperties.getOnHttpCodes()).containsExactly(404, 500); + assertThat(retryProperties.getExcludeOnHttpCodes()).containsExactly(404, 500); assertThat(retryProperties.getBackoff().getInitialInterval().toMillis()).isEqualTo(1000); assertThat(retryProperties.getBackoff().getMultiplier()).isEqualTo(2); assertThat(retryProperties.getBackoff().getMaxInterval().toMillis()).isEqualTo(60000); From 0187c873fff93aac5dfa3528cb0529014b0fd539 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 09:43:15 +0100 Subject: [PATCH 16/39] Use platform independent line separators --- .../ai/reader/pdf/PagePdfDocumentReaderTests.java | 2 +- .../ai/bedrock/MessageToPromptConverter.java | 4 ++-- .../api/Ai21Jurassic2ChatBedrockApiIT.java | 2 +- .../bedrock/titan/api/TitanChatBedrockApiIT.java | 5 +++-- .../ai/ollama/api/OllamaApiIT.java | 2 +- .../springframework/ai/openai/acme/AcmeIT.java | 4 +++- .../vertexai/gemini/VertexAiGeminiChatClient.java | 2 +- .../vertexai/palm2/VertexAiPaLm2ChatClient.java | 2 +- .../ai/document/DefaultContentFormatter.java | 2 +- .../ai/parser/BeanOutputParser.java | 4 ++-- .../transformer/splitter/TokenTextSplitter.java | 5 +++-- .../ai/parser/BeanOutputParserTest.java | 2 +- ...ureAiSearchFilterExpressionConverterTests.java | 2 +- .../ai/vectorstore/WeaviateVectorStore.java | 15 +++++++++------ .../WeaviateFilterExpressionConverterTests.java | 2 +- 15 files changed, 31 insertions(+), 24 deletions(-) diff --git a/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/PagePdfDocumentReaderTests.java b/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/PagePdfDocumentReaderTests.java index a3f7d9ac6b0..f42d7ef3d2a 100644 --- a/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/PagePdfDocumentReaderTests.java +++ b/document-readers/pdf-reader/src/test/java/org/springframework/ai/reader/pdf/PagePdfDocumentReaderTests.java @@ -50,7 +50,7 @@ public void classpathRead() { assertThat(docs).hasSize(4); - String allText = docs.stream().map(d -> d.getContent()).collect(Collectors.joining("\n")); + String allText = docs.stream().map(d -> d.getContent()).collect(Collectors.joining(System.lineSeparator())); assertThat(allText).doesNotContain( List.of("Page 1 of 4", "Page 2 of 4", "Page 3 of 4", "Page 4 of 4", "PDF Bookmark Sample")); diff --git a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java index d2549fd55e2..0153b9046f0 100644 --- a/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java +++ b/models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/MessageToPromptConverter.java @@ -59,13 +59,13 @@ public String toPrompt(List messages) { final String systemMessages = messages.stream() .filter(message -> message.getMessageType() == MessageType.SYSTEM) .map(Message::getContent) - .collect(Collectors.joining("\n")); + .collect(Collectors.joining(System.lineSeparator())); final String userMessages = messages.stream() .filter(message -> message.getMessageType() == MessageType.USER || message.getMessageType() == MessageType.ASSISTANT) .map(this::messageToString) - .collect(Collectors.joining("\n")); + .collect(Collectors.joining(System.lineSeparator())); final String prompt = String.format("%s%n%n%s%n%s", systemMessages, userMessages, ASSISTANT_PROMPT); diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApiIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApiIT.java index aaf9f7563ed..6b58cb77277 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApiIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/api/Ai21Jurassic2ChatBedrockApiIT.java @@ -54,7 +54,7 @@ public void chatCompletion() { String responseContent = response.completions() .stream() .map(c -> c.data().text()) - .collect(Collectors.joining("\n")); + .collect(Collectors.joining(System.lineSeparator())); assertThat(responseContent).contains("Blackbeard"); } diff --git a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApiIT.java b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApiIT.java index f47026f80b8..c60ce5dfc25 100644 --- a/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApiIT.java +++ b/models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/api/TitanChatBedrockApiIT.java @@ -59,8 +59,9 @@ public void chatCompletionStream() { Flux response = titanBedrockApi.chatCompletionStream(titanChatRequest); List results = response.collectList().block(); - assertThat(results.stream().map(TitanChatResponseChunk::outputText).collect(Collectors.joining("\n"))) - .contains("Blackbeard"); + assertThat(results.stream() + .map(TitanChatResponseChunk::outputText) + .collect(Collectors.joining(System.lineSeparator()))).contains("Blackbeard"); } } 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 e3164431720..48319596c25 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 @@ -128,7 +128,7 @@ public void streamingChat() { assertThat(responses.stream() .filter(r -> r.message() != null) .map(r -> r.message().content()) - .collect(Collectors.joining("\n"))).contains("Sofia"); + .collect(Collectors.joining(System.lineSeparator()))).contains("Sofia"); ChatResponse lastResponse = responses.get(responses.size() - 1); assertThat(lastResponse.message().content()).isEmpty(); diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/acme/AcmeIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/acme/AcmeIT.java index b5990b638db..e38595b90e2 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/acme/AcmeIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/acme/AcmeIT.java @@ -115,7 +115,9 @@ void acmeChain() { private Message getSystemMessage(List similarDocuments) { - String documents = similarDocuments.stream().map(entry -> entry.getContent()).collect(Collectors.joining("\n")); + String documents = similarDocuments.stream() + .map(entry -> entry.getContent()) + .collect(Collectors.joining(System.lineSeparator())); SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemBikePrompt); Message systemMessage = systemPromptTemplate.createMessage(Map.of("documents", documents)); diff --git a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java index 9ab28f3ef2f..2a742d3cdcb 100644 --- a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java +++ b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatClient.java @@ -293,7 +293,7 @@ private List toGeminiContent(Prompt prompt) { .stream() .filter(m -> m.getMessageType() == MessageType.SYSTEM) .map(m -> m.getContent()) - .collect(Collectors.joining("\n")); + .collect(Collectors.joining(System.lineSeparator())); List contents = prompt.getInstructions() .stream() diff --git a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatClient.java b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatClient.java index 212293f3f9c..67109761595 100644 --- a/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatClient.java +++ b/models/spring-ai-vertex-ai-palm2/src/main/java/org/springframework/ai/vertexai/palm2/VertexAiPaLm2ChatClient.java @@ -78,7 +78,7 @@ GenerateMessageRequest createRequest(Prompt prompt) { .stream() .filter(m -> m.getMessageType() == MessageType.SYSTEM) .map(m -> m.getContent()) - .collect(Collectors.joining("\n")); + .collect(Collectors.joining(System.lineSeparator())); List vertexMessages = prompt.getInstructions() .stream() diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java b/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java index ad4e300cd06..7db065225ab 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java @@ -43,7 +43,7 @@ public class DefaultContentFormatter implements ContentFormatter { private static final String DEFAULT_METADATA_TEMPLATE = String.format("%s: %s", TEMPLATE_KEY_PLACEHOLDER, TEMPLATE_VALUE_PLACEHOLDER); - private static final String DEFAULT_METADATA_SEPARATOR = "\n"; + private static final String DEFAULT_METADATA_SEPARATOR = System.lineSeparator(); private static final String DEFAULT_TEXT_TEMPLATE = String.format("%s\n\n%s", TEMPLATE_METADATA_STRING_PLACEHOLDER, TEMPLATE_CONTENT_PLACEHOLDER); diff --git a/spring-ai-core/src/main/java/org/springframework/ai/parser/BeanOutputParser.java b/spring-ai-core/src/main/java/org/springframework/ai/parser/BeanOutputParser.java index 16bf1c03c54..7be67324d44 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/parser/BeanOutputParser.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/parser/BeanOutputParser.java @@ -89,8 +89,8 @@ private void generateSchema() { SchemaGeneratorConfig config = configBuilder.build(); SchemaGenerator generator = new SchemaGenerator(config); JsonNode jsonNode = generator.generateSchema(this.clazz); - ObjectWriter objectWriter = new ObjectMapper() - .writer(new DefaultPrettyPrinter().withObjectIndenter(new DefaultIndenter().withLinefeed("\n"))); + ObjectWriter objectWriter = new ObjectMapper().writer(new DefaultPrettyPrinter() + .withObjectIndenter(new DefaultIndenter().withLinefeed(System.lineSeparator()))); try { this.jsonSchema = objectWriter.writeValueAsString(jsonNode); } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java b/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java index d8b3bb7eea6..c816c00fa17 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java @@ -88,7 +88,8 @@ public List split(String text, int chunkSize) { chunkText = chunkText.substring(0, lastPunctuation + 1); } - String chunk_text_to_append = (this.keepSeparator) ? chunkText.trim() : chunkText.replace("\n", " ").trim(); + String chunk_text_to_append = (this.keepSeparator) ? chunkText.trim() + : chunkText.replace(System.lineSeparator(), " ").trim(); if (chunk_text_to_append.length() > this.minChunkLengthToEmbed) { chunks.add(chunk_text_to_append); } @@ -101,7 +102,7 @@ public List split(String text, int chunkSize) { // Handle the remaining tokens if (!tokens.isEmpty()) { - String remaining_text = decodeTokens(tokens).replace("\n", " ").trim(); + String remaining_text = decodeTokens(tokens).replace(System.lineSeparator(), " ").trim(); if (remaining_text.length() > this.minChunkLengthToEmbed) { chunks.add(remaining_text); } diff --git a/spring-ai-core/src/test/java/org/springframework/ai/parser/BeanOutputParserTest.java b/spring-ai-core/src/test/java/org/springframework/ai/parser/BeanOutputParserTest.java index 4bcf5e9a13c..8df495e4008 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/parser/BeanOutputParserTest.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/parser/BeanOutputParserTest.java @@ -123,7 +123,7 @@ void normalizesLineEndings() { String formatOutput = parser.getFormat(); // validate that output contains \n line endings - assertThat(formatOutput).contains("\n").doesNotContain("\r\n").doesNotContain("\r"); + assertThat(formatOutput).contains(System.lineSeparator()).doesNotContain("\r\n").doesNotContain("\r"); } } diff --git a/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverterTests.java b/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverterTests.java index 8d18cdb058e..65d67fcc651 100644 --- a/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverterTests.java +++ b/vector-stores/spring-ai-azure/src/test/java/org/springframework/ai/vectorstore/azure/AzureAiSearchFilterExpressionConverterTests.java @@ -44,7 +44,7 @@ public class AzureAiSearchFilterExpressionConverterTests { private static String format(String text) { - return text.trim().replace(" " + System.lineSeparator(), System.lineSeparator()) + "\n"; + return text.trim().replace(" " + System.lineSeparator(), System.lineSeparator()) + System.lineSeparator(); } @Test diff --git a/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateVectorStore.java b/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateVectorStore.java index f1024df9d0f..d686db95868 100644 --- a/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateVectorStore.java +++ b/vector-stores/spring-ai-weaviate/src/main/java/org/springframework/ai/vectorstore/WeaviateVectorStore.java @@ -400,7 +400,7 @@ public void add(List documents) { .getMessages() .stream() .map(wm -> wm.getMessage()) - .collect(Collectors.joining("\n"))); + .collect(Collectors.joining(System.lineSeparator()))); throw new RuntimeException("Failed to add documents because: \n" + errorMessages); } @@ -408,8 +408,10 @@ public void add(List documents) { for (var r : response.getResult()) { if (r.getResult() != null && r.getResult().getErrors() != null) { var error = r.getResult().getErrors(); - errorMessages - .add(error.getError().stream().map(e -> e.getMessage()).collect(Collectors.joining("\n"))); + errorMessages.add(error.getError() + .stream() + .map(e -> e.getMessage()) + .collect(Collectors.joining(System.lineSeparator()))); } } } @@ -515,13 +517,14 @@ public List similaritySearch(SearchRequest request) { .getMessages() .stream() .map(WeaviateErrorMessage::getMessage) - .collect(Collectors.joining("\n"))); + .collect(Collectors.joining(System.lineSeparator()))); } GraphQLError[] errors = result.getResult().getErrors(); if (errors != null && errors.length > 0) { - throw new IllegalArgumentException( - Arrays.stream(errors).map(GraphQLError::getMessage).collect(Collectors.joining("\n"))); + throw new IllegalArgumentException(Arrays.stream(errors) + .map(GraphQLError::getMessage) + .collect(Collectors.joining(System.lineSeparator()))); } @SuppressWarnings("unchecked") diff --git a/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverterTests.java b/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverterTests.java index 0e9691adae5..fc004b3e165 100644 --- a/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverterTests.java +++ b/vector-stores/spring-ai-weaviate/src/test/java/org/springframework/ai/vectorstore/WeaviateFilterExpressionConverterTests.java @@ -42,7 +42,7 @@ public class WeaviateFilterExpressionConverterTests { private static String format(String text) { - return text.trim().replace(" " + System.lineSeparator(), System.lineSeparator()) + "\n"; + return text.trim().replace(" " + System.lineSeparator(), System.lineSeparator()) + System.lineSeparator(); } @Test From d23065eb427b52f7906061e499725de828fcecfd Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 10:12:47 +0100 Subject: [PATCH 17/39] Move the maven license plugin into a 'license' profile --- README.md | 9 +++++++-- pom.xml | 27 +++++++++++++++++++-------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 47d9ff940a0..5e8eda7cde3 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ You can find more details in the [Reference Documentation](https://docs.spring.i Spring AI supports many AI models. For an overview see here. Specific models currently supported are * OpenAI -* +* **Prompts:** Central to AI model interaction is the Prompt, which provides specific instructions for the AI to act upon. @@ -196,5 +196,10 @@ To reformat using the [java-format plugin](https://github.com/spring-io/spring-j To update the year on license headers using the [license-maven-plugin](https://oss.carbou.me/license-maven-plugin/#goals) ```shell -./mvnw license:update-file-header +./mvnw license:update-file-header -Plicense +``` + +To check javadocs using the [javadoc:javadoc](https://maven.apache.org/plugins/maven-javadoc-plugin/) +```shell +./mvnw javadoc:javadoc -Pjavadoc ``` \ No newline at end of file diff --git a/pom.xml b/pom.xml index da31f6831f7..ef937b3b32f 100644 --- a/pom.xml +++ b/pom.xml @@ -262,6 +262,22 @@ + org.apache.maven.plugins + maven-deploy-plugin + ${maven-deploy-plugin.version} + + + + + + + license + + false + + + + com.mycila license-maven-plugin 4.1 @@ -327,15 +343,10 @@ limitations under the License. - - org.apache.maven.plugins - maven-deploy-plugin - ${maven-deploy-plugin.version} - - - - + + + javadoc From 77eb2ff51961c870a1142907681b946c0f4286b4 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 10:28:19 +0100 Subject: [PATCH 18/39] Update auto-configure classes to return the most specific class types This allows to bootstrap multiple instances for AI clients or vectors stores in the same application context. --- .../ai/autoconfigure/openai/OpenAiAutoConfiguration.java | 2 +- .../postgresml/PostgresMlAutoConfiguration.java | 3 +-- .../azure/AzureVectorStoreAutoConfiguration.java | 3 +-- .../chroma/ChromaVectorStoreAutoConfiguration.java | 7 +++---- .../milvus/MilvusVectorStoreAutoConfiguration.java | 3 +-- .../neo4j/Neo4jVectorStoreAutoConfiguration.java | 4 ++-- .../pinecone/PineconeVectorStoreAutoConfiguration.java | 3 +-- .../qdrant/QdrantVectorStoreAutoConfiguration.java | 3 +-- .../redis/RedisVectorStoreAutoConfiguration.java | 3 +-- .../weaviate/WeaviateVectorStoreAutoConfiguration.java | 3 +-- 10 files changed, 13 insertions(+), 21 deletions(-) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java index b9899440641..d5245914260 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAutoConfiguration.java @@ -75,7 +75,7 @@ public OpenAiChatClient openAiChatClient(OpenAiConnectionProperties commonProper @ConditionalOnMissingBean @ConditionalOnProperty(prefix = OpenAiEmbeddingProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) - public EmbeddingClient openAiEmbeddingClient(OpenAiConnectionProperties commonProperties, + public OpenAiEmbeddingClient openAiEmbeddingClient(OpenAiConnectionProperties commonProperties, OpenAiEmbeddingProperties embeddingProperties, RestClient.Builder restClientBuilder, RetryTemplate retryTemplate, ResponseErrorHandler responseErrorHandler) { diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfiguration.java index 0dfda92f397..78ac62dc4ea 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/postgresml/PostgresMlAutoConfiguration.java @@ -15,7 +15,6 @@ */ package org.springframework.ai.autoconfigure.postgresml; -import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.postgresml.PostgresMlEmbeddingClient; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -41,7 +40,7 @@ public class PostgresMlAutoConfiguration { @ConditionalOnMissingBean @ConditionalOnProperty(prefix = PostgresMlEmbeddingProperties.CONFIG_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true) - public EmbeddingClient postgresMlEmbeddingClient(JdbcTemplate jdbcTemplate, + public PostgresMlEmbeddingClient postgresMlEmbeddingClient(JdbcTemplate jdbcTemplate, PostgresMlEmbeddingProperties embeddingProperties) { return new PostgresMlEmbeddingClient(jdbcTemplate, embeddingProperties.getOptions()); diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java index 2f8387f40f5..4ab9fb74ba7 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/azure/AzureVectorStoreAutoConfiguration.java @@ -21,7 +21,6 @@ import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.vectorstore.azure.AzureVectorStore; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -48,7 +47,7 @@ public SearchIndexClient searchIndexClient(AzureVectorStoreProperties properties @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(SearchIndexClient searchIndexClient, EmbeddingClient embeddingClient, + public AzureVectorStore vectorStore(SearchIndexClient searchIndexClient, EmbeddingClient embeddingClient, AzureVectorStoreProperties properties) { var vectorStore = new AzureVectorStore(searchIndexClient, embeddingClient); diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java index fd2662ce4f6..392ce9160ad 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/chroma/ChromaVectorStoreAutoConfiguration.java @@ -17,15 +17,14 @@ import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.ai.chroma.ChromaApi; import org.springframework.ai.embedding.EmbeddingClient; -import org.springframework.ai.vectorstore.VectorStore; +import org.springframework.ai.vectorsore.ChromaVectorStore; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; -import org.springframework.ai.chroma.ChromaApi; -import org.springframework.ai.vectorsore.ChromaVectorStore; import org.springframework.util.StringUtils; import org.springframework.web.client.RestTemplate; @@ -63,7 +62,7 @@ else if (StringUtils.hasText(apiProperties.getUsername()) && StringUtils.hasText @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(EmbeddingClient embeddingClient, ChromaApi chromaApi, + public ChromaVectorStore vectorStore(EmbeddingClient embeddingClient, ChromaApi chromaApi, ChromaVectorStoreProperties storeProperties) { return new ChromaVectorStore(embeddingClient, chromaApi, storeProperties.getCollectionName()); } diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java index 1a0906463df..dd744cd6ac8 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/milvus/MilvusVectorStoreAutoConfiguration.java @@ -25,7 +25,6 @@ import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.vectorstore.MilvusVectorStore; import org.springframework.ai.vectorstore.MilvusVectorStore.MilvusVectorStoreConfig; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -43,7 +42,7 @@ public class MilvusVectorStoreAutoConfiguration { @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(MilvusServiceClient milvusClient, EmbeddingClient embeddingClient, + public MilvusVectorStore vectorStore(MilvusServiceClient milvusClient, EmbeddingClient embeddingClient, MilvusVectorStoreProperties properties) { MilvusVectorStoreConfig config = MilvusVectorStoreConfig.builder() diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java index e9e4b8d95a6..689fba372ff 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/neo4j/Neo4jVectorStoreAutoConfiguration.java @@ -16,9 +16,9 @@ package org.springframework.ai.autoconfigure.vectorstore.neo4j; import org.neo4j.driver.Driver; + import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.vectorstore.Neo4jVectorStore; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -36,7 +36,7 @@ public class Neo4jVectorStoreAutoConfiguration { @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(Driver driver, EmbeddingClient embeddingClient, + public Neo4jVectorStore vectorStore(Driver driver, EmbeddingClient embeddingClient, Neo4jVectorStoreProperties properties) { Neo4jVectorStore.Neo4jVectorStoreConfig config = Neo4jVectorStore.Neo4jVectorStoreConfig.builder() .withDatabaseName(properties.getDatabaseName()) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfiguration.java index 1d5371d3cfe..871b7dc550b 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/pinecone/PineconeVectorStoreAutoConfiguration.java @@ -18,7 +18,6 @@ import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.vectorstore.PineconeVectorStore; import org.springframework.ai.vectorstore.PineconeVectorStore.PineconeVectorStoreConfig; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -35,7 +34,7 @@ public class PineconeVectorStoreAutoConfiguration { @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(EmbeddingClient embeddingClient, PineconeVectorStoreProperties properties) { + public PineconeVectorStore vectorStore(EmbeddingClient embeddingClient, PineconeVectorStoreProperties properties) { var config = PineconeVectorStoreConfig.builder() .withApiKey(properties.getApiKey()) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfiguration.java index 70a424373ab..d887d9731af 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/qdrant/QdrantVectorStoreAutoConfiguration.java @@ -16,7 +16,6 @@ package org.springframework.ai.autoconfigure.vectorstore.qdrant; import org.springframework.ai.embedding.EmbeddingClient; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.qdrant.QdrantVectorStore; import org.springframework.ai.vectorstore.qdrant.QdrantVectorStore.QdrantVectorStoreConfig; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -36,7 +35,7 @@ public class QdrantVectorStoreAutoConfiguration { @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(EmbeddingClient embeddingClient, QdrantVectorStoreProperties properties) { + public QdrantVectorStore vectorStore(EmbeddingClient embeddingClient, QdrantVectorStoreProperties properties) { var config = QdrantVectorStoreConfig.builder() .withCollectionName(properties.getCollectionName()) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java index a086f894adc..67e807d82e8 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/redis/RedisVectorStoreAutoConfiguration.java @@ -18,7 +18,6 @@ import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.vectorstore.RedisVectorStore; import org.springframework.ai.vectorstore.RedisVectorStore.RedisVectorStoreConfig; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -35,7 +34,7 @@ public class RedisVectorStoreAutoConfiguration { @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(EmbeddingClient embeddingClient, RedisVectorStoreProperties properties) { + public RedisVectorStore vectorStore(EmbeddingClient embeddingClient, RedisVectorStoreProperties properties) { var config = RedisVectorStoreConfig.builder() .withURI(properties.getUri()) diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfiguration.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfiguration.java index 8ead96eb850..3f3e706060a 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfiguration.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/vectorstore/weaviate/WeaviateVectorStoreAutoConfiguration.java @@ -16,7 +16,6 @@ package org.springframework.ai.autoconfigure.vectorstore.weaviate; import org.springframework.ai.embedding.EmbeddingClient; -import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.WeaviateVectorStore; import org.springframework.ai.vectorstore.WeaviateVectorStore.WeaviateVectorStoreConfig; import org.springframework.ai.vectorstore.WeaviateVectorStore.WeaviateVectorStoreConfig.MetadataField; @@ -36,7 +35,7 @@ public class WeaviateVectorStoreAutoConfiguration { @Bean @ConditionalOnMissingBean - public VectorStore vectorStore(EmbeddingClient embeddingClient, WeaviateVectorStoreProperties properties) { + public WeaviateVectorStore vectorStore(EmbeddingClient embeddingClient, WeaviateVectorStoreProperties properties) { WeaviateVectorStoreConfig.Builder configBuilder = WeaviateVectorStore.WeaviateVectorStoreConfig.builder() .withScheme(properties.getScheme()) From bf75669062bb03fb3c379e5e5398079b1d9d622d Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 11:37:34 +0100 Subject: [PATCH 19/39] Add ETL pipeline diagrams Also update the embeding and chat api diagrams --- .../modules/ROOT/images/embeddings-api.jpg | Bin 169814 -> 347661 bytes .../modules/ROOT/images/etl-class-diagram.jpg | Bin 0 -> 277979 bytes .../modules/ROOT/images/etl-pipeline.jpg | Bin 0 -> 220564 bytes .../spring-ai-chat-completions-clients.jpg | Bin 114123 -> 291284 bytes .../modules/ROOT/pages/api/etl-pipeline.adoc | 21 +++++++++++++++--- 5 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 spring-ai-docs/src/main/antora/modules/ROOT/images/etl-class-diagram.jpg create mode 100644 spring-ai-docs/src/main/antora/modules/ROOT/images/etl-pipeline.jpg diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/images/embeddings-api.jpg b/spring-ai-docs/src/main/antora/modules/ROOT/images/embeddings-api.jpg index cc13a837eef677e581dd8e1d3d4cb16b9c97055b..41b383ff318e17f81131500ce649ddcf6f2ffe84 100644 GIT binary patch literal 347661 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

4nP@CbR~MdNubNbS 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 literal 169814 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�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 diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/images/etl-class-diagram.jpg b/spring-ai-docs/src/main/antora/modules/ROOT/images/etl-class-diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6fbefde8c9468248fa3063467d2e663c286b8fc6 GIT binary patch literal 277979 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%0D#cbRXnYo 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

    dtaJb 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 literal 0 HcmV?d00001 diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/images/etl-pipeline.jpg b/spring-ai-docs/src/main/antora/modules/ROOT/images/etl-pipeline.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c188fbab2c0cc6373a4fb28132a3ddfe59ce4bc GIT binary patch literal 220564 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°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 literal 0 HcmV?d00001 diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-chat-completions-clients.jpg b/spring-ai-docs/src/main/antora/modules/ROOT/images/spring-ai-chat-completions-clients.jpg index bf529080ba0251870d1b6eb2a851e74247bc2088..f20701c8274f1ae706502927de6e8ca59f943522 100644 GIT binary patch literal 291284 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�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

  1. aU6{Fm^ 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

    Z`Q9Zuc z-(~Z_(60)suRjkry1eoao7E3 z1L9(`pHfNcc#VFZ9ZN4_N;S_My(KsgfNoV8N0hdKX~24da@=exD8sw~oWqF`xr)0v zqociWnq^aQ`Q+kaao|^vh61r7!&;a~Gw*?~RMbe6k9+*8vY}2GlVPh#{6KNZe(jbn zZTC~V9(tFT3umIGTOIN*YL35RHL+89DqnU$G?sg1@MJ0wBRc(RoU(n}p3QN>ZI9yY z*{Y_dqKCt{m9%Z;>=bSkd;$P)XT5t9@f*FsqTao>LhZ;z82*RKU@!c)_?WTKK@1 zppw#L8HXjAcisj}-8S>&BdBKX+H_M+yqlF>)&Pu5FOxp9ZTPb8RcaIB8>e7n*fKfy zPtT;QqxYu?^hGyn3Ne=6Ahdyqc$PH*h3}A2AR|bcFAEW<(7_Qg+ht}b7a4^L)C+U0K@6+3V z8WT4?bU7;SMutO*JCmI3SqW_+Rd~40CccAHiF;}!$lPFIom5V5(Cf?l&Y4fMCed@+ zAv(QJz;%OuW}iO*4d?ZHw6iY#7?cxjT9}Q@_z&Mt_Qo018hli!TWpJ(*$z?Utcl# zR#kWXR_B;!yuAIEywz7qy2+aD0K*sgKvEpu7W#iHU0a#wly^#Q19kCNQS4ZLP$4E_ zn9aHIM=|Rk0tx!oS*+DfZsH-aVJmZ!%1$+hg}y&L_E8q-nm=*|$Gk|4PW}059~+e- zKEx&WeY>OZafO)REMBo}E3K&SBU2qe9_7+j?6v)*b3G|5YW?C+vHqUZ)1zLy3OM0`*VM1iCb109@3y_oG=|p zha~B~>DGl^}*49SAX$22G^r@yVq=cE27 zmgHwvnK?5F?P-NFOmsT8KgKRLwjDn3bYhc9m-!Si+tRPaErOo1nLB}M{f=KUMH&riVLHkYZ-`6__lbg%< z6q({j#F&%Flmwk|2YQR{W(YhY(f^0Q7iZp_cK&TS@Zz}6w~8CLpY}m(yB$MQA;xOF zNS&E`@K*)zGTvqy@nC(vUw4t_Yd`7COU8$@EwPyA zI~hL0r=5Q?-91~{o^d^|iRAOeTyq#IoW}%Vop4(%4(%VFOtAN^jt)Qi{a|?d=v-Td zuF3Kr0zgyqQs6T#iyCQJUre)n_P+y0oT;{&9hn3117aWA8Fmcv2Q~ct(I3pi`(fi! z)#QUKk^MpQq&X}ral5jOCA)eU?29or$m+gUPwY%g(K!*|n zHnY{oO3&H0%GG>_38Wa*y{71LM1n-`SSlpil7c5mXkXNy=MgYQMYX60;%2 z!&ped)vrL-{8pOZc=R`KYx4w+mD_6Du>Eh(?diCdXM!>)Dl2U^&3jcW<~tz02f)p z|B4a*lYq}VA@r}KxZQs{ivQQ_Pw-g$0n7si{}TM_VmP#%L#uGm^0Jn^ksAeGZs`&HOs`pK3q zu-MWQr@H^>w25Fy=nv@sV(+b^;_9+}Q6j_$5Zoa^fZ$q4&;<7&g-h_@p^)GtA-Dy1 z2oj_U3YS8IyHmKkyA#OUNuU0b?*8uRK7HPJgkuNRZ?D_q122m`_0m4R*UL73l|604a;qI#*SbJP{fPr1G4OGMPOO* zd|7$BW^CT?JIarIQQi1AS-E-s!tk|O?~c42oe2AmlB#-LY&Un_Ng)OsJr>TpQG71) zisR78+WR0vv6OH3>OERdh!aJpv{3(uY{PDpLcsJWQaF#4^=`S6E4`P#YF*)-zTNZp zmOUZdbe()ZICk%y0&dQ+`lp$fqUz3qkdOf#g}Pj)RdP(Z3;^J^04i8XqF7&dw}6{t zZ1zW{i`~r+j6K0l!kt74{YbQi<*3kLYR7HS3f?{EW$KKlS8gx2zfKB%E0lLB@@+qV zP7ka-dkx@~mP@)H{N6%*Zm&~OqJ+#%coOK=4;~-?lgC%ZO@G+z2`X3D?{xALyks+R zDYEI>JXh!+Mr)XistYx}IB+ZH)x+q{a(K%(8abUq;#aSL!OG1vp6tO0u({QS<&_pU zo&pmOP6g*@2Z;kmyLt*I*=P+zQM)s@Pl4ypHma>UkM*q7N~%uO0ruPWQMM;A#!pY? z!ZdEr!9@7fM|dgCX9XYC&lB;w=?RmB|js^AyqyA*K@Z^qlo4b1#t@&_9~nY=SE zB>S=#>Nq@_b>~n{y%D+63{!`j)N-a=RO;1?gTwAb z0*k_jz1PcLr!0%WLU5NH{b9lN%2cw=uGj;~t%WW<%esJ(M*s^h(FVD|Cs zl4CFr&|>qa*OFN8*l2jQ!;Jxm^n!F$#uGEM0???$;hJ7}-*`xR&8R$eUz)4fz+871 z!8uLe2(Xm!>OIUW`i>H*OJ;rbl|HrjQr-m~sF>0StO{Ms;1xu!o*U*mt@vC=7u{K6 zc79~PaP(Yz7wcIyEI+d3X38Z)*=WMjm-8jz%FUR!jL;gAHSoJEs6xTf10&WF4qCj7}go(#0OMnnU!yKN|0!e z@uzm{Hg3uvhGl4o0_iE zcONThuUBJN7jtdnly@k}fAcx=4h7{=FEf-5O#+PpN<|aG4TW8QDA#GG4uP;i-5Gg> zgngMbE)%b{6SSyfL72w=EAD^TfgZk~~;;9S`rm8i3ot0&2GHC?tl zKIJNvat-_>Mw6n;8-NVUu~bs-i;k z>lWs+GYiM;Wr5pqQa$o3oWD-oCHs}Tp$DDdByG*m8&CH81P!*anA3@idCS*uySehN zu$}3{5y-6i&6*tqcqQKFTd6R7Jy!4a9$>`x@%>y`SM1L5F_1xxcTdZt@3g_=IH~~o zuF!dnu?H`;Q#6Hx_)yGtKYU?N(`4wh#nTZ;4JG){#*$hmdztq|C=WHL6uAQNBI+P@ zX5!eqT&ch4RN2TTfAFpP44x#Scp8<86e+$za>m4Qyijd-UwB5@3rvniTIXCqD)uuK zW3EbS*=lztr%f|}6VSJNkPiv0DUcWK|h!BQiqL!m(b3Zne z@v2$6hN6DDH``$Me!a)v8AzrVhK8Yz+&?QK!B)9iraykg^iJX$t(!o>O1c?v6X_!3 zq2bK>#+t8)6G&fVJbv>t{TqdXmEwg1p73?GuT)D_#)I^chpGfxB**WuZpi* ze%`E@IEh4dl){s9P9i_b5|!VyHv?aaBQj}KaS;Z^Z`>+27qa9KsIv~Ec& zo~#MR?U`%l_Js0Aq;B`uqWtJJx~w=~(J0W(a)QqS#3N99qt++cmsY}JXpgb#y$#3r zjb{E5cIM7sT50=HO{>Sx{*pL6S?R_A5{-o3&rN60aT~DH2u~9Jq-4E}f>qOkj8{3A zGq3p!Qwz}VveKV52FkX?{ivk$Lee`zldpst81P7{)Q=(F<>FfD&H^e_KlSs@P_XI( zDk$@E{#h)GE{IbD=(YYVIR+vO-wYW0g!<6U_S?2|+er#m{Xhey1;7F47h(M6oce}Gj8s|?qF{p_W5U&RM)Y@Bf~MRvvX0etF8QTaQ{ z&G%Pgw~A0u1PP6*wOc(@=Jc8jD3l0E}cUCnz0i*_WO}BHG9p zweyLtD)enJ-(H{zPbU3LM)Foj+l>BQ_0;=YGwIPs7zC(qtX=kEx;KdQy3qyaaXQVU zB9kQr$4Sq`iem@4W|jJ!XlHlnyczpGI_bZZaWW%YdZX*I=i9k)U!faad>*S)T^dJM zTzCv{A$|}!sM@EbctSh5OYs5L_Yq&Q<6NP8vBva%fe@x91>G_~8;Iv4KfNHWz9MHHC8ZxhuhVipbXFU& zq7Lim%a>7}v1yLXk{hc6bqAq! zll`tK8Dm7dbfh&$n0{U~OK#Mm^5-u4uY(27*=fe#e}J5KO3Lm%OHUgkJvi-Dls&jo zdAap)HPS|pV1gRcQ?A3wj5LvBw_k$7JpmwCBaYCxjK0l%8))hlhKs8SYu0@|SnAfp z(MUDj*a-zp1A zbwh@gXWqBbOjWX$nuHBQuKfwySln|8D#-Y|vo5JqbP!7VHqUJ1drl-|J8YRZw~34$ zpVX(@b(k?<-5D2@y)|%)bh#s%=42_$C3Do+zAK2qa=SzJP!rzX?!sh(@W`-&XT4ub zf~a*_TuN$sDBc~o^?A7=S|Q$C&zf^Q>0qW4dI=fyq%tevpOJ~T(to|l34MHZmo%z) zq;6ouR<-d0Wu4E)L_Nzwvbo#IOrX3tuWoACD===WcQwLSD|SMtcOystdE>G$v+Op7 z*|CoBXN-)PUhsu!hP#eu_i9X?8o^{r&^Q0<_Y(*5T{4$aT4dUoYrIRbF+L}sN?j4} z9Fxi*#dT9hic76W7%t|^<{ni~y;?~6`SCgxG)E_13~ro|LL|F5E~O?sU-b)NXz^+3 z+XNDPMDM6S4?G#a)db+@C7pD}2A$o4x5 z16{g(7bhbO2zas3rF#f`D(>iy&R;P2vFz2rOaeK?spU^%+cs;jSH)?Z-6{D?cE9{mx~MH4JLMeCkD%8 zB=T8)nr1{qv^OYEYJZ_a+?dx|o(Itjp`xqGvTN@HhRST~u6;#~(v6{VuxdHS{bXwR zAx*jzk{&{gQSxAt7n_J+qxPQtHd}v#>qA##SJX1%t{m5ebnVzSFNj3W`NkhR<#hN-U-L;yv zoWOS?&L(lBFB;b#W+`Vs?o%dS<)c5$Q*SavID(DBmAd!g{(vVpXgV}eH-0haNqMsz zZ>&SxSu>Q6=vxXsfGFs^W6Kn+L}%2TSOoVU9(ILAD7aEkpjQ=e8d7B>_$N(D9iOT; zQbZ)lN+pO^Zu^*R#|SjC?%Oe5JvQV`j(;f9JWd$Jmn}26w(qd`WNEBE<8@Uw;VA=R zawwil!CJ|Ix67AIQNJ=$A%5pAGm8&7*$Y>W5;fYU^0Y>MY}nMWys$->K33VbRd`uZ zT3aovZl(Fj!Eie9jB!(nhoqtmUbom`$bqeXWd4%mf>2}Ni}PqN1%PfxAnEs`KsWIf8XJvcxF^Dnn!=yyd^lI-b)@n?B)Xqk*y;i24riQ)>Y-yTN{! zlG(R-DqilejQorX$;_`PC>XyiFZnrtIbnMDiT8&Vh1U-)3XT8LqTul3jipCXODO|Uv>2qdUFU*UY z@Us~JdwO*MRd>sw6t-=evQl)n3yyZkF7 zx=H+Z6e9&@_d5k%U5g}Kf9w9O&)afL(@%fb>%4ScE|TYOB(cBh_^&6&x6CCkYMu^k zUq&Q#Y`Aw88Gdz38itg$uk2c+X9fD#TvL~_*NE2|zuD=A>fzn9#EUw6*7Pwby(Ms2 zqRF(5`LBLt3EOC=u&(B1&bvMPA=V8PGq?pwZQJ)Q*1EY_raAY`sPt5Z+imqVnPmgl zHC_%)$wyD<*R3*Ku8PkZ;aec2d&76k5S@zJdZ z>b*u6rd_~DZ~XG=+GgrFiu*Kt`y%NclX`Oi9Z|4_JrstA1=yPXJ{Pk;$OsT3baP(# z;lbTW%3Z<%$thgZMV*RuNmaj7>+3%d@?VG$)pWbEm-GB4&U}SU(<#d5;AUDW%Xy23 zX(`|i8Mz+X%=B6~PUV1B-E|(s3;Lz|XO+KCQq4@0hO5&T-KEbd#(&>qor%7drY6S^f@; zQ4dYr57g)pW{;LR}m40L`>3z2Wb`(fQvR!0!l6WNE{CIFC%28K#E2)tbETBy(a@PgPNCeM*AD zcByVqz4;x#$q%p``gBl4wrf~cWD|c{q<$jZBAb!`!Om=huG2}G&#fdgoE8;CHJw0Jht(QYYbguw{r9Zh(AYMwfbAZ45`BbMJE-Vo zDa6~iG%$(qQ${lYbG#*H(-j_RZ-Swf+uADNiO*~&#)mxLi6cy! zNVIWm>Bsqt3?-tnI!=|Piy4|U{TL@^byn84qeeXggP;|j3F*k-F8G5cL-z99f$5$T zOzN!ruwzPM-63I9UB!YiJk52y*buBI8R8OlU8rCuWkwY>KEOvAZQ!(g5lvE(cJzl& zi=Em-p<-f-)E&)|to55zAmKSw_Kro=D&g$!C@gfDCiux==3~Wnnam7N9$3{hD?DSQ zWQ?`Gpt1n=pd6Ic2SY82Q~cUJwEXrS%cJ-<0@@YOGVKV3WL9DcN1FM}D4rrH(vaU( za7Wh>y#K!Z-A`J%GKzOsexS1?5I;H+01BKq^_`_ zodk22eweYwaecq>^8YZ}{0~2+@SH=E_->9a`9$)?TIgQ7>O!Nda!#QkRnIVWx{Z-m z0*nZnH7rTnrQ~jrZ?Ts8>$~GfqMw`Saw3|dcT!z~ski8clMv%trkF>v&5MbPOFp3$ zH6pLdzAhraBizvA%ag}Iwj3{~6k%M}6?BXX6Y&jEvyx&=#R`*P1>CGHAbRA1193U_ zW=*lk&l&yCW!5A-#iurE_Rnq1)FwZR!zRk4HPo(_Z=yM+zpz+Gr|9*c&av`oL4ZkG z8!UBl%l*rJNftbOg39y0Z2IvCBtycVHQQ6mR*$l~Tlu#P?9C)~wx#n4yf#)DRnxlI-4br8_zhqn{jf)#zFO3ksO?`w`Z zM(xD)g**W7SRUK-`j=n~i76PLemzFPvi-$Y!+w3JHwSNP|6;2~zqs(%()ajhzu4+8 zF3iUKSiJ5RTNU`lh0&z`a~eVNedsR7H>ny7g6JQ&OY>oc9X|`Zv9><(QB_{)(|B*l zsJtP+1dl49RV?1``HLLJXDSUPv7}rG>^*4L$ZkS46*t$@3V~t1xR>cv=^2AKltl%) zvll(}&JW*u524#4&VyD#&R-OzAIva!7ekWiYhibiOV>g?JJVl}ZgU#xf(@FC5UF)P zWEKCi6<+p7Bg|b_k}a#T`QU^ewY@Cc(42;G^=*}@lj>kKDvLa$^6(2=332;adpzY4 zUR7~%z=xVkKf1v?qQEAr)^Y4uj{wbg>wYiHpj}%+i;`)qW0ryuPB{b)A{ zS@1b%PUA?WN`ef{_0ZuT`{!;dbB--r62bE)B&#LTt=+LIS*;Lb3emZyBm|~k470j5 zSYeH7wRH;_X$)S(^aw!69~peV%k{0bx3yS2oG;W5yBh2tiL+xAj@4s1kZ;8WSix|Y z5wzuyrKs*1(xS{U!+h<7P?3B@W^!N()Qyv8PMjl8tYcaEwN|aD))F#Q?8?9X*bw|1 zLQLwUb`uyuzK(&ZH6)pnDmKx?En%*LHqulNaf8?&nu5qV*#L~3Fn7BsJrJN8+0W~cU(M(B3_5*{%9?h;KEmN)2OlF0~t1O z1^=?+%Bu7omaUKe?PoMC*J+U#V|%bUKe5XCVGb{C=Et|S=hYi90_?nUjIYZD{^MK1 z`f7>XtN6Vo=U=Zf=F@*W;H}x3D8xPsGGTPk&6}zxmzB zJoMn!ny8mG@L_9M0MYgQ;*PVde>?V!C){PKLt!C8; z2=okzBc}VUz50M$ih0=ZiS|kQsxz|KN=(0_w0=-=Og8|jLt0~`mQ&lK8f&jl&xxsC zOgcrDscH}Ikz{wYU|^_FT~VFMQGyUn78|~>7~Z;As*%SrFQmA`spPS2A78M4;}Akw zUhf4K2KgN&8r?1QP4+%=*$@{h;#9Ia>Xbw5r&_ zJVRuCP-*T&Sv}>;Xdh~}hPX^+Mfi1&j9g*%U{F~njg)8 zn@!Qb-fVvTlkC4o-TX}#c-}PpH>n0niOBC6|K#~T&I4f`ZxW%0L&DtIc;i$ClAE85 z%o-BRR)*&o3;(3Ruc&`jPwiKUe|-9M_Odo4qW=C;o#`v+cHi(Z>)um};TNiZs_KHW zCGw9o{7sCM`%}Hv4*ib@`kZWFr_~MD*fU(r4N8VLX>KGmo;V%u-3{Q$)Z7jIxtGE@ z@0=e0P2s-}Jdx|aWILEWvlhKxgLmL?33Uqq{xDvCN2&TJg!#LQ?%WEEF|mBa)(Nwi z?D?>MUeQ&BEfG+N91Cu%2JZv7J#~)_nTvc?UxPN`h5|%Vhw@QIpBpp+i%8oLIAZ&+ z+iU^jO2%NqtKnQ1@2{x{N+XJM8oIurHPTN-Vc#MmSJ#hlG5?z0_Sc8sGd{H{o%cZc zluv6VIyOZcyNoY|-G3~xh+{yR@fMy~k)9g+*HYbwn0DMl%@+exPHs_r;p)m8OQDHC38KThZc6a5wy6T zh&$ZwL|LBJ3OB3&w8S5gKhQ$j=+L_Bo$twhu-$R-^n4a`?!&TxHJ5mqqMsW2rOrUM z@{inq`fwlf&y}!f6mVIMj0+lFSmWaus_l;jWxqYRd;AEa`A=*46?xmQ(Pzsl`b?4L zkP}ti#xpzD>%GWzI(GI0f}&#ed4bsOZaiJYMaq|J)LR$+cMX4)1dPq~`4JI_H-R$I zMjD(}5%7_@IvZ0r6AEl)C9=X9X1KUK;6f>D@CwTAAP*)T(;Qn5DS#lxn%p*E0Nnq{ z2iwwTJ<$VXYC}V<*`D-SE@qsZ+ZMXWA&dMelP!M%>)quL4>rKe@hR=)^Vu%qi&wSR zFXc}@#`-@ClUJ2f#SUA8!bPgw}=r^&aui@+}&&-Q%7t_F19 z{r>v?$@7h@LnRYkf*JCmb?#^?W(gZ~Q^4i0sJ&M1{l}6P)uRk_{1d5B(dW;M)OT;X zEgHC*rM<%x_!TsY%mR7t(baJiWVsTe9QOSRs<j}c>vz0g{CpEMS8lpgH!-CBOJD=QoE<09W6oY(sue4@f_Wm zb*M7~M_}=CvB5J1Oc=jPF?)0QHfXM1ks(;_Fl;vr^}|%n_FN1B9{bD9 z(e|4_ga~|=08{pJi|vG-X|#`(ps{xgB#Kgf$WL5%gdjD+;px0 ztaZJ|Kc>w;-=e*$oDRl^-&5$ry~`14K`QKZL37LqQ$TRIfkE|DQH<{uNfDCVW?o zMT_}Z{hocI#}GpymZ7MRlDnB~n=9=~vxZ$b77Rh4VaMay;u0LhqzP{!l6x5xoiwTR zc%bOP?b{)ed7MGUwGi^aoRpFykbgcPJthxvY8uNomS7NIdI!v~|F+r!Q0Dex64PX3 zS2A~)h33h@)LEFbn6#y5@Cc%3!oIS+)qliw^#?@Gn6;_{fDo0N4n-xs#}FNnG-f20 zM*?Gy&#zqL9LjAKFJF65BbLCh@d??VUVM{}hiXgI)#mc8eSyLMWwMw5tEC}o@6Qf& zAH@Y5v=wq2rCno8?XYcdbjyQ7PXPbE;_?pmfNn(f)!~{g>ZZo95vP2B^$$$BuyiUf zCbYQ!pDg2l1XOnv(O<=Eed3p@V>dpG;V0eT%aI2am0x?$*9+pm(2TVm3 z*_BRPJ=|wc_MSAQAb^o^>jLri)Pw;~r5c7g5rS#M_1ayT1-6M3FrnzN18N~hXjf!o zXNcq}s?ZKVo5SeX&e*xtleyz^s#q)Ce80|~r}ufczI8T>z)=cA=hGz$@^*Ozf?mp^ z?Wv7~y^?u3*EMWuf7B``p;-yn5HLzEPgKIvMOV^kb6vGX@;p&=)u?bH8yT6ZeXW9< z5NW{itgCHY-OgszWTFhrrAyGZ@buf&R0S!im9_o+cJ zEL?AYN!cw(J|gPdZifX9EYex>4Xk3>&VS3YXu2XnGH+6XLV^WFYFQnY>f0&nDtQIG z?BQGuBDkt{)*2Bna~RG!8qwZku+vsd2w*wePZtmD8z5~Fhky#Ti-Wr1kh31B6TCnP z40EE-2K9_}uVUeX{Znw-*!w0b8k7`F^Y+>fWq9f+^eSyNj&GiqXXgxcHv6~RvmHqV z>yNW{!1Sga<+Y#ypwKh=*)ff~!Mw?eTD4)XhAouut%7K;j0ssGHmX)qa7!IPgiQ=f zPlSb@tw7WP3xN99KN2=LvU_ zGDqWt_XCotP@^g637^C0h-D9yerRk=*wX;cs#$y%?~PNI1D5vRiA@uCpwS8x{aEel zx@@uUX60HoLA9Q~1LpP=wbgE2ZtV&<#T(Vgtumd6iw`Y{ETXn6ipN$Xq2f1JH(y83 z8HVhR%Y*vA7N)aJLSvP`$kuJlEl$al~| zsyIPS6PTO3C5(cHboP=~c-x3pgN?AO=reHT?BmZs;?puoIScZT5V2BP^Ah$=73G6c zLUfIRFFHk2A<-5fkXt+=G19Xma*EHaElBM>_9}cnT2C+W4smM;UQRpQ8=VK1(#ogT znr;h*P*GVxUyd<#FyMnsg>el!0qB6d)=@M1ml-^kQbFV)brB{Dqk6enJHc zfEN;!8^+y;v<+M~)tiSkWUD?|r8ATOfV`T;eBld7C#}4R35zlu`DC1tji3~#PJVowfN{@17O*it%C}I_FhDr7853W|ln6ghNRBAYiNupSS|=={&v}D|*T0+w zQ`*PFQ&APSR}q`7KK!a+0spI3|Q#@U;h2GL-IX)kgC5%WNK2afumzyVp>;6 z@2EZvS87+F)iGN z7J%~?cgI*W!sW}I3H?sXnMe8tGc=yJ7|*wE(RKj7w=5sjJy5AL`E2u}Z#Tsn!$u#s z_IY#l_2jlVNyRB$ED?_HnZ}=&@jloBGTi2De6=>J+ZVfqA4ImDHA?_9=oOt9Bo#B( z)Igt5BoBCYFdH5oktHoVWIp)G#Ds>Dd}Yge~T*4D&tzXfyh(jO=N3?Aro; zN7+K(O8u)4r@p3m;cmLG2oa#Uf8!eZHl?wYtfAL~{7co!$1f6Nn_z~wpNa8qN$z9C zkV2{Bf)G^z2wi*48eFmC?WYmo{!M2H&~onb67whcM_toDA2KGdvt+_j>jiZ*fq0oo zIKdU%Dq0b2FCAmf)bKJhV+i_&UY(hU>PhghDdXo>-zDTL@$s1ub!srF|FSK709KkA zLg3v+LD_6i!eh}ari-&mLQW)+v=Q=9sblsO>Hd*4jqylCS2$%~PHs6u&hzo8m zBpo!oDhnA)JF&Kq8eV?lp%5Fju<>ZVDX6@~6}pbT3uyD2*Nn&ZaxZ(4sfD;0q1Sp0 z?Q|M{q~{w`#f#n1yozO53&QKnnbtYJ@(w2}Dcz3A9X%7YyZq)@Fv1F0Fazq|ZCY1` z*X@1JLIUQtwKJ4(&v;un@eJ(*7I&MOr|aY6vr~)uO(iMv+zm^av~9XeH}JpliASiUTg2u3%cmr3xK9xu%WcNp%DtbC(~U5nim2v1H$9RHz)~^MS$5sZ za1ghTCLeYRICK6p`jpoyG(o9}{j&_A(15@qc94R_;<#X73(w-2SFBM+lYnCrDM{Pe z=nTaKI8IG$*e^HS*feDbl3NNGI=h`zw!xQdLczmZ-^eSkuAhx=5}b%OY=+G) z=6e=-87tQ+G{bYDj>0m@oi)2(2;&wf+2a?)fj+q&cKB-&`ODs-*l}0+GB7JFQe}aM zv76Nc%Ebl=Sr`~@F<7i*N?agU0Z+J9YtSr5s|C2?oAf0ont5cj2a<)*ItV*f4%+&z zgV0IDXyK{Wy=jyyc#fc@ikY_6f39NSGxBChpkA6qN zJTQvGic9ba35s=kx*%4okVd}#MNwAlnEN3QAFU~MV-UPsDnz15%y(%Dn!BllGc|Jd z+*ySUz~y5O8Y#JH$`ykDz zyZa;c8ui88Mz5`;5+ez6L(T%t!c@hYjY>Y|@4Y>9sYy^Lv?Vruyx`O0ru13Usi?lb=$WBFtUaouDrFlbeT`xPjKc}3+G8-t;;BAy*_ z^7F(LGoqW|?jUl5z2ou8h0jI15|&VF1}Yof%UCH!f}%RmdLx++PMldFXBi1c1-pov zXcpM;6t|ISXdJKL<0!Qw5;_X%8FdPL=lbCxMpgOJHco9g;L2@u?~V z*MLWp!^_Q5?Sv4zHBYHsXIbINOlVl7jjwDdGQB~Dl>T2{0D$0K2_0U#_s#&^x zaMMw`?M2SZ4JAqr3lamW*KpsZiGlW|0heezo~Pvgw^XDT$teuD?`ZPGFzXFQN%M7r zI4~Xi#Ozbq+0NDY#l*zjC0RltYk^f%z!j{DjF~rY%1h%jIj)4Jb#p%hXsvtoDPG8fa*)+9s~ATyIYm31!~v zz*VYh6aSHH4tpv}!Z$^;1o>Y)3>?su_wok}wxo(R?L?PC%18c6= z$Rlq(YR=Pb5+KXqm}}mgh_;bxb#3}^J~qh`dL$1nj7zAa4(EXax_A%KFb=b$x6~@< zCb)%Il~)-Km3ZS_G~-?3>Ey)rIk3A$eZxuXo>)K&f?o2xV$(h)Wy^TTLX4X0rB|$~ zl|O*@SlMKS1m_$5#!1rv=?F}FGo=~X8BjmPhH&39QM1^S#nvZziV3TFCJU-+*?B9j zZk3^IX5}$8Gr^+avbyWm5~ok39BnRl|*EsH!BpLxI%INF#yteC1B>55Ohdl^^GXZ(WG@S zvTAd{@T;X#zC+i%O!M^gqsN@rpO(Nj0dTp*MR`1~331hty5^+K{=G|j?j57Wm)h95 zPVJo>(c%v3R?jksi4l8KS6FJef`E1L0C%{5Kso{?t6}-dTWemWo2+>1Rf(-R0}ZiD zUyy8sJ0CrFca!*#23zX=&J~M5|Fz!Z35&qo^!VP_EO{OMmBLS8XFXbBV$D2L%6luR zGH%9;FW!Y4vWNJun^`d?jbtD-Gr;7-LvP5vKd^VjKnkhRA^X0=az?G@uX)6fG)1Nc z-Avs_gNzH!YR~x7im95ARSZnx@}0AQ>&yOK5{2cm$e7mX z;X`LVPD(i9qu}ZE&8)z?koyO@sozot8Lrdi7ky}-Gzw}~Fw*gGvO>Mi&R!;?DSBCo znuG29&|Z%@RhGT1e;r(M_A$=Hpd{F#R1Lc3-;eh62#v(EOd)4;H)C#Z0RwBD}Su{1PU zQWejPG|7_W20pHMP&RgcV9v0F^FU{i$^tio!3fq%&yIbT{VeTLr2nUQVkhp-7XRuK z$}*6Hq&ak}49`Ja&-fO@ovg;1QIk~?hThKxDfG%4$6}T#;{;71jO#J9SY5i)(G(*{jPwQwnm^TqSqB}4ml3fkWlxCr`$bZ>#V4|Fw6uvMus|5{J z6tg42W81u!BW!#Y>pa9fVbLrl7s5|sV%V&E`Dh}cinI0x}u?bjAztA_K{A*mo&>O z9+J7O-uDM4g%Yho?&Cp6w*(V1CW4BW_8G_nX9%Z#)KHgg=dYGsI+WpPS=5wDOGezZ z!;`aEltuXvkXB%Us)a>vtw`^Ue5>I0SH3j*$E0k9b{MI8mFpbgblEhS1}y;?q=a@v z_jeWtl4MKWC3qxi)kp1L8^x|Tav*$TA6hE!w=#(3t7)-fk!xu^Y+m>puxJH9MxQjP z?q@`E>2{^RuYNwHMG&3qkH3{XX*`7us^Yo?9}E>MMKC?}2MmG&Q@B)t4ZvDXP89=j zJr-wj3@JlFYgs|Cer5;qOZpR{0BL7VoPu|NQfu>$v+V*>;Pp1(oA}Q9ZI#p-vyAC@ z9w+Ko<&<>-NiCidw;8?=J3S%TQO}r%CFHxQC#u1NdY~i}jLsRNr5x&p3u=rrAyE;r znfsB)7I|GMt9+*9t=obVh#jz685Rhvi-jeU(U1venw={XzReQ+ww#5v_!(+((u*ps z+pncLpDkM&$g&R*`orxPL;(lL5*cN>?P8T)fdVw~wbqJ{3bU57Ce&(5hd#@^u%uc3 zl8RM5f=k!zgUw`O!Kl;=*|MyLZ1|IBc)wUiJ_$#u0g36+NeTZRRXVW4! z4kaQ0n;Pj49|+NHuUmMJxbfk1ztPknIE$lamTR4n!}XRa&BjpYx`rL$vZ_r;V2I~X zG#*wpzwCl2ZWBP*M7$kdr;vc4(twNRw|P&o?b6z!+?$3@*eXxhsR}BCM|BAlUhzDo zNjftlW>Eutbv_%)?i^<2Pd2Bv+UiH!A27mM>BR#k@&C5&*YitBy>s~VP>$;eat zEEHJFF1SZ8qS-)j%qU-G&~W2+Hok?6X})ccvIg63f!mMdJN>u6x*B3~p2_a&n3fi1 z+%g*38J}Pt7i1LL^d9ERDSng6{mB@)HAr#=VefUNh3!Di;XYu6-d^>5Kcy}0RN}RM z#=S29TSzzx!^eHP)|xSiZ<43M1mRb88X6K8AB`7Ddp|U4i>5qUo-w0N)*+YGZ}Pd^ zkXgaP{L^y${RwKFB0MJt2qGu(6c&!7`*JWs^E*n%)|E*VA>q8VRo6_gRCwmfT-OFH z>)fwV>S@YFy&@qlA?S_?Cz+Ya?mZ~455LA2$(*(bxBQNKk@xDLJ&YNc2r;v&83Mddl{BtG2)`91MmJ zX!$2u!p9Hv*fQ)@oOp#A-(x;Z@5?@`1$V zAE6bJTS?Ths?IyhK4*O}nyAYx;in{i?3`UuW>K1oQ{#M z99vXMa0hFsTI(XVtl7$Zsv7M(iuB~AwY#=nC7KBFB|hg3Zw(SwX7<1_Z`q0wJGgu4 zz0R{ptc2Ne`^Qa|>3q38P>>2(Y*i(gt{eZMQPTamF%^H+>i2`zmMb)Kuz9)X7KeO$ zRAoiPNZkpT!{}RHl6%C(UR*97nNtMJ`D!g%PePRYKCA~0*9^^~nh=f_6GIU_5(uY- zCJSmX7`)~mlzV1iYQ?c10v?O0BU%XIC{p(wMLdbYHGe&z)mN@z723+ADhBvPv$mP- zsX;Hj2SBY8onD>U_6oN_jo(qWEXzGf zJFX3cbTa=Yh}sF{_%{qyP*5oIYOfJl!k*MI*8$kezlR>NyaXx*ewd*}YT5nfoMjU= zLo}J@g9EfH8G;U0PhU>J-C}1X(hHVuZQTutN_kW>@S<6o2@IPCW1Mgj*w3|O<$Z)U zSfz_uX+%h!G%a#ZvSQ@`9C0;b%D7XxfRk6-h6A8jkKeC?(g{QQ> zc$+5Ro5Zi74N{e5zAtZ%~39myMC&&ri-<9v@fFNYmAk@h{gro z;ZNje%JaQu&lzDzw`%pRLtuG8+~%y=40&UNc;9-D4D&Z(!viev$eFtNB;?zSCCiKi z;r5yt#LGyfP(53$;VC|!hD3D?dJV)I{Rm|>AM3rep^X9`JcI6M)H*9vAi@H9r7+!X zg;(5n$9$EcA#JzV=({H=(i=rqX zAiau8mntPxQRzsP5<&||6%q&#AaoSzB_O?ngq}d?CG;x2_bMR0C{08_Jn{Fgb=JG~ z*=P2dJ$vTlk4&Bk`3A^*ay{j~uA9}=JY}XsG@kK-a{@^_58kq$v~A4XcePm?=!z%> z@zciO`^z0#I@Ih=Esx+spOE@O-Uw^wH1WG*CpV067CHw^O(l1KPd%M^fm>7bper}S zH-)I}o)2l@O4l^M&-{`}erZXsvzsB%zZoW0`KEk<@!vh zwpB10cPiy*#`f#4pOc|!_{Ch8B=ok#AA&4L=5%TY=I328;WM|V9t%MR+JZ$cswIxb z_ej{&W}TopxwUCqvPBU~UZeLin4W(fo(7hxX>!$=eD)TTGG4!x7OQ$ccTg$(w%I28 zGz||d?DK)}4rV?Z(z2E=-_^QbqE(yk#PR}{$2Vy|q)W4&q3=W6cQ$0sY#NEf>#H`? zBSwN}t0S9^6~og#Ue8zty2nJdQ$CHNCNa+I8~I@SXZyR|lFOX^m>d%>WSZSEJG4Z%<4ltDYp8 zR!%UAdiA*7rLH00wC*x=6`qd{6}S;g9jT-&72~Udswp~5i@~cm5as@SAcUbxE^nj~KA3c1x7N{^Ejz6>mc_A*(GRe#00Kg$n+~H@PDQU%S_A zHnPc|HE1ZB*~*90B135h)|91yAh?rghFbTcX#2dV;61J8VuSUlwmtqgVseKsuc38KR||9kY;eBJ#W)#qcu&Nv zmI}c1Af$p;4+`RiR^B!s(+r-=ZRa=6ncS@nd8CIHtSgQx22tJP8FYvOSmK5~7`hhI zDK=*gR1Hi3Ml-_*j_GYFBj4s+$Qa1ps`(?+=1VxnLNP5Rq6e)QUb&&_91mwJ#Lj{O zb{RNXa#gpmNI%dvV-99w*I+PFHl|QpI4&k!RO}~;O(FaS!$C+*g?JpFc#W&rVnOIi zev6Pv6_tyY@lNBOdx}V9CFbS>`5Zcn@&2 z8|kJkIT%V~=QBNAxS1)bWX3Hh%a^}b&jw@MAWr(qJ59o(5~+^u7bm3-3f*a%;$>vU zvz4!NKBpsZfCpnu1ba$k=Y`59;HVQ`9_Ap1=G5?Wzp$k2xgn&79@LEky0|mP(?=OK zt7$fa^4`RMDmA^)+RiiD!&n20d7+kUB#l_ExXbBjWEC^gx6`7QJ*AhK1$qjdMVDF@ zVijk=ZLrZdhI-NG3dqxN^fH}!!u(aqhZ?SNk`@{x$2=eeKj$tDC!?jD=S#zTz$Q{( zh2T0&-i*7d4hsB$EPQ|ag!fE)Nz-s_>a8x}nnSxAr-3x<7kUbC;#BW%dQBQqhX-Vl ze#V~35LL4?0EEmeR3EzZM2Z*-Wy@vVhUu%Y32q7ZH9u4F{g>R`0<^dOR2wYoOuSli z!)LGszWbJ#Y97k>t7`}Tp5Vs+p`!SIz1RQpp8YxAU&8ty{t^quL%hG_^7lo?BNMgZxre4Aa&AneN9qr#QWr1O<5jSaWaH!G5IUo9N-As;=7#6W05|~2_nq<`hGn1nF^G=@> z^bHL)h{%Um@ob{DOXd}UnkG0<#^6)YK<}%J zEzY9?t6Y|nkW$Nx+?%xXPzrSRQX)w0AeX=ogp@7E=XAxRI1Zl`tIHJZ|%a z@xlb>J1iAKwkh;o-R3kC%~`{No2_gh>eCw&VRoNuH~2U5oO`_7;23iWt%J(LnrFlX4CQI)Y{TSf8<<+Oerbb zO?QpaipOHGjp}7zBMe0?-n=8WWtcyA(o%C|$}#vfW%6hi>%(c;m1-c11o7gSFr-dO zzzHYCF)_t2snNaSg40z5xX1x6w(-)4{ZoU%p^hvh9eDi2)SRA*pW)+bmr5}`5Cf_ed5zso6whVX$9>i6N(pAPd>K0(v@bcjg(vfc@M08`*DaDSaj4bv_e_^@-{p{&Y(O z*IU8vK_#L_Xj`2?%BfuyyvkMYUY56-rZm5n0P_7d6a%De=+XpbYr*rnqGW4@jk`-N zrZ%{C(g5DT@puiZGqbP;KC>RrtQmIGsUyDE6wgEg<1+}mu97C57KWEXCE(K*Kolo< zLYSE@rSf|?IRzaO4xnr@Rs`!HY7-w|+!Uu7bwA&et34J?NwX0td=@vo&h)mJ!ditd zpDv${qiI|oc&Vsd!{)st=9+QP-;l0Mai_(dpI6g|xV-Qw4G)8>c_e*IfUt}(|M^F= zbRpG`={LDLv$~XVk6TqxPD}NLvYv2$l<58wFTpFPX?@JgphuVS6!6MN#qeTxC%QYF_KkYG3(hhOX9 zZ~9jUzQJ3VTVPO)^TVgpSHWe#R5u%t7XBR2wN|H?_OLOFS3ay1sskq8MdN1xII(%D zw&E6;m?yHj(xg1l3ePG!veSx3ZADKHlOo7U_13R~0j=3-pq zAohWAYE+rV!kKJKR6m!o>cS%~8tD3gKs2Ik9SxKVg^p zDsQalnCe)BNU0wxWn(AZLmAE~_>nBiU^zb6LPDb-qCOrIR8QiDRw;=h!r&Yjsu(>pKf)x6p%`0210N75BZJeUM;rX5{wXl7`f@OT~&e;D#L+I$}k zt_x+T33fG%HOfq}fhEfaivJQg6j6T0P>xan)d3AqjgEljiBXMH>$r(vTJVd&o)+G7uN?vd>Eg6F)ghNXD@OP=sqHSp{WusAzNVkj{|iu;Q3JPmju2*}azjrL*TssUfx1#Kj)H z%dD6dF}u;l4NJfP74yTVy=mXzm{?j$oq?~Xp==({c#QZuFQd0H?a7ISy0+t%FbJ;* z3$eXd(LSX48<+`SdOSJh!6ugarTuq?&mRJk$Ez@2tKYY)No|$N54>5@*Pa{MKK7o) zxBBCpy?#=HufW0|J?W28Ymx={Sz{hzyoAat$Dm&fnxA77vSOH4e9+X+>)abltd?Su zjy^Wi>|+n;s1vbPdiH7G=U$2}i!A^ALqHrY^6Jed*-IpQFd}MAQ=hNuzUjxc7fNpt zic0uapIr`jWik#5aSJ@ywM#5*Be^=op*B$|pDyW&Nz$ZOgd&4B9JgF+O#KFv`4ut9 z(}4aC1nO;+S5kM723IT99_~G@b#K&gd#fRBoNb&P)YFX!D?`MY;rheE(ci}?rD934 z$PKU#`u%yew>RO(>K}Gg#|luUB9vc5&Z&t-DUXjVTExVq`e(HrB-m;IkmjPsu{MXR zM(x+T_$><2q=_5>;jUw7`D&wnhN7Ckc9t8WD4P817q=9!JQ4L1DhC=qmyh@f{9z0JrN-6 z%gx$N)#to=d7D3Cb0^n>EvN2S81}k?J@AsoabPo*s7fo>fcFGWbs~+iS?er#i6k2w z^Kj^L&C0q=^nE)MYWfh@{jti{S$t=Zj3hj`N;p?3Jr>o#(dCus{{xEHSj9bV?oHP; zY?PToJiuO%avJG2!tvpkKh3Duf^|c6!r@Z|1*RALU3TT;24WcuBvWp7ucsbfF#jR2 zEJhVvyS+^EXz*} znPGZdD~c(vj89KhC!Sg~vy^}zDY)swxgug&v#txehO#s(WLQOMLuYYzpi(bs*}|Lh zH2Wk8lU-6NkvF|LI?ro6-=ASiyzv6x_+v(KnJ8rS;Th~r>q^4AUrko`S2?hY5->MM zD68#U5m;=Vzf_O~i4&sSH%@*?9~DDFRY5!C<~W+T9Z_7Ko@_&sEAA!UweLA-@X&H2 z$E;?3`z(X_u3kB>p5FaUOMc?*c#5?Ja>DtBitX^~&F?c{YOjU2GVBwKk)>n8GUQHo z4GJEa3|jM0yVQSfPqmiJuzpbV@rN(N$7QUmB>)S);Dte|9}mos9epl~L?F0U$yEiL z_)_Y)I8ogJ8o|O$G+nAXIz!nS~RCiecDU2V~nJC|#-sohQeuMMVhfa`^Y`Sv3*Y zEO&dukn=w7h@u9rL(UfJjOtZ7!rs*>A7TMd#O~w+8Fm@+d!A#G*PP`Kh}cS08dVA= zHBHl(sv|J0LEBv5fHzk>I?|yX4xn&-tPs{UHLS0Kg7N*cWaj>VJ6kUh?I7Kk=_+fpc_;hcdhW%U zfCZ>s&10~dtnKeg`oGnFusF18(A;~~^+qHv*w%h2+zEQT*1Ge*IT zpX#fK1M3stnz$5hnlPmbGv!JVA;5H+l}7+&wdNvph9wMsF>^y=Icb`GLtElZU^T5j zBa1`H*Iq3{IuavFSzpf|Q{LNKL0Q4HO%9t^aP_R2Py{X)Cm+UvV9a&W;x#d%4wHgu zj&uge|)K0fLRE1&g+JDzWnt~-KG;g-hy zhBUo;lsOuT!L%&1>8rvFjna6#O>TU457sIAY%=8eVX@k(ExQtuX)y`Ou5FF(GW713 zFW}g1SHUY=g=GWRsXmzP8@}xU{)_pI%H7l7M-Ccm%QifGkWuup-o$uy5jK=H=jJV2 z*-;jJ!6;^dveZB(%0D6+oaZ5Yu|>}&u`ICGE%eZt=||y$M*_xX+_5SaHIS!TdHHFu z14$g?YMHAOWq?5dOJJwV5!B?~&ZPIAii$FrE(+vyqEr_t5>nC%76oWHb?jPabhM?U=S$z>!GE$QOH!3Hko2Fts8r2`_OUb# zxyJp)*IgR$IzbFNTZ(wfEh|!(-SRI)_fVB!#FTsVmZJ!jqmczBdi)_^cnCD-PXWfW+~_h@ zZb#dw-QMH29#L&*W%B1Y!f)L}>z4(dN15kb}x8(+4>;ewn|h~tLA_y6OncbE^_AH(B+VHy$89N z#w_G!7A|mb?P2>FRq(A|ovm2-WrnZ28!c%kbRFML);}%eV%xd-kgB&Va*rjV%m;;b z6hvp39RR?P!Q6Gk%m9{U5wSG!IvIxnHPyMye63{887M(@`p6_v@g6wXQ*o7nY5Ujl zkxz=5#m^o}b+q}URi|3@^os?z8hHbj=7i~tEk?&cR?$Hp**ZZLETyVZ`tV(J*b?I9 zh^PGFaDV$%RD0*5Y%Zr@pn5&WWs(Wf7wE)D$FG8J-YtV;vNopr(J$i|$^cQwj(hjJ z)zcuu9q9-TUZ1aRkmiUVVc(v+?5-vo9PH%OVkU!_iz(^ZAj zr2ROX?*O7{(M|gk`D^GwrHD-qV8}UkPBm;AT|ueSG^Ba|TJS39`R~5&!ho7z^DLwn zeF8>WQ6JaD~84*sTf1f|Ar% zy#w_2&(yHs(yQ%tbJoJ4fM4$2w+7rz1b(5=3(1^M##;*Xxb3PczN%P9r*&FQKOA)#HxH2b6skR3u$6Bvc0|20J)DWu@@l zHPlZ#qqfj`!}I#-W-Fc0!<&`}OQWMl&EjUUkHv3khRTK^;R^mSieDO?84xN?d`XzN z!J#<-WBpOl^zRA)K*K==lYZkwSG388v24E1@ScA^Y~Ck1bD(Ugy)a>sp@(0%+36mz zCa&?}l=kcOu@g!Q4|ZlDa=tZ%wZ$bi-p@{0u-mMr*pz!oc@L+qr%a;B9$~54VyXOg z3(pj>*L>H)gPXTr^&VpbiD{W)TpuaSD{4{>FaNa1R6kz~*(kW^|3){%pMG5`SEQ}K zcf?zc()s#1@^(2`=q43=5FALP3w;fGC=%3T&+Fzfn9uaZXx2Gx zX{>+~{NOQ;30;idEiP=$K^@moRX7`zsaKXIl0-ir)_*|JVAWzNEiNziR>{{eW;U4e z0Uhsme9bbf1MOG)UG5kZe@}G)%Vv3dDh!ZrP^j5xa~^I-(-$5#qGcKrE0*?iYW7%?YK z*T|$JY7pQ5&1Nd2&+1m`mR`LPH;KG~mY9m#MEaeW1p|OZhZUF_X*=B|_FDh|vP*+r zQ|xD~!SuI;!lM+h3$%2L<;8;uYW$O3HkNHh!S5J*UIrI5xw=i5+01Cp2jM!xwbhmP zJ4{>V^ozH}gGoNjRyXM19eKyd#6PgY&a`zPbwv5mcoO8u>k>Iq-LNt{5;R-m*IoPe zF!?dajCRs-hPPyiuc6=}099cjweZ@on2I?C9SZ;nj_+bn_Sta{z{%1|(&=O#wgP6~b!nHO>7h85r7$_JRZlA`*2YpBRVi zLX%{b#SG!CE0;3<4J;C^{^`wczl@T}ytOi5viL%TOf~G0cGzfF#_F0o)FujDxLuUI z3Ugkm*Pi8#rPrm`CX!8a?Ke15*zn@BSpy^?WlFX$2Q4=eC@_^aQ$7- zBo6WC7O{ZE4G%*^Y4Ls?0JQL1M#Sl?czV<5#{-T*<0>MHykU6%5jc-YV} z?Bik|@|!Xw8UoXwqBnREcq#ewnns~xQNQPc)Q)a2(qjHpN}|iRa!~$9xh{lPz2ZvG z5UY&N1926jxYBNnuF2x$n>@K3_AWN^UuM?}cp1Xoyo107{2BDqCW2?e?u(H`G~z-{ zlM-){JwD*P@gh zW@#yVGgFF5!kr%<>LCgR3?@kBKn75r&?lABW=y~{G}cs+^puh ztNyI}+wU{t*jkC;bnB<|X**y83Q1EoSDyAA$~2FYRe(M1CZnT#2^oz`SF`nYdV9E|`d< zjIIYQ4?{*)BFFk$8o`Coa%V!aik8SsA1JM3R2kUQ#C~KbuT(8%R%cDMf1vAq`B&a9 zH*q!v&hyMU6p34xWEDZ;HY)a+kvUuAG^K5Cn<|Qc?JR(ri@7!;jg?a;$7I}e8o!)o%2`Z z^(}E_N{IR0^jLaN%F`rDraaSQ6>bNcPWbHwkfnNV3eWc*jf^%kFKs_7l}k$(Hfoxq&l!6SF|O^c+fTab(OWH{euX5oPW^#d}$^Iii*lgz7hD?z9* z?`S$|NxVj+ug=D^sQfM0ripZgm9kP=#Agx0RdflLoHD9eqQZTQhC+5rxb8OlI#yd~ z)Daq9*Hzk4$A`{PycO%akX4?Ei4$Thbio*%r7wT}rnsCHV~yIXtdfY^1!spJQ@Iz* zxKk~c_76+xGN*HFDkb{N=!2=K)ElAZwN}mDJYI`*9bS9>vQ^aN2b-#cuUeFbY{W^V z9!o`ZD zUgF=6#^UqNr+_af)B`m%MtGklY7s{K0DccCQ!2BF+?4Dp<~+F3%j9)B?q+p$4Iv9X&F3{H2yoxxRa=rJkK90iIAYbW9H%lqWCoG0)0xOmf&N1i$}bM zOKg46URiK~nev44Jjk0@P9+y)$(IN$!dgOL85Vs7+-v0OCHHV+nCT|wxT%y_q!a)E zcsj=rPIM3PBGTuLG#k3acBe%Ao6_b{sM5#9#5Y|b^sCp;OvP~hLq}31v~UA&{wrJg zSTHC&l$?|$3JwUHG!uS+-YW=4aj4sZzG=K1LjED}10A2d{yg_1z36kKoSQ1rp&(u$ zn1o-^S~6@?J|vvD#9;rs)4}UALZNy;qmC$=s;A3qX>qB=3)Nv%)H>E#Kihnjxgttj z=V$o*hKwV>Qz7`RsTmvxU5c$Xb%b@(?WQm~>>64VyE4wJl^ixI%F0rYyR8jf9`2nN zeLOQ>*Q9lWhyh?KhcnC$zH1ubk~Y#ZatHM^;~XN0JcPxgueZ}sosI?&Nr{|SM3NN^ z>ClRw{&e517vbXEVf@^M1`IJVfxhbT#vLyI9u8-EAWxlJ({MiX7OL$M`Hgni$T?E7 zcA9O(JTuvSCF%GOCfeu>hqRue6o@ zGILM#zURPaHu=gj#?PpK1iWF4oV6M!)&xoFHDtM9-_JbMx^@OD3r+Oi{*h&meu`OVT8 zZ_ubo*4`lieO(e2r9F4n{hS5K70HBT=M)^abG8^%fa-k#Q+s27fPpWw4n3aCGP)f) z&j|b1ICdbto`;&1c9!sWDMkvgD)V>91$E8ODf6lWSe6oJqCB1-JZ)m@T3C*3_lZc@ z^*vpe6q!-v6*ct{JseV`>s11^HCG5wfx#TORx(R-Kn1kZ6+I5c7OD@R;LS}-@is#XEf zQFJbli@@_52TuVo!ZSaR&uG;YNx7$Ny0D(MsP6gEQic;DU$}~9&7r+L+_?%kdY?E8iV|3+}ktb5G0~h z^IrM~*1cf)jz!~CtiDWEqnVMzV4;VC`ENzP}aLm{jtQkgBTWJrS{1nx|eD2H54 zEt}*PFknfCvQg-(rLedWfAohm-fu27o==1k@s3vcb3t%dJ^oM2&TN`vMv_Ib^}keP z_n~PKr78_ZW57$^#+5>8uKd*alI(H(zIEV1wJ=o-)RdloL(Mklbw;4T(rZ1a&Bs)- zqgBA=6LMx+JsV1vt(`LIy=Qj4wH%YK=8l^}Hy{RJBHfe=x5d+-eY@l6NMXSZYlDi9 zoNJCr)S$Fo%!D9$<}+>e+XimcFU7EGO2?*Rzne8A@S6Jh6(%ckvL{5 zu{@QRioi`^&_U2oU~l+Hj`G4U@vdDhf36cvVQ|e7L_;MtVoqFBLqLg&6EHqB&D5s) z4%Se%oegcxcKQAG;Um5j(iS~>=MMZ{vw2)e06D+vr9*PMA>RcJOoWPGRcAJxCq~hu z)QVcsVE1;kmrzC{NjlzvM7PX3ok{s*YCC~ZYFS`G$jF1ur4&*qf}!k z?}yDCV062qhSWaS3hZ`e%EPp@YNRMn4&NwSE!{qFV0cAY1_jb1;V0jfMEN!PTDX?I zR%%@Z)Uor2r4eEfw^!k>!c#*=aGbM6zeB`tc7j3ahT-40Zy`JM0#aO(S>!q!BZ+tf zYQefmF%J%Ha=TrPM7ilmI-{2Aq>K;PxEk!6!lWB;Efd?|T99_$%70=VeK9Do3bm~LrygVqrY7=V^&rFlUJv4$ zjzSfj?QgG~oJdgpXyEi7Xtc1gf66Lmr-SN~PtII$JNeW?ola}9FKnS0QU*hp;^)-R z=6ur58*hzI=aZPfxb3o3*LZI@zN#^rwJWA_EPwn;oaBXnWciE~^|Ich?iTWlg|C^c z%G=%izO~=@mJOuUB1;XMz5JATvQa6 zwp(1Cvpu)*^OnTY3%b@@30G^vuQ#}Fp1cV8soCziDZymq*^O51jF0~qpp%*!$Ws~? zZ5S47L>2{9oKO~h*I@aJy04boCgi9E#(dTc9T_kkeI%dY$Of_Gn=Of?-22R7cz;Yn zR%{I9|4GxAeky#xyCw#B;ma8b(D=l$e%CGyv!>wNIUg1|f<`g%@wxEP--etv^8R{V z^mTtjZuGK1W|KYFnqAoq)E)LaOowvJ5_<~Y-rVOcT!5W2vl|I@Mb&^kHr`S~#Y=US z_mTpIgh&#Fg&BL1;grLw#dNpC6b+iG;fXtyxZ|>5v>J+7@7m8}D!E(w zp)bX0oJPF)K+)&CsDcuV;)_i~!F`pt%&(DX}0{OWc~+(8>O#WHmew;bUlz}yYT^hT1kmW+HtqZkiH<- zw5edSD8op`bd&q>r}!)xlzqhEI~!^$cp;x}TbJ}wjgI>eRmLwR)Zn19GDm|3`}wf+ zJpsVi^n$b#!3NkQ7c0f3zgE{s0iT8AgCn{?c0T7ZT{HH@&8`3e-C%OMX-sqP^bUHr z1-J0Cc+~KmGnkf@x}k+)#PD=>+PZ1*(n2R=#zRIYVJd8L0_^c(#`Pr8mcV+1`Vb?T zd~G4f^rK7|wxkE>9oMbY)1$}?iLV-pA&s(H5oh8R7DL1!@QzQXr&nFp3al8$ll%b|C!R+AiW z*e|F#NQg^PQgzlDaa|0HzzlCm`CnwtyIe+JX?n9H;ald`kZi*Q|1B5o&A%@2fAao+)hd8((ek&O2GRKwgRAKRV?|KZ7&B=w;Z3$?H>iMgRifW| zLU91(ru|{WhD09ma&G2+%wETngyD}{($PMZHxq8nty1^DRju+A`u z>Wn7cg)jjMH@!Fh5F`N4mO>{Jg)kY%zxzclo#c0oW2V}2ZahD}?3ccDlG}yEObvVa zZans@TX9!XD8CtS>kq-emnVD&twK`(^0uvHtZwqc2NQJRC4t1b7=@5Vep%hEGT_MB zoo7vzDJ_dsnMSg+0j+YMetFsm`_)@t)cRCNZ7d~Bovp_0?ksnaosp3aR6Q9u=w_cf zX$~I|EGaCjqX|vXLOgQ%Xy*@Rd~FVsewQ+Irt%DTjA~hQ`y!gY|9*L8>=_Q8*Rq%} zB9^uv?d7uZ$`AL%9}1Ye(JY7h<-DPZADTIe&aoVS=|^3{$9E8R!Ih+Krj!MXvo@{Fs9!h}X%>?s_@DP|w8k zdu3bY_tLqqyGwY_pJ@F`O4F8MjBFeD&X;^p_|`JB8C0Tgy)nnf$tOP39krhRVMDpD zC)ar6vKO}asb;W$lTNq~RXbIPDy(l(f4Q)NhxS%@@I$N|GMmUgJ6$hg|KGc1IRBG! zco!N(I46*x9V&En{qe6M^1mVv#1C9wq=M`C+)2I5{P25$`9n%^sUZpWJ?w0q-WA&s zAE)S503HP^JnuElC^ZV)f~6*1mtsePw4Y?M4gFyGX?>fAxUPdep(S>+A>v(y)M1zn zUtVe!DtrHBo}9$F!g2h#X^)P+44y@VuC!*%B#^v~zDrqqhDQ)yMW5>*0Yx5=$3_1@3dSz_D{7JTi_pC77nGea%Ncy{Ep*V z7LI@Gz1}DIbmNnh_r?>ydd>#)yKYm@ZCRXjiinvDXl&2Zlm2CB4)Yc|WLT zEXU*hWbaF;inacWzGggq;UoMd zWo}cjE34o4B_zd0_@m0o>VUYTvQsTDE1LknhJ)4^4;0Y`QN~7i((SXo+NM?iz^s4B z8~95ep$nllynTS`5@EvX{)b?6D-quYWTA5Ar1knei~vFo!daWc7EDH{x1}~bl7M&) zeSZ)vbp1EquMP_qKG?D}U6?KQ(Np`VjMxQ4P(*jlvPMR?TGYRETvd^u$EC}m3O|U; zv_kQ6i|ULqq+McP$}-~tyYcvc9!XvNKW*f4WA;7%HTVBL#xWe8_09shd3Tw9Ku?D6$qjZ@e){tKYL&4a(h0aWk++SU#V z5{qJGdWFs1kVJ@XaQo#ZUtnS~D^^j0HbmYI|W9@FO~S^F=)d>Zv_ zJWgv_6akya%w`-P^uzI({_y>7NpwjRyfKsT<81BY3Gr~(HO_5A)~~+!+Dd9RpydXN zTJ|6P^hnkGtDlwsrJrqMrZ|y*(@&efg847~ypb#AY@_3cv;V7~8OO{22&O;VU;QLh zfiLz~Ub^Z&=fdl!#(|BIAFk*Nt?*nx(~UeS2OBVc*h>EpFRf*X!Dm~jcWf^{5q%?y z)7agx@xyJu>-&rC#J{kO5c)*4Pn5Wkn^<$U{pkZD?6wKGP`Mv~?*gQTjgY;m= z@ye%}`d{ESLWk+`;09_Pcl-nHb9k%V2>-o`vO1fxE%V?163|M#fY#P!y~FFL*FXCC zm)n)eXV}XAe^7lq!WUH~ROeo}b#T+;->0*APulY(1aw-esDU4&dym~oyW`;%DGilk z46%i#JvF{|_}I>5LwxrCf1Bq1{~!Nb#mF>snDa)4bHx7r&YuAdg#I@ePK42%Sd z3-!%C9~^$qz_ubtB=r2AVKz6%rD*h_Cr#72fW=it{QltKjQ~M{H}WSd`N799?J7yr z);A(2D~W-}F!d_Y6(RzhZ=2FqJ1OD%WU{SG-yT77Heoqlg$I*u9SDe8){owkjs&Fm z9owo`Nv`iDPi?i8$o>-MoMXOwql{kA%g4-@xN{`#ST^6dr#PV5iCE{uREYuzu2^DMsh*~}k;;vV+J z^0Mm8s?CAZ^spO+QV%u){PG3LB+T>R8x_sC2P5lhpAr9Kg&(uLpbTKKS~DQAg>Y-k?1 z#;1RFiu!~b!B2c;2QZnCi7C*M8E1j;|H%quC(*!jbtz#wm=kF!!_imSF*e0;#U$5d z{OQ9m&=!pk)=Enm8^SZ&nf5p+g1pEwa%in5;Qmn6M<6n5^CVlp8 zexZ1{UuxF-r>xqu_nOW*-(01~?GMunrQB^gfBeQbEpC7C>PFcw**8=tD~N|zsrV*C;P0l|H?QH!Qq9(`3 zEn^H`$Cm0<;!g=p;jn=YJfh$GQvV`q3!cFv+M@aD%(j;RYBOK}PM+tcxYl}w|4Wjh z8p^6Q1CJ4URpPG+jp4Qfs7ob7bMAau!f1_DS93cI#rjp*CxG$s|p4ZBqU69JPh*>s~Si!^81&(zqJmK60tY zHnDzrrB0&Sc?&CKFZu}ip$FX1UxoN0sA!crOLKb}tD$!n=|MLNLENbp_~F~3P~A9c39vN_=T(5LN?7G0@cMfGU47CzJUWi*p-m!qvK{|w{0RkitYCyWuJ5oX~(tGbBc;hImb6fzB#_}jycNv>X+ssK2&l&4!gvw5sm&O3@`e%w!@D1CE7M- zHgu^GE_b`r+3+T17D3_6$HYS-@vawx2XidHg(D2_33^}eN!_WU<a3V6y%Hz~m0un>+nMp2D4LQay9d53eO>;oF3>CY z;d=7QuK)G%&0psW@qKv3Qa4R;gjcx08GA(N*E!3(@f%E?ooqP!VfQOw*=Kt0( zkR+|8`kn1gVqsNrg+uIc$zOudoV)v15DF5@EyPtCf+vK!*S)2}FnBbmID{ePgjmmd zsPwaT7A{P2g-06pNkfnw9zbSEmRoh}p|uANC+A!xS-*EEC?cZ=R9fy-qx!5h~#4aiQ_O-yVJ-R6zgXcMj=z^vmC+^N@m7A`ymyLMzMPg)xXg+;EZ z?(_eOKttRhVb~fSj~YJ?Cx?mW!`9MruH;g(j2oKR`V#-dqZ|@h)KAPkPX73k4i}xT zZfOKbspuyAEz`$nycr|anQWj-$f39>e0*;~9TTbHLqc)~CsH7Mxu&0Z>e`sDo{SR= z_*d)p{*iw>DVAb^as&QC_=`%_GUf^QBV42LUq8tDZ}FDwkTzaP{Be9G9@qSgVcweD zV4vk5qMo~P{9qpZjlVJTGrxV-IYkNTTdw%B0sgmNxiG6ezHq&3e=4B%V?{Df5``=6@;MmRnhS2^0g0g6XlFXdSf`nn;_4zttmfyZTAy2`5>8NsiM- zk}9ziHFqi$!`Mi|{IMAZG$ad)AlF3pR#pqTW=~er4NswJ{C>RfQXApzVwd`Qca@6w zWhBuWto2NuZGs55JLtg>AYwmUqvDzv{+-!{Yc*D-ftt$4L5*!U-FwY`z~i^@`d+^| zIsLqyT4<7>g%il#dp#|n*Z4T+{HeePoaXKmafBV^()}zO@jr9<(_{aYIu_Eb--CcS zoC#}S_u5)s-)O}3%v9=eYov?puze;zBu_`_7(oOop6YxgLoS->{&kUcf_pVgE4c$C z(s?_K1+XO!bu&dSDljjA(6r^8B)8t6ZZ$gDJpS@_a7_58Si`voE!20feGyeYQ+r&s zGWopLacqBm%uSUL91%i*g2Q<(xx@2Mswbf%{G``59i!f|kO@yoOO=Im2u~KUfv%h{8Aijk#CQG^4;y^+ z<86;d^>jBzkYOrFbC+?7Bv7WMk5V<gOt>e5t18LFbgPbqxSoGQx1nB?i6Z(owai8}srgax70=$Ao?bekp%)zq%t^RKzq~#5AJv(qor3 ze7#p@HpxM1`{QS`Lj84DXmkXeDY3J)nBvF|^mU+Qo{@vE>nrBV$C7dheG43QZHBrm z`Qrrk@q9l`cFG9ntdif1SjD)EY)h%y7_0j{ z+F3(G)7MdLWDtw;6KHc@EdhU{IO#=88iJ-{i1o2eJZZ&A3l>EgDL=4h5Q?_b)IEtj_m zR(FtKs}DOC${nG@x_~ZNb)lU>3uwqV(K8J5vF<4z-oKQ>6W+DwW(du)r6|D75f`%C z1=>dJj-H?IGIPC5y)MMjKi1O8)q|LQFx?TLBwnU4~M^BdR5T> zdEr0p64uQei)P+WRbKNKj3*V#%S%OfVr?rBO$9yA^qz~1zuT z$kQe|k&6f8#SO!ep^ZKsG9U2VE8iyCm|hSOmYYusb`f%z99E0@mp_t`A0RO*g0iA< z(k$Ke?lXDrzxvmB|Dif3-iRJ5$sfOMtN;*pYOYwM&S-z)*qpnJ%?}NY;JeWio{!Tf z;;aA?!tfFwdl$zg=tgN$%92A@yHqWw4IU zu8aE<8J03cq|NyX?-t!ib9K^F-@&|-$maJPHGF!t!gIB3bvWGX=|j{K@|0A{BVKc| z-za&}9+0L69&3yuM9ZD2^vlIbNSjdmtQ z<95vHPzxX^GR5i7M$@a}pMi^;spCtXLdLt|H@-nqJZ$=uux7eT7RD3+T`SW%)wx!; zcq=9>02?*i=LD0+w|dTIODYggL8xrjp7fS{J#oB6-VGLB`>A(w_{Zt<`lz@@g2e`_ z7s##t;UnJN#}9{}vTFR^vPn?+h_7DejULp0)Wu_w{`10)&EL92!P#tat=KLj1j7dB z;K0}&)bQ5T$PZ6_0wt^6`$ExT#N7;)zb#?4DVO%HT><9z5?VTsV^0j&Dk6;h6=eTn zz0co@^!Gm$j2_Oqb2a@CFv&{i8sz_WdH&Igat`+6$2SU_zn|i-zg}T9Ror-QZv6#j zy*xZ$`!|ynH$4A(+u!~23qzvSDN_S??de{fBYvVBL158?|dO3etTzZoO3r*b=m4Rdg?+$>nGmT*B5du>i2ogEsC3bcvDk2 zYTb?`Re#*Rd32AcK`8Z zoKAziJ;=w5rQ2a%az?Rw> zr$|u#7exZW|0wMr*YLX-$I+8>2n5H_Fx2C?3`Y>SosHX2)uC9Bk@<3;~&- zRF6c}CGGQ{cr~15a=llx%fpiK0UoaEI^>$71JW|M1}by%<_}^cDIGqpL_ya&qDt)}^6N^v`VmQ%>t};wA4? zBj{`3F}*SSuo_H)*ZSRk(d1lZYB zPEX389WOx|k-0jL+$9KqTUiR14MEr5T2Z$vMX(FtZ`=BwJ5;)oXQ%v$A!riM?enXGY(DS08o^?1Bbo~6f@uPnJy7DFMg7NfGH zIaBKWv<~s=zTmqm^k*gZKdtNd1#7X;TEQ!(_1sRIEBJ&N zl~y(?J_27aGJhnmu!?q-4Go1M3P$(;`Xp|G+!n1xy)g9L_1?<{3e{@S%QegyGI`Q` zH~MgNG`dnW2pq4v`_u=>@kR5qn$`WP8|8ZO$RRe<9DSc^rQV3!oZz-m0O^m6`Ipp+tsBs1KhCv=v`dmtCkcs$aNMa*k7>LNh6C^<8E>XF5Je98JRPbT$zCPC zsbE|8!FJkC^APVal-}`FOaQoaO?|^4=7YooYQ+BQJdYy9uh#}2`P6<}?G;WS6fc5G zz1nrRO6$VU7{NSzO04vHc_%1aaOSz-HYWf3wLi1^`wnFK)s^#UNPlovngm&m?Rg+t zes`8IK)*nC;AQZ8toCViL*QAzlrpm7JDN=g!Q0KUXL#FmZ)H}R<02Pmnlr4hw?7~_ z)#_`{aR68ie`PQA2k4KX<;SK(>Ngvz_}zA<8I97cLr>JGdC6LmI(&V>e;ZH~bW>j5 zv(7yIWW5bjQ0)P7xJGvMRNb+4`+M7ynpkSDLW(J6Zbaj9XQ|#z_|pSa{7nMNg!>wa z2lXk7Uz+5XZjdec?^xZ0fB5s#|Cl#Y4^=D;gQ2!Yc>=v*IXq z>=-aKBYFIctf3)kaZ?XOQOUK*_w=K21ajlDS#32X>j~#8BCU>HwK47w>OBJ-Yc>$u z=DdqBS^b>SD})+lS5K~!bUu{M)P31UlVu^wv~tkZf7YzM`KtcQbyvmymBg%rcX{JP zN@qXz%P*aW&mZwRKckC1I9sy*F;{Rb8z=QrqVOkPIzX!9&eT0cX8%hcoJOn&G~oT8 zS^Vc56??9VTNf!QKr~jceCY~#xRr}a6s|q3us(b}=^Qkg%csy7;-imY%310*_{6fV zUGh?y0 zVX5Cg|9R#AQy&Dnk=lG8R&j^nS79COh}*91m9IkxNVC-A9z;gOKml$Hv)=gaNb279ZCd4h;} zGIm6zq4*gVz1(Uw#m2b0T&TCHPz_LIz9|ZT!jlkE}1*KZYvnqrB&PGvRPB8wJ`eEqj(AKN|dfJVQhq!TN}4&a$oS)I}c!nHWTJ za5(BfmS$dA){#rKqeAA=XP5a|QhcNnHs^--dqY69MArDw(K~q?n#eW5&UTe-lHEr# z^T)c^j)p=@Co~Kx=qHUv zTHkFYmv&*t{b;rTGD01RbIxPr8_n$A(U%<6R_g63xm!#V9fMsz@dmVrsiIt)KyFOU z#tGmuv0C80nhrauBx5^*z1!V=JoH1OHLLN?wpGj`Pp}2_r0ZjRX1E=5sIk?!QbxI# z0=as_*8-L)DVa+Y2{@~MG&Q?VRnV^>zP!9_@MJ4`Gc92gv5|3UXJjWuR7aChzT4(T z#k149} z+6tH=U`HtKNQ=e0c=|8-B>(3M<$rWLN-CCt4}|Pj?NnBgarX&J4J`_}eOCy9_M2If z!zpcpKwvo;(b`X%C7ue)G4^vAVczq!xrusfT@o-M;~jY&oe<1-rg*POdz+eV5OA3| z6BWMLp8mxkRpNv0!jMC?kB!H9(Jshfbv3-$0$_ZuG-fjjAQ$rPD0GEy3Ilts^>q;s z4fjWil4TNev~tOmv<9~Z0DIM4HPzcDwCTtt<8`ES2G3e+W+YfWGa`_5OEcY?gaj)f zk{O`+W8s}0Nz#=${)~OqR%t;`(J z1NqJN;4ZID-upiW`~>V@FL{C1D^BvhnHJQsYBwl*=PgH!#}Fj!#6j54;Kx?u*SfY* zSlb7vzxY>77m51j0K|u@3|&G;077b{oee z?i&92yVmqi${%he8;clvJVmKKbJG{TCLbceM$&bmoZzq zlKIQkf;u`_a)LXw`O5K|+L!~ypt8v94xmOZ<7SSk@DF-dh`^_Ir0l3d_8<+S+uhED z=*|Gi1oAM0`Xa|*(xA&-3Wj`FeyfOfa@)%I zVYi(SCj9KeJ>Be-h2^Y>E=MD+(RQ|R{jyg&ZWZrlCi1^lY_f(xz4oQdx)nZTVMbmx zvfvms%>~q+nnGqJzzJ5Q>D%mrcDr7#Jn!6&2s|Hr>7#h|QQ07c;-uvZmsA)@*NPZ6 z2bGQ^T`0`qUbn_4eErb*hr}tn@{c}}^els-|5{=GTkjSVOFXdDTxc*T_SR%J=W}-# zg#}ZoL(jvbT{*7ITr13-8ku(Sw5hrw^Z^N5;}j<1**OBK|KBsk_{3q}o#u0Lq9$dj z9UFXN(e4ELdPWvtObuf#P?H9RWJMOBF8~AXcfV0N(wbpY!^^YwIu48e!ZA$IRwv!`4ywqU15Q^Lz(W5(@ z7;#&gD5<=gHSFd42hNRcPs7KeE(JkPrQW*>_pT^6Zy5OQpvz461uuD{>}yH(C>@zh zt8n|KOpFfq4rrFKy}C5hC*)FN2xYKo?{Ib{1v%R2Sb!8$W2R!hp@S{Ka`ljOZ z278#A;|g*{Q1o$rtvDI^ttZpP)!FIcH@%6YGr&0`3|ziIEiF$Pw+4u~negcZGT_x8 zE#Sxm!ptD7hGU>-K`urm)@G_|z%pP|!n@JNNH_Y!sTF|WAZ=aXT*Tb5h5cRS>K79g z1S&o3W4rV6X1%J-761id5YXU+r^fHI!}EVLeD@mZUQ<(3%Ko6R;P9~Wc)q{8sIroT z1%wj>#9%e^VQ@IK1|5;d|2iv(thrFV!bKsTqS&^tC3M_7?6%o;8-F7kA{{JA?+LkR zBDto!@pm}f@(+c+a?m%-%>G^+kt@#2epAPZnx50N3bYIaxr_b8E2owBVi{68ScSZQ z@EH$JO5_M8R{?&SitKC(?XNUnz@Rl6!t-_$zmuZF4BmrGa0~&~gEwc0NHlTm-Q<+M z9CWX4b^~+}%5qBD7;1elqyv*#n;p6K^nlLglC{N3N+~nqTMqyQuemSh%Xpsl>H?R` z9}b^^n@58#5#JJ$mn&RjSy!de@sTFia~c8J31J6bTjD1dCgXYg#&~!K*r&K;*9^=u z&3C=<5p&wSlMVNC6(j`1JE`t5sws{^tVK&EYH!u>gm2+$>F~I9>ZgUP@o&$%3yjC+ zEYzkvFN~`GV91Yrmt-? zOuq1ZZ1v`(4n8l%I=Q=5$Qh=Rmf!tFiGM9eP|lr_16|H@1go`Ez)V0xL-T{d;l3ST z6$aCi=BIYd`xbPD1k|_qq6I`!Bi*8#InwVr+~KP(>j5>JWPGlAzBNHeu<7=wkKZIR za@4`ad74z*C^~e}Jke9gV7deMQdR4^c*2j_^voGqr7V&%&|0mWCXNZaN>fJH!-j&z z=yH4?#q{X7GOpDlVbJ{KE&7lx!c;`DrYDl^%l6I?P#+n!Z8#9!XwjKSbF1t-+WD>4 zl3lWYD-`=t+omryvXk0d%Td4DTMXH7$E=bQOEZKols zIN7*eC%z&~TOzoLl{6DsMwlPh-bR(xz_ZiP;YA=IiKkXCSRNo2z}D?BUF8~@g7D&) znTAzc2fyS>)xtZNyj#wl{=@mh@T#6In-UB;kT?{NbzDgbK731(|K4(}qef;DEE}1R zjKD06E37xpP%N(i#=cx-rO_Ma;M$rbc68;2ay@p|x}HWtv*^!eOYopgG(URi*uXxp zlX?5HzcMk4pwV*}Sm$*16HkFH5(Fk9;cF9HDe3-d{@m~^y>wf`t>6V$B4b5YFMtU! z6#Iye#RR7_(GTSig@nPkT`?pe$wScKnOe^b@ARi~y)SCE_7%Na3ik(@n=R*_#axBz zua1>K-fJ?{*Ek?W3;Jd}m#0&!)rO2(%-?au2={HwiS#?^CkEbvZ1n1yeXwHO_>y*2 zA=w~?-j$m_h?^clD;~Qw?%U>e;*f1x$&-IH6gaq1URF1^Y*qg7#WGQ1Q0l8~>Ji<% z7s|Fo5aZ}q<(%cer0z**mK{X%^A|xw5NiheLrPokhj+*)`&NR(z3R@gse81e(MB%q zNor_k#j&B3NISF@4~5~bkYl`ThE z;<$Yk=e(>6W+DPWYVrb9=a)mAY$SXd#Jic%6WfobNfUgOqIG2!JTpiIVgb6%?^?k1 z?iWa&OaX&Q{qgRA0o@?^_=agt0X`CjXZjQVEw^0gP;l1C)UxT9eL5_tw)a2!tjnxg zYx0ct#$bMe4q|9*;1Y>RYVG|Y@&Kxg)t-KvQ^&}! z1|yYXgS+(5DP$WG^pLB=tz??GdaN{FcRhToXhyPaMPjZO*ldh(t5z#E7=8!h)G9>y zW-uQaryQtTwXpJphu75iP9yDlk!~3mUIMA*pCwdtlosm5jCvW7CCd-lZ$k`CSwJ0Q z5%^q$bTL*J{a~j(4i5I({8dSVX`Z<4K4c2IR?}z*6zJjMmNB-_#W#)*J_Wpc!MZoE zi;dg4!lVK#RLrm^XxLJ4c$Vx2KGfw>tbADH%9_9EiWGN+2Isk0DFUk98Xm`en$-Vb zH0+B?V%F1oZ+T%)QC&b@=#MY!X2wScV;bnF$&-#qAAdkK?0_=-ZdiG;A_9lDx{vSWp2$#w6tZIE8hH!wME(kUHhbGRu4!*W)6^ z=FoN~*fA0s9-fv+E@8pcr0Q&@&G6iYZ(JkDthY@$4E)8nu%~BJ#17N8Gu2kfRwM^p zN21VMLOe86@rK zWb`Jqnm?q?CNEVR{6*3Zh1?A%*3PlePsMwo*$xxu(YVKoduTay~Qm zngHk2$N(-m4M$f#qwBroMKMRnBhuL_j*77aD(86x|AmhzGp3nkL|=1q8+Ju1lBj1Z zCdQ-oT?kZ*Q_IES$UKWQ@EX5&G?iEi|pR&VDxEI7uh< z*H7Lvd=Brdw$5hkZdEdnb+tog!@}U0snr5RU+srlRqKg**Co$o2RWclt3HxFYrc&s zWHRiSTDO!(+?UXi979vDZV8cKiMpM+hG6bd^1JXewW}yPLeGTd6`44167%YorW!_w z#A~we*$j@Q^0uq;lYydRlY=`I?FiGY2JLfLAORpFWZilm{8Xn$Hspnte)ygxqp?j# zLw4SXByBeaW#{xzV-)aBE6MLuOZgMgcf8HhCds}7bbIhke zdjI=5m)5uX)M&3t&7Jz}YQ>+WGl@!J3~+Y-SB?k3QFqP4T3_GQ;+{QH!BgDZ86$LQ zHrrr$uewhM$`%D88cTMoa_@N-Uu8e;-Dl69+?o&M6Lzq-=`e{0%TI5^ujILCKk=Gj z1-8GQ-YXDPW7f zib{t{Q(SD)TVCEPVMO<-)D-w>Ndy&eD|krAT3-2N7?wL3N`6H+-mxlG#D15F5@092 z%^81;+b9S+?}DV&qx$=?<|3Gi3Fs zcK3evuNc1N@}U)q*_{W_jWV7lQo4S;fHP^*49nr>bTc1`Uf)ZN{GwB+{BEpL%~PhZ zHF&JNy!P=@f_W7tQXVVP&UysWFu($Z(M8Dx6?Cet?Bik81RP790(aD<#FLmktm-;e zszD^+z);lubIHdy(++7T$(*C>)@*4KwPJ+XNW|e;0+sKl>b}dp+3E_9=ttD>7gvTruM%YUbUnv8yZ}#$)SFS)3A{4)zPh%Tw$#}x(2vToPv7S$R2qjSW)Eq z5&yo(uIBr>p86uF%e}K$N;$Fa5XwDmQWo2!^ok?p{r$M-7L!aGdeQ!qDJ^#J*72hO zqa~obv8IGF8u@WmPvWy5+D{?>l<$EKeE0(gCk#buAOTnbYP-eyTgD_7S{0gc^8`-R zvL-=GmF&!#VY+ZJGyMQ3^pI;cdJ46mD4d}QlJ&o)Z$85JtclZrZn%)j4S-C`z|XkK zT6?QVZZiBrbYdE@4O~Y<-Jk_zePBLeO3ngqK1uygNIq=8MTKNuHd$L?@T@^wUW}aF zQ%RPaumk>-)L^V0Pl~1Mc!sY-ldI^iNE>`-K-+C-8n`yE)zIxIsy3g&0}XL4Wd3A} zQ$lVr*DMge0#+Bc#L2x(FvXIPjRLf@ip6rX?|oUL9ny(4`pB%7LLTwo6$$Le=-l%j+xy0kb*%LEYkdZJg@NEj>1S z)A~u#r?K>Cw@Nc6EC}p-flQ142Zj1PMs4+lHth~+F}RjVmERT7@!V9UyLCYX!Doal z_Ton(5uvcv(AtyLwBh734PE5$taq+Tp0LpS!OTLXy$mvI$m%HWrF~THl1aSBQM9!Q zrc+Ndqom2hfuomK4;^;1d<0)>=LB!zMyUXlo<*+c{4^fI9%6oEGWpI+5E)jb2vRNi zpu4r%ZI*fheWbt#7?50sGtxCh1?pj_Y;Uu8zLtpiPQ%!i7_sdL?B2Pu_CZXQL#vj- zW?+dY?4%Dn*V&}J+CPpRsMLgHVn`_EK|p_BXl>sn5qhPXog$!7(hY2-bv;V#c3b36 zJesv?8eGfNl|QUOgJifqkCvD@{U}XcPBu_b0m7CPxDKShuLMlDA#K}g(|i$`^9=O@ z7}p-<$)ux#EAAm$uqe?7xY3M9m?Arngbj)uyi-cZmh?j^u0=v4Ar{#bLX)QU=6k{v zC8B`3(9K|k!;OP;rdQKvBKj$xfi9I9z%zZKo~8}0-YEynclp*K=f=oZgOxk#Ji$nZ z-!D3MoF1%z@?%%MuD5u*mV5*Zu$XVPxB`lFrt-s)>E|)3u#wXIHUP~C0=MLqkzv12 ziyc6as^9tDD5s|-{`{Cju8fIPAM z>wPVbIFBy1L}=!be~}D?ZulmL4LXD*e;J+0-4z@GOUtHsT(wZNJcYfbLlexZi1-`_ zdJ_YM19oQ$<@BNzaW9VOCFm;bwOLSa$Ek7nPC}SrTB)NtE1CCbdju0TIW3~raL8D2 zwwP~XE=kP9+etSm;%d3Dq>@t6HqyQY6h_1>8Q>~l2jQM@6RmNQ8`YV*`LSgqHQl#* zcezouk}GxGn@p8!t@@Vfe?DiveNResCVE)2;ZOLMgUWt^VvdF>$#8y671g zYiQU!u1|I420tuZJE6mk zqLpzyM#Hr>B8-9e$tp)aGI~HSP2&5;PSS{BE}B|`Ik(%G^oWWaUmPT8&H|`pGb!cuV4-emNeS`6r#Nz7cY6^BpwZGvEQvydqZwW$2aC6hR`Bq^@ z+%nA2o2k+9b%n5D)&|}3XD9*r;P8&Jasu?C?t%ErI$v=M?G1O7OpHb~2cI>vgn3TL z(~L8=&)*@#q+WD@97N)SB>~KM0&dH*qQ|(ALo94s5Ki+i%Awq$@8?v7S!tU)W(mj)*V-DddlVW zsC6qS0tR>dMIt@(3(An;;aP(>M~DTB3gv6IYTuf9p7_*yKsWo#TaN;rp4e<60wxNw z-T;3LMJ;4#R9o`ST_^5cCVY_4Ukei0Rc?eiQ@(oQZ`N{lm#v&>D*m1!pD_6vHv<R}}O``GMt4{ESuNxl+z`8sYL~yh@u< zdP#3em)Haq3a40$(RKrZ@}bk39&$&$Sg;?+h&JY)p>?b8s8iGO$dRLx zT4^SU$j*s4&`nh(01M-@gqU)4bK*Ko-ZvZ6fkZ8g%K?F+GKt0N!*i;W{6l-|Jc=%A zvF6j%nl!bBkNb^#(KX(fYr`_mJqSEVN|d|ubfs^X+GZ!expUH zOI1zI!>(AGa^Jp#eQ!nIhDtIsC3lw}GA0o|@4)}otxh<)3yT3qx%G5&U089E>-%_Z zRo)d*y2vnwGgj*|VdStRB*JJEVuf`o3B=(c#xk&;r~q|}fF+GBEQqo86$aKoQF;6? zN#dh{GOKg)@`zp$gL zU!VL_$tU>P-7~^f6#21>8~47cPTj9?a&LZH9XrRf+y>Pfsb2jQ{V02h#F{P+XwA$2W2tQ-Z9V0S?z1&1EJU0*eI-+*X7+1 zvBRoM1ZkNcrWW-t`s@s8)C#_RtR~jt^MAtS+BbfIa*I<8*uns zQtY}(Qo3h#fmeW3YxVj8fJV}QQKj2Uc7$13KLp7vnaqP81KVI7Ygk7L5D`Tm@UDf3 z7RkFMl8^vECZty$Tbms$u&(OftuQgXfkpx`lsXfhCExPu^25m8Pw0a` zoHIO)E~K^Y+1RhF%jx3|+CY}^YzD_Yo@T@12Bf_`w8^8qB%YWDU)5fX8I{YSQji_T z6;P1kpz{+CU`$2a72a>|XJGfEs z#BljUNap(pOeug{J&J;?5@fJNKZ3*!PDV6l+~4MF+^+Wu6iT@)HCwXVrgXSCo9$b; zLSiUfv}8Iw=sJP!*IIs2t+{EAr9np27r)yvSR8Fx)R{8&CX676&@}+DJ!*cf`#xd{ zbL;sf)&$OJ29N-{@(PD(cFqr{mIqg`v?9L8m53LxzbDOYwJmmckOnp$d_r^X+oz5w zq*61?xR9e-MTd{G>r@uEqco)%^Y%Va(K`oj68!*kU+@Z{m8CVo#0v^PhJc{-hqc!l z$-7^w_M+l6hC$7z1C4@TAOGzhTzdCE&ZR5Y5O3rxP<~)=(^g8!=wnqx?RK+1}&2FHF1RLc@o6w?B zw>nEJGfGxsQ^^Ghj4F!IA-rOvVgi0CfyI3F^mz$z!%2~5jL=5!HAgkprj0ga*VcH5?zB}lVUZb7L+e|6c#*mlDiaHm z!@A2)g&2AvYK*PQH6h4e$nC99RZaP`2R>>&ZLHSC+smf+oWqR;(`H@=gWnPi7^@d{ z4Ch(uathIxWX4517VYsw^cZ=8s!3OxIa+g>7vFrx;G1RK=%{_%8o{&bV62@6%#p5{ zp*F4W4F9r;v<4ZXL&#z>Ya&<;NZKr=_rxE&M{5LMWg}4vOn_ zrNt7xv~ig9jlz#n%!AuzNKB>ow5<5nuLn%!_&f|cM&oItgm2`fu0_DdkwfM=BE$)H ziIHv|O7G!(@8OaU&|TTFLLhQ4#FniZbMluoZDKyp)2_m;QE`3vSMOvXhz9!(x!k~H za+SUrf;N+J{l1Ji1a{XI@f314i!a;8k7hoc#8l@yDDayFrr}HIVx-Mt+&~?f$2AWU ztE?wH?cWS;(VE4}#k+2aL9*D0AhgNTx}_xK0SDO=7or#pcds_EcO8*F0BD&wuwpf* zt!~v@5@;5EvY$m{{*BwSqZ)PEtXqS=tC$`|af2d*U~k?_b(%mVB|1E`R$Z@8$5r(E zYFIYd_~mE=WQ=I%%>hk zTEDbc^X!6-+vMYB?!Byqf849uilFZ*d(@s>&V8HZ>iwbEy>ZpNrbK%%qfPkYyJ1BR zMs#@IiqqW1TU(7@5Vs-gYlVzVdF29FfY9AKy;bytaaCzPdbZIQeX;1+m|N-LB^2d8 znR2G1Nzx`UJ>_;D@Q#G%9wXbW)@k_5lklqE^f`@<=xLK+kkpGxi{0-{c~dUM)OQ$P zbDN}q3!#NH_7v)JU`N*)eqjfXz4h7_#KSQyN@l}0g^mxZqYJ1cZe4PrJ8X=c@rn)# z3R`I0t~=vp)#)dto{sZVXWzZc`$XIK0y#Fk{16H*5^?nBjld-oF2NH;WuP3j3pzwxd31g1@vmO=M=yK41i20 zb5z%G*whaB82Fl+WdzVP-V{N!ziuD0 z61iHeP#@_pqNa=7#Doz{i2L#!4oG^MCxk4urG~p~Q<_J~9JZ*;%LVcBfe`Jnb|b85 zes?HsACgblHn1XL*@k_l$&$JLrfueqll@e?M40djgPfMG!G*HB$_3ufO=unOz(U*0 zN1Bh)wPS@mjD=Z$;vvSqpo(eswnrMc)fyF=?9^w{6JhE8J#4C6{Uo%}6Bfb%Sp8&5 z+Fc!WFH!feTTa?}D09v1+CbYX3NzLvfWb7JMn68y<4`6^9Iu!ZbJ^lQfN3+QXLyE&Y;hrCz zbu4X5Qm43s$B3gyN(Kh#P7sS=)>?6u=O7q4=|Wyh&Xk}nO-`gS`TkJZW(>iE8?+q` z|A|Ku_0`$rmIE{bdOSlpQPH{TI1wVisf5$z28@~*;6myLjE*Qfhn5$*=AbY%gcUB* zyf2Sij6yCK@L)A%{n+hNQ^zUt`8Zjy!B@M9@Gt=-&xq}8fX3;ExurVwgR*(a-ef$p(%oUolA@S-yoy7Agi48pQyX?V1v zoE>M3HLxeheG@%oOWg+W^cV-auM9{wTgwmK5i|A-0t+F`HJn_{`Py9gQcgm%gAF!n za(8N_dNK=j3P#k9B+JQcA0wkuBBqJ#0}zNXlCN_)EDE?mvp{aRNBf!tUQ&!=Q1S?v zjeWmlmIwvP7vkVI6R*^zrHQ4PPG%HhL`Ok+Mz-7~&1<&A=}+=16MZL#p;PI?dyzq! zNg)p+17QvT`iQa`?;#(oT(cUj2R=E9=1aM;!s~}MAGP6HOS<~8$Dlf>jP7RkF-Y4E z=nk4uvgb)(J61>rT7Mo*GaTRpYTgIc{{Sfn02FntsTamfd7Klq^O#KQ!$2W7`jQg! zTZ1SV8COSJUWK=S_Uu|~PotvVjWxcjPHcij-B&y%RIIu7f@6zk z1!X2lIkFxe>I9vtPjwz#c)l$n2u&0d*DSSUGrTQG33p>kxiF~foEMAG9ciMyVOG=g zVZxoV-LVHe^i8$9fzb{f?M6c0iDVNy4W;p%h8;^55qhF_E1^gvM_8m)L4O9-Ld=Vx z{h}0hBNPZ7`MAyChHe%<^S+uxQ}SdOC;v$H!^&12u&f^~p~3RTaSbAWORMQi;ehFg zxDnRSu_dukd^k*@w-uJ2Y)_?0(m$?HDwH^}vj?XJO*+2l-7gH-QYhbW3Z4#i;do-1 z-9Q`AR{b62Gn(oTed$^Ej##h6Om%#)@-04{@t&c&eMJ>j!$zgx#1Di+6~@zXGW^Ib z7o7ogp-w^d^q8@_MDB$yG6fRGV2_zD3Aqmj)XN{;PafS6sg<#Suwyx7RG5y2EX||@ zJVs}RF%F$vBxMLzt1W6(`XG825>~Sz(=L?;enuo*(sUI)00O_P$=h>$_PLhB%*t`# zt=V()K1Svq13QZ)6KWEWCVj~v*anGeoYs=HaYuM0+M%kUhcu@vBwz zWSZ|6bRMwLGtm}LWY3~vg%23BKvkg6C|2deNreKlueoMC!%Bi@VWL)&0i#UhBw*hi zZK0_(&=w{aol@nSme?XURDW^boH`}XOTwjFg4NZOVb_EYrPZPrK0Kjxze4^baR|54 zOor}79HVn6WPi6J zmi&q5CUe}JE>pRu)%(7Yn`&Tw5Nb!wGD}0+b|$h`Y-cECYfUfXwa}3mA!Asm?gM@Weex1ZOX#5U zi)MKcNTIY?0dWMHN?*^hn#TGcu)F#{9BtoUlb1J>kG~} zzT$2klomF>yj7J&Ui7k4E4cB}b#+|qY{{%)%j8N{5Cm=NELwM3;BcvY%!}L6eEA@y z?v9fb`{Zn#!~Gf|sew!b-}6NO`}SHs{q3c&Z$J36&V~gfjXJ)m`s}H^J!9JViMK3> zaM`mX+`Gn8CCSrM$A08f?L9~`-<0HwEPLqDrgXwm{C5PA(oCG=iGXaVWHDNUL; z?>%$A=bSrpe{;{wojLQnm%lc{n!Q&(`LOreYpv&bB>VqIDy;NHG3Dh~c&&yXbP`$` zqc8~n6;9sb-Avn0IMjLvz9Cby-ZoQsB>2v@eN55RN51teMWadN=gCj-=qL+o;Pj8fF|+b7(d?S6m1=!TdG`KuM$Xlc50BD zj<2j6K*p#~B@0>QQz%|x^Ng0yJl@)V*+OiCKLdv@3wu&xWU%v8KSa2xyks<|3~QhJ zfE5e8_D<2b2eH%r;Vtk13k-IG*BwhB>JvpQ@stN3P1DF!4apu`as@PusdH3Rb)aXm z4hUqGdEU4HyU{jq24`SyeF&YS>=i z)3|VmMpyW440jEvojCj>(DcQF1JD(0HTcu4q; zS>#HJ>C;$VILU9Nhd3o`HF^n1_|-)*PEeDstu)0yD{$RsO07@_7C5h?{pn99W4$X8 z5?0?#7=5LW;&jEN9d#n7K>e_GbipmEK=_gqsr8~$vN*|W=q&w4x5|UZN#nb}xGo2+ zn%Ik+>IU7vE^nHmd7jHG8xWvbRSY}u@ki?=#~xQ(D6f1!Axq|T8cmv}9okO!=5zjL zc+6U$J6B1-ydz^Z$|a-GVQU#T)a3ICb6|@ivbxVH32=A=979z=}wLqiu7 zSH%q85pmS>kXPojVtOMqXjjI51BQ>kieeRt)k{v9oz}soL@mGC{{#)-_mBs0*HxMo zD}`g%vK|B+HY63)TU7t`0?6(e7mBm~t8YVC_C*w3|v4r^PF{h6ls6EYi?p{^`@9**#qhG&4(5nq1a~vc3=XhuCddgsx)z5VSY5mlJ!pR;wmXEN(4n zBY~q-RCZ97dLzBgV>&*jX-RF3NN5@tG7;uGFQ9JA+KmWTXu^E-n$ z*#7%EPl-}i>dCotFhf^q#Uz;KYm=I*c@v<&s+fy^%sgi5i=8k{5w@d<9cYzOI93ii za_kVoDdJ3#P^3{Bz;X$AOcFh~nJMV>gYALNTm9HXY)D%bp9v?6<*>hzVJ!fXcFRv3 zo!}7`AyafdSijWOkDMz8>=oHfb*kyO!fM!nL5@{ya7L-Z=~vX#%AsVP8Lzo2*0CSr zsTuVvL+)I78N-Y_pY*3TKttByB;~-);e#)IZ+8apv6N0Q2BA}|>Gz>RC|?r*;Etr% zslC8d)d5Ir;NKc1Q?|CXF6bza9o?9yk-RYO7#8H&m7%!~X=A1)WC{25K!(PIO+#yr zqvQOUtSmjYO(n_LSKB~{wQ{cLV?VoJD(}XU4o2jQ$W-83~ zdY~IkPXNnoK&Bx@_(hdJh2k0gpjUI_>`+P_=k{4oLS3SUz5rR9soCnNO zMxhD8cEd-C90#HX=}X^?`%~Lr{Dt52=i<=sB-Db&5S5-wlRn<{^9u^XukftP(V-ww z$2QERbqnscDvMRBU}HEshn1|ZScIz5r#Hb&9(>8gl{a}Pu9g|{%diA!vb)|_)$2qL zzRK^Z%6x&%aITQ|?rsgReb1<9D~*cxHro=YyXU82eP&g%*cog}zf;GoyviMv#iO<} zb->uYCTD8HEvMccP)fX!S|0lS8l(gW3p5&wvhi<16&yg1!=egGhqhfd0=y_Pk1Fngw_!F*o9 zz+wu|#o z=K_L(o+$lz*~h|LBru2$uQ#(71azEvRIz7ltF!*flQMJAruphg$=+jxYxmo8K*o?> zs7w&i7OLkCC^jnIW=Q|>p2w11;%O*HelbP|Ys+?UH`|T- z`WBoi4`U2@M*6sze83@utmP+*&eiG ztC%DRlEmXaw`Hea=AmuL_-n|#OZd{9dxaXY+&cQ0A-~cH0(EMTD}Af|;@h_)-SN{A z?6k|dmr8TtJ%x__>BEL(TlPo5(soij{^Kt6fK3mK%ekMIlQrbP|5saFG}BA+TL605 zEuChPc`6rAX(z;ZL+$kw~I|GvO@`Jcm-$>%X9EZ`ktb6S>v?wUg6s2Sf= zulD0r47>h4_abMZDkZ4{WZ9?&330lz=1F<%`1k8QfBnDAjN<)h3I1u96Cv17AxkL2 zy%rR}XnNo#>6KQol-U=*i@QUV9j@mQq7?-VW|#UtOdqP~%(HonWSdvtF`P~MFzSvd zFI}>1CFWCA(Zx``dZPFVf3<*%Hfxr?pz$*5<_f)vz?G7n*(f$_Bmp7k7elS;|43`g zsd?_AG4AW;ray0&eAPbVyhvceaw%T}dO6xE(46p_;o=UD3s2_6Z-zZ4*=;%H;U|v| z+Dx^JZrvi{1L6dl-^Kr-hUCP8>f!fQ!FtSyy-A3POjVB4sGF3>{c?q>B4svWWWid( zHAT)5^hY%#`4p_2Ued#PYyw#|MGHs#$aAg`i-Nrk(28VN9)SY zQNI~R5`Dh^crz0IM@!l?#ijbNPP{jxRZDbC=(wuEz59!;#&ELS3p+}CL`$7i8X;v< ztQ+K7Fzb;QdG?cZR8&QmlT`gR#N8Ri*I%eG?x(hp5zKebEZ&(lIh^!xrp;#0exepj zQCE~n^bo@?WAj-B5F0C3My|sUEX*686rTHxwZ>S1AvSnvv`%1)4UI$tAN+ZI*}0nbZ(5)a<5aZMj?D$6EGdqb2qpnYEj&YZs3Cr=U7BHSmWMT`4$b8K|7 z1Th0}KA$rUv&JKA;vYM(QFV)y8vczAL}53%8l_@9084!iYbP2mM>KfrD;-SB%J{g9 zeMqY!w!fNOz7fos#<4tY+LpERalnY?@kk)!3&hCohYY)F-Qt5$g3hN1{ul2?I(2kZ zJ>@)h#_M}MfPAL&u)VHYwxR>C3k~G;zTVluG+D=C=P*Y5ZY5S@lxVW2`WJtmD0(wD z#4k&}{-hVe+BLk32$C8v{a&lzmu7tRfq zBS8QBg|N(RWAA-a`z_np=3hW_M%BqMpSME}&o^PZ zCxI6h1()I_WrD+kne}X725cS{TUPFJNh`%Wcov))a@QYu`$6TS zJ++G;(#hR|-RgdlT-=A^Y8&!CygR;Xcb!gep^{SNjUlWY*$9X^MQG> zRq5`NapBKeU()>WgIpM${H{kBuU)^6gTGi?DkE&65=fvpsExZhy~~gs1=I%1U+%i(fSfz7;5lVR`?FfzO%*+ zG`eZ+8~jYgZYc%ZL8lCQGlTJu3%^J+yPbpoXk4$#ZfK8?s+df9MY~i`Tt~PCJ-c!o z@~ux6^y%!!Z-(Y`@9eIR=9%BduZ*Xb+f+s9g(;pZM#vZ3b&0fzztxI9kXLL2vB`&r zK9mmA>b*|8DKG;%?c-f(M-()~+yg4&BWA74@}^+Ac7olpXGF0ZEt)^Og}4#Nu@=7> z!WJ7{p8WmrOj;B9VG!VA5AzsISU@itn8{xn>TD&Xk@*JTyu5C(G0K%hj?%5mJGYqD z*z42aE)MW!XD9xE4`6UKQ~N#+pHfv}xV9;;0|@rL>kHrIjO?kD(n$!`_LKn!>>5X^ z*Dfy%q+IjHqiIJg`yHFfOT69C)5*&EO`DPn5bGiudvnu+L|a*T4!sncx$M`pb5m8q zkZEIAk08ikjlOl;hxUFr=%04yHjtM(@0P0SPUfP{f)lLJEIreS%6!XvDC@o)fw8mD zyGR|>0|UcUkueacPN#XYef?SYtJwH9)rpjBq*l^zhBELhb^4UC|KPapEw{}Zn&0M$ zi^Qo-5e{y7PhaR}zBF>ATrcm-`0T=h1Mf2%nN*^83NUqb!K%~Sc>2JS)WoIz#+dM< z&v86n)rN4{G5#pSWgrhx9%EIg z8q(qcGH-GLtks4UE2QS9|MLGH#QyCYl85QCh<7*CK1*cbnQ#!rrnX2Y#CP8m1J-#> zg$;lPq&l2Toa96kJ|za9zsjOUM@}J4>3tdV$}jHKe?J|)b4WBhvUD+z4ay?kZN>b; zVF_}|-hTuMC!8gw7~RjvCxq@~2RVJ#|NdW+O^-`j!o`HBH5#S%&;KOWUiB**XL=;^ zx}aSX5FM|{34g@N+Z@(lS(0cGH%XbEHScRk_fFeC+;bJ2iglpqjr`}zy06~G1y@?X z3$}0oLD47aaTX0gj~4}CABLuiA6-8Vc$1m8Z9B2&J{2w3dmQj>@Y9x-;7fxqvjIqo zmr3~{o!C&TAg_MW&0_yoc#K|y5Pi1_eXTu4+W2|*obr2Mi6N`vPfh!KD{33r~>dx?@K}=190_l2ViS)m`d#$uvp{MQP z-HmLVmZm_D2Y37p5-zlEWK-CGGhCrAKg7P4T?9Y_Uxve3I%>$p)x+9wyGm9g8xv9Qwg7 z@l=3CkJssspybE{Qq#Dp{LL3>NA_ZtbTfoQ|36mMijNPR{;|48fKB7z@ta%wH9>#R z3)zr%yEW*(j{Q+C^zyOCL}RJaY7qTX{B`okXC-luZZ>)cJR(gzZuT12@JQ( zToF_>UAJmdyilrKH7|S-k{+~d)uep2?7_B~qQt}y{UH=jSw9j`DN&T4nzjhIPlt}RF)t-i?IYB!;j~@W zKSk3MHpYH4R8DSbhP=~`e#wg(#IGH!>d{w?V1T5DLamx05xXhN?0s7M^S>F!H+}ME zrByui66cqyR<9nc#+>r)x@!H{Pu5+h*Rqtn{kgRWZzBGukR4_fgY9+j6o-7wL7$xYduop5oJ$ z>bK6j5zcyw7XR3S_&m}QaX+mKGZs>kt&W>_wefa)^`j2=e%bRCpUzZ%b>4lC>{EpO z<1Bt6zL3F9h6D0OM5F6B!%D`u-Ft?Vo)GDb&QiLT_Mi+}NWllur>OIfabZe=^CdT# zTLVqP+)ZaOIH{NqHEu8MMi%iV34uy6ARg%t^~Po0hPB%xt}InXZ)A#8Pl6r)3mQq= z6NN->ZD2%6)ob|VS~WNV4-Z&gO=eI3Uu4aJ|6^J66Tx}g)mRAYcw~iqm`T3wd!B1* z8#4E01)>mn7&f*Sr(c+_^Up6f2`O^shCp68%)@KV$344kLwPPYl{%}7b&aPS)SBjF zdFf?vSX0-PFIhs zrqhihwN@uO2BlxP9~N4JVt6KrdL2DI+E89yLM~euQ~vU+Q4FP>Vl}u&1uw}MUx3b~ zUodbFQe$1O?-HW?x{bVU>e5Y#;ULySp*pKH7>rG}5@w`I(YFImne1eRJvQY&u@v2)nIT2FR3}>jb-*)QUDl;Rw#>CyhWquO#Jbd z3^x>VJ&q%X++#0_C>2z8%|(PD9=J_;a>?&SH2rAxl%P%B8+XzR1)5DMFxn8 z(@6pJWxV!QaGj)-)TzH2o1{lo(Zf`n0eaT)>J{If`^YIUz zj(;rLxIK38XsSXS5}OsPDSF0sS(c+^XW~t6!?;t`RG|EUZ|6k@fs-L?_Iq%}W^hKi z=x+w-OD#?Cdkz}){PkwaQI->614i3q{rh}SXFB_|uk&%5o9V5B4t>r03G|ckJy+!H z;YQQo)Q0qgn^Nj=y}eVEv7k=tmHX_HcCny3@4@z-+PX^p*E3-7R3QvJl`>8mvREcb zpIf3KMUDGZlRf`1Da|vEGAxshbELmc)HJ{?CzeBvh^@Q14GHG9H3DPjMzRY&n%61W zXR?(fGbvJB@q51+V0b?UhBeV}Z7rrs&CJ&D(Ndwohx~T|1@yXeGZF@|VqW%sdG1iR zLkpTSH?*{n+5KEc#q)MQT-GV(_WVE()Y20Q(_!Re@$h=3+1FZN9ZBZ+^(WCtCQXXt zUfbK^bu++P**@-+t&;*CxP|l&KRmbOtlcyx{a{68T?sEt@ucLp$^O#V$T&>KgvLi& zCKKDCz~O>N(iMf>4>kklC%BhD#i~%GwF|LMaJ@n=pytW#%a6w?6GMz^RXvq_w0NQ3 z#o52y3qz|*r5HE&`k)BMky@W(G`55wcG%)Ft4OjeGQHDt@7{}G9=JH3xp>sZ2xgH$ zHWHs#6@9`G;wDmM12fzr!tRSS${2d&N=cj-#7kl(LJo;2Bh~P5Y!+@o=Xuh(Q0s}u{k4&lgoBkQ%>=zB) zx5tQ!;E)AXBVONeI)aa6!Mwom#JknFG-NI<_`G7-D!4o~j2S`yRwkGfX&+$zO?*LT zsf#K>3w$?M*yiI)R$_!JaueQdu7=5qpF8pHjo~cvA1_#oF~=g%R1gTJYB0e7AGJ^| zm`L(+eSwsu^(o%deSaR#K4Db~C;~&r5qR-wRj728ZQ05zE6{vnp~gddhwP`e9KUY0 zILo%8SnNuTm+-O{ACNFM2nqm!!G!+$Bdx#eSL6=P5SA2ZpkC<>vnm;RBWjMZYASfS zFi5W1-nxFTUo6?t;OABFV|f=8|yCBqbdIx_rm9cf8HV#6sqY;3Z0 zQWt)0(~gt*mS>7SS8bl(zrAVH81wKIkRzF)*4J!ay(4hWRk?GP6|x%28M zX9boB6Ha*ZGtai1cVBY#Dvt@M~($uq|+qD)Zn#Qc{0~ zor#xgP;3%x(RHVTz*c}GF&XhyBl5A82%$s0Xg-PaoQT7Z>8-d%kSdt&!i5ghoj1PI zC%t-=;y`e{iI#R;q4zrZz4&#mAq!6r5CC%6S8|SP&d{pVW21%hw8hOdkgA&&)%FEL z`_aEYaF1S`Yvh%er2|)F&n!2thO~ZL^&)u=9fxP1f80F#bk2mu?hae88xc-0f_~NETT0r;1pn&STiTj zLAw?n<2B}YH0&WFJ-Gq!PV{ri+R*-2y=ub)bY!=3!s&DN7n9;uvC$z;x0;lfdO14Y zbdCxZ>)#Bb7UjRZfZX+Vr=zedip}obPm^mLGTjv(8X;J7*q|^Qn7&LZKCEKXr9F%U z^Im5_Tq0!L{ zK6eYlrdLDXySgQINL7|%QJx?*T(?}5_ny_OB8EF`TXy~K=f_hjiSl+4LNe1;@GS6$ z-DBfOiz9hL!(;R1d^(p3*Hp4b3zwem(1z`-Vfs?$dekLYbO8*RFdmsaORq)Wr} zIGByfsF4*M)m?SH7-c4&!cd8OfS6=}vNJlOV%X{@mU0mNlmW1B`B0cuv`{yjPHI)L z>LQatyUMmR*E|6WsMl}-!{se{cbCArDBhmS*JgEjttyUaX|8^m{O6;u7~a=iPYf<+ z<5Tmf)`&*@R3s3wZbI9a!#f)}El1t7YWTOb#0v%laepaY@W-*bR86#%lrj0D-6b~sU!|_IKDQapzix3?;zd-u3)~++4D&lvD+v1g zp$N}6AP>MSDi@MfIJrBK!XEUxTdhuEKpG4_jo`wsSHp&2mR=Cc#qz7gg<8+8)`6j` z(FL>#n)1wxmpcItfYKwI2_otGA~od=dipzKv9Rw`bP~#Q1Zb4juuybHdzSs&2fTYK^SHiVw5r^dFNqF~S^(>ufuJf67@m#b zOx?>;JO}VnBUWsp!Y>jr9B28RV$ECt{K5b)o`{a9WieP`ICs-(^lEf<<%&riPQ(W| zoX4vMe^elVZ#P|G%D|nqphwQ0O*0@xNHa8brjilUX!E#DM8#ycQ^&Ho4cu9=tBlT_ zffrwPc910QLG1s&_%*rkazk;%xWQ`4vPgzzvcT7LaPs?0X6&4JP*mEMpWLnrh#ZG-Suxij9KH4xLeoHgSbs!%T3ZP?9wgO2ZQLM^!S>wscdp)p#` zQgD^x(T)w$~ufvfEz?+R&xnkNq}3zPku9G zFZQK1E4f{NEVsR?pMJr@pfsq3yslKUcIe`zl40r@`AyZ>CG0ZXK=PSibl?u#S#-?B` z-sd+->GVnFz|z?;iJ?v%;Sh zM!GsGEhEa7YV~`e1MM_v=z#VR`x@oB*%dd1^w5VNfzlCv*~)@!#?&0S?c6NIs4)+q zSQO$PAk3Wf>KN6L*i(m-C6cw(ZDDee+cW9zeILks_|C5nx+vv(YG36azkZ8hH4A4p z+jiB&GpUWf73sbA^1frqgv7b_1(X>vou2#gt&|lZD$kHB^Bg9rUf!1)tK$KbS~)3= zJ;bxn^W2Ub#%S6H!~2G~@O&a{FP~5|NpZfT8oi2$X!L^iF79^2wC&+=C){g$6hH!< z{+QMI<4acO*Wa+Th!^AnWKrx0Ma+7zoQ-kCaWHZYQ0T#D#(_cY$MVT|>wCw0>KM8I zG&YI&+Wnl!U+HAYgn@-I+I;<#5}WiXLV^ikF`a;?|2iAr>h6 zdi~uzZ+E?k=FlmbC!n60qyU~00vnh2a=mpYr6916E>oZj7x8glN6qXw+pxh`M}YWp zCoU4w0ZJ{1Na1cQqs7(TgNqb)r>@PGU6Xe*K@S0!9m7uxyqk>+)v~d8B0?ZMg81Xu zpUaVk!!8d|B@87bRE<+xZMfwY<=V>86Muipk;uM=s6k0YNUsqu_7n&)?%)Jxo`!D< z6++edGWmST9tdouS!ILlZ7OiR$*=bE+i6Y+CMhbmf6>s?rY1r1thugAE-i4{D$AF` zS~b-{rD3yZ;Y;53f~=HpHmQ2oS?;($4jI3k)Uw_^Zmfs)&W(Vg_x4Oh9OI3PVv?iE zVvGJ>Qb94ZaF_Bdr!Z#gcaE&$!|*~sCXKrwpW!lh&3{lrduP(`RS(PQMDUjF+{gEN z)L8;IN=xY{vwS#plP<~PUg~CzBu2%Nnjo9ogCU5N$>?QV5*k0lOSv>bZ> znN8L|vJiBvS%5|eDAYH`0bW^pWxEv7rJt)7!F-iZrF7#Jam={FUIa@^m0WtOq zhKuVEg;EI?xfvFDvi7mN+y)un@m9#;!fgp`3pqfs^i{%YLUs$uye!HjOb(D)r!dzX z%+%|t;f68|KRp)enT7CHIF6N7F3T2~ahCE-5g;>WQhj;+JY3f5Zy$}g$cPQuWdeCY zcaHg|aa){v>S~*<;UjemYo0B=(nC^)C$mLU08&)Yl-7e1&17)vXk0+Kk-PHktw$9n zMFKMs=M|s%-FF)8pJ^y73?Uyo;N4>&9w-;!G47ziCWLG7Rn>LLKEtfC;iS+jBJ$+8 zaH1g@{c*J3K-SGao+XJo&h>}MX9_hpT%g|Q`z&0L4ff5)W};ON#qk}agOZjLcllb0 zBUDS1<8qfoue(Nr*fSn}B9_QOjLW7Nu$d&>d`u_O*6}t12@JuEk_o zz?6j1ALC;&cOa2e2bXR{WqKuBS4BZ~pvQ7V0pX`w|IF#70C>TXRA)Myo*1-`aea;J z&)a)DXm2$xeVSz>(dmkGECLhIt#gO1qsg9&#R%;4t4P(#mrA{E>m>d7PO;5Jq)ZdP z;5~`Sxa3EL_)cwD`bNmtFs2AX3gebv77#bm#l4YkD>~%dV@VXk_tYlg^KpWBL^=Q< z)%!-QwC1gnfr$B(1vKAC5yeyB9jNBPsczTAhkUNnrG;#`2gb1ZwkhZUCa88^0~Wmj z)l&j}*50z#yWCpj`*FGa*^10%%dP<&@*RtHTn2o08>yGRp0KF!{ji@W0F5rydw5ynpgZ9^UEe`ChI}cuCN+! z^L8o;%Pk+jih+!LL&X;miQZ^5slRQ9z`X?YHBqbGR@=hpVPGU%(Iu$BgJSh(8lCyS z8TtigDlKqBw=7sJq}5R=rWS9DhYx|(0$4GabPI%q#KQd(o$6mpp8NRutBi#a&&yZW zixGz6+B!M2mnyA_JNq48Hom={EDJ2ZGH+}A{8A@%eI1V%SC&cHPpR6u#kt*g#YR(e z`j*uFCB%azEzKth7?2bP-8+pJrc3L%h_!fttk`KwVwFr5wx|^g-!<=DA7In;rp^T@puiEJus{_-5$6X(P3Oi6QS@ zi3wpTUqQ6dwOj(y5+DGKXRrP7f^SG*fmDD&)LJkOSc8aQq&X=unU#u3B;tkfBGhoD z#1ti0`K?zo(TJifCX-i-?=QH7bsX6l9=Q1o31&lZ^PeG$+1<}DjGU#Q(CeHeYrw`S zi%zhGJ~uu*3~MTTnjBwaQTN6v-<*Hj;OxO zK+I?hDiGxbrRw0;aQR-c0*F^ULp6e;c-sCbDsGh4_jp;7MgO~23snalliBPkL$c@$ z-{{1O1>4wcTq)K~7cpuAB-IM-JeXG@R|Ivdt|2)p(#ta z%Y1*Z0bn}%B8h_Dqu*;eDNx3d0dQA_IRjIN1L9D42TU z&q2J=OfR6NsXT!Hr>1sEGdjwtaW`X1|IE?A@PCzE$N!II*Z(hp^MB{p%OvvpwQ>pj zAgyeadcil$y-WSp2i)GJZ1@eI?4+%`Q_2BiUn8FXIg(RV?-vQf?>v6vt>&yF*U*rb zmQbxXbf;Ju-ABI#{P%wT3)p!27N(kcvsz$d*@)l%-LFP*tzaI7m%UHN(A2Y#15kU4 znSwBZ-iO*jO6}i%VB_bax!qS>zdx%u9uU+a~LngERjIp%0hPp42%p zVCU2Lyn(yd30Dd(ePZd{SEt0lMd~V7Zh+OY^<})N7GA()A-hkX-aaUoz_DKxXf_^5 zjS6G21IVQ2hY{!ySI;Hom+ljKNUQNm2yA*L+$PQo!rHx!UW%L}#4&COTISV-p>L$j zo^=`?;Qbn^kKS;!28BdXsm{)8<+D^bouf3$LAdPjrbNffD%K&FB$%-@e{nBtt%Lpk zZRXzakFnf;K8z=#_blRJ<7z7hQJaTdN{n#PAkcu9$;~;KK+?y>MgBZ{es&jn-9t@7 z;&zNIuKtj})AFCv$wtqgD=FCVW@V|Mrt%l_ihPL2wmy=pq1wM0Y`l$?PcqFiMv{dHdKX_2 zTU?$dVA6!2yBKC%Pk!`~w*?$6*3$qOC;2ylgG!ZXopppnu(ImcLK!nxYK0-an{7bG z?wKh;C2_MOdRwy~FgKV5>4p&KooGN(dMtdhHf3EsKdH-}@JmzBDS^WLX3{$N zqS^N!j;@K7I5KY9k`#i)MY3kE7+ilP}VS{L+DhC zNqt+j=w8BGY63{nfug*S@pL_79UmZobHff>iFI+2N(y(e=S$V82^WyqpiM>FwpC~+ znf)zWb^m2s*v``Jyo;41mUhU_P}hL3_g+rDfe! z0z1DM#AE^xkIVB1uNU91k1aRWb}me<*I*j6^h9P#c^n5by1fvRDY~5I{DNO0Az3p% zm|yThBYa;}U)t!2=Vn5-JG(C#EOv4x9k(RV@CtRvdClDt9PgO%nU~78$3Y{iL$~2L; z!N>8|rx8`Z;YU*sNAMKvc?Mov?m{jq4TOJzJvC zhI*R9#zrT00*NHdG-`Z*Z|PY|l`9@xX^{B1CoIe)#6^;qH!E)n3Z*~O<^1rJZn2gw z;`N!9*J2Tdea^rNIppPwlf(1mc}-s=-ubEV)*DtVFt2F9liv3u+V2u5mQKMEx7^0U zXL)&L5mSBg-8zqVj8Y7p&`}pImk1fKaCEk4bvrq_rF{B4@bXD`k*cSRYA|8oR!cE^ zPteZcccuolm~J&i=z`F;b@x$$c1R4MfMCXKL2ujTIpXI`**_aNeR22t8 zRsvui4VNt~GeK=+pF7vj1E1*xdz6wM5E|&gEKgRjjp+!*uK_jS6xai)oqL*uZ=0J{ zuH$`XPX>*l;tK~z6$oDOXqZStRer7OMx9Unu}o3h1b8C3j|W0BRGO0Dh~ZZ1V~hmUrjX?s2@A80-B+7dQTy<1ZUn6MzyjXN=po8XUoOwKhtd28k6v{V&ejPi-Y z-SXmSq=nC_t?^n&1w!BwJoPI3WRfX{avh#0f7xOH$J^6O9#vN?gn4A)L5fHKi}$>; z!gF8}2j{ctnpIz~KPZ113=YNc^LA_B&$d6rZ72>R&IFM#3w;w@-75A|yo&|fgfvo& zVjdt^4+?mm)8j$(6fNzjprbf9#6VLgIsO%)| z$FCMN1>scF+MaINxu_t3!@QPpAw!-^n`zZ}r>*t-x;DsJHP%t%O7*uYO^%`k&$ZMw z3mjymH6&iDf(LloKTc9BgMKVGD(bv3`m(ZG#XBn9`qZ|OYi3@MlFL8a2Tn>(D|9Jl zE|u%aBi!Sq_e=%hmw--rGEvcp6?&uJIN_5t#a=i$QcXaXPz%srl2679(P#^8a$NKb zs%<4RhEb&0AW(B6ti>;}ZPpP8b0EtU&VI~Yj3rN+ZcO= z?0d6L+;m=JkE=L>{#nW=d8I9k!+UBY4_L<+-_=C3v{i}2xg2t4A=1`c`S3PT_70Ed zLge)17pTzS4AaLw&6q=lC!YxFx!ur3W?j}@Cf_k5a>~2b7W?ps3JTQ2v7kY|e_~|n z63ti@KFhk%g1L2PyAx9jy28py$P%`TFM$JVQ{1!MEIcg$@|fJ$->0}{nYy0Viyfm# ztNUd8ZUdY`*<-OK^e6@$QO>l1JoV?SQ)H8M>M4ka36;UH&NQCfKceE&-!hxRc?PRp zxyFl7UiAM(eHeY0dlW$vOdhMVNOO?TsYyE-(z~ndC+mPQZ>ZSOUoyP=G~(|2_kgj> zoDCfw&-}82DCMk6@^5%~i{};m*I3s%8gJm4(uBMqHbyow2C7bl$u_u5@_X46jm?mG^VlA!paZeErSds1_gG-# zXmj;JEqYk>NP>0eCtMcMV=nIyg6eu3^1iipUFq$|l*_uC4jd-QIE}!lD&{OT=ON?p zgDurlrh9~#GyZXet4Adyx826cQyWpUa+@Hm{}#RD)X$u-T26ucD6>YPTQ`p8!%J%7 zbyn-m%)_$yDhro>^t}U_q}bc%+KCK~{n)m9P%;P2yL;J?RdA!U-k@bP=oDmB*|`DW z#-q{Ri87b1?PdZY5@JoroodkC@Xbe&j4R2Gk+YLT`+_Tcrl)L18!=w01713<)tD6J z#ff9tTM~Y*Fwmj6eA=TpTtSo8Z9rEf!SW}JU401gJ=+e$Z7k=TN)tgN3|nY|_}Y<)Kz zAo_6!Rvd9S-86o#NBY;3r8Sa>&>T4p}aco*}z`>CHiK0IZ> zbI}6@6x*d=1D2h%pX3Z7<;mX;%Llh{Tzsw+2fKYbfF(Q}P0fpdj>A;xTq&~(1(PXu zjebGW$JH795Hsfv^=Fx z+L5C>`uq#r=m;i`%98nkqN#b9j;xSNnqlAA0g{wMtewhQki$Afx`k+X8{ z=v7YqMtovIuS@WYw~Qr=f-amn^<*_%1T(iBdJz;jtcptfku;h90G{x0v^sF_X>y5+ z!u1QQ%rS;Vf;=AH_SY^Gc*)V_?5uKTI^Y2Uo}OBhhJAK$_P5ORg}AMBT5(wBXtlB%`EUrJ5dd{EB0)~aL_ zIm=zQHDH1x?NVP?=Z+sMi4Ob-cL)j>!U=i<7c9KA;Ry5`i?%8x6&^5Esvv21Z{DBL zL151LTVm}>bQryj^5cYlI2L~x1GqUcMu|^KZzh;(8Tj3gdmS-_xx(5llht@(@*oS0 z5L+Z+})5{+ST2VyuHBW7w8Q3RT1KU?UMQ)Q=F;zM=m*Ui#6I ztJO9>8KGtJBA-RSfSJt^)Zr_|rddM_Rbb@&ILk)^SY+!Lf$d3Lja0uBsp?%AVudoB zj}idIwWo{drYTmTkO;F!_=0*0-{k8fVo*_Q}vC3%1U1JfYVtZ-qZRD|r~)0&yjH z!Ljy9m}NW=7uh18>PqG2JIq2!U4XohY=NYGhBuJHs#^r$*Y9h0^t8CJn+*2P3mP9N zVAR0=)s2G8b-<&IcsSr91wSgk%<}n5T6%tWFZnH#zP=fg4cSAA-VI`kt^?xgZf|ZBiQ!U) zS6A`#x;{2vhxG1rI^yz^ily~ZxCQ`F7;7s^>I?PtOS3nPQwmjgQAf4=mV20<)&oJ} z?CEJ*qwLi12-{_Cap>moJGIE<;WfKSH9v5;yZ>y#Iv@~FA6(Zu+@ z&ury$X6Iyb(y?q>;G@^P-R)`-z{6L2qY;eVo*G*Dq)NjzJnlzud7*;xjg5Tv;54^R zgXJH~^Uj3=_{s?@=VBw^ziI9f<{)n@DtAc=FpCKk%!|T~(k8pME-sh@yStZs0E?}> z4jCqSI}Q!_`ObpLv%J8lKy>wRnv8Fwa+vPI=x+w)sL_M{N@@^}b6lI^!2YA@`d)%( zi<;?BT1tv-mvL*@Z$JJ+IyouQ-Ze0M77z+P;f zZ-w-O2|q=C7FROW@E|yq&f&`9F*yLZjrUsu!IF|!qqucc&}Ak3KLbBVZQlcZVu|zH z{r7!J6vf%N%9p;N*XYSM;l@(dqg_{AD4X9eR;U~;FZ+t}fK7VyHQmRx?81s6kh88! z51L{D004TYNc(vVlwMmrHpAEGC-YCWN-bgjgI9va_q3DA>VOPoCQ+PDp}fygN?5UHzWk6-Xo?Ga^lsJfkmDbZ0gTU>=2HWcZUe-H>l23Da3oz zrl8sR;m8F8x%pdKttzp3CEENwW0}|@l9Pv+~-WYzn z@3jQru7$F8#OyIlb|c0`+hjjYlCCJU8oykz%y?-JmV+>A4qlzs}P+y6Tf-v@)_x2zLd;;f1qsd2Ma*tY5ABOcytjIqRH)Pvs1q z$BZrX&7F(?Y54tdf=lm2;L0g*0sPK;3;8YhO!)fQqd)&+^uwfD!Q~)tH(CF$G}8EX z=9}>5rl@xc{~G=K1OiYELD&8I2UfEsTXUbI{xyo`PeD~p`@PYOXJ(veD86#*uu$P} zneRVF9rlwO)l(URcK_dUAfww{e&)%0rX8yr*Y}Mn9%m7MB>xfHQ#;|-pq$eganb*M z<MLWtLnT zch5cn@3U0tN+L7Uvr0D+?b*UUp+CrbK(j3kI{U&tM|l~-il<_)Bl^7 z;kC#_TGjE;k#_z^UE04EzVolq|KD7Qh4kGC65S9**x|d3^k~&-_ORZ#zr*+5icp}) zSzb3a!mf9tz&HOyu#R?24gWV33J-A*7g4VIOHrR!SH)Ad$?o;O_e-*cz9QLeT6P3h zrjN86&wkNF5+0kB-PivQ_TDqBsjgiY z#n$=Wb>m2?K#(2gU^O>1*j`57=zVD~Sp`zKxlV>p zjC_B*4^=(*Q1RqHXzc%f-Do`f#c+7J|Bwzyff~L$Sop=TD66?>djkDU`&-?v5=4W| z;M7~(>|DgZckX{bH~a@((Q$rnSJ&#Ee$O3Mi`C6Ut(77YZqtzJ7SHaVHb{#{#ei)}cCc)CAkHR-fOUG)3yJBn-(N zKdRURDg3A@nl^ENdsp~-i~CLdrVk+D)f`+I&F-bVh%T7_g#$lFva6f)^rkPzy0VwU+7IC#Oxq8Qn7rmXEe1&vIkoBAA3HzA{iF2nnq1EM z?`+WF&hgC`(#OPo-HA*pwSo)sT zy|p7%MhT3Qgrup|ZnQUpxa)))9$?A+i4gljwehUtgCnG2F%+=#HyF&LAp`@*n zOVxL|qr2zlmmEM>9xD!AVl!6DH)2z+ zRg42i^qbhiii@<1NX6x;*LqF%v|wWxui!Zcq2SqxL4)oL&JL3qQ6((n+2pdPmC>?H!R+Hul8?O+j>y+aM5k=f&V`$ zdH$5yJ3?EnD2AP9|2^@Bz|KnJ!G5mXVi=RgqCwW*E6@HrM`Av1&J^S{1~zN5{=e(I zWfEieOggj(#^Eb`;=1u}=0D>k|NlGuAMV6a!1&j3@ct;QD{`ZvHRX_}rP#Y^%B5Q8S#meS(jUpDR6ROg?ye z>>zv4iesyd2!Ka4lpj})4E$nfwLGPSdsZ@NTnxGXzhCN=>C3Gjx}iTezqh$tl|mho zIuZ>0X)_Ox#H6J^Lm1Ap{hNt~GgTxp%OXTnhJXSGJWoPZumXqI0){i{MNp&%$oRXq zyT6DI6_sq+%VMhSRI*n$EFJMJJSB_vgr>)D*J}tBL0i^fXRV5JBVu4L>hBL(?x{Bf zbQ~6W49((w>sL$7&3cjX2xNogK$v?qWTIYjtLk4|zy!+R@yqx$s$#`x&Cd29-_(o{ zSut7m`uv;S02qHD32K8x#$J3o)b=0461}o4=i)djxwDyBF{*Ce7(RXzo2RN@ z-I`46B#x>yshi<1UB>q0c{ktbT2U^hX1vLbYQK*xGsR;>>6r<1rXvu@Fo0q0p8VWS zqM2tDw7+5;Rl>{j^S)!?!5$os#g}^ z(&JKR%HJaCRG$7ox@Z_v@xOV2MV*$#efT0^sMr`W*R+3a`BhJWFer-CX8s{^9z!zb z6RHl2IphS{7o zSp^NAA0Rh?RD=a;F?t3%58T9KxDr!OnSU{)n5wmf-BNT_5fk0Yv)!E~l0CnKnsXM0 zn77N?t@-hk`6@RFQZ-{io7syDPdIj!?dG{mZ$I{`kL$VEF}Q|uzpdBA=i}vvip2|M zts*vp+DR7QYS(+{8bED_3=_|Xs@1+cY5T-`t+a4M;x{$u0H^W=@p`_anEiOIhz)K* zg8NvaLsG9VJSG+|dZy#<>ch5JsY{u+jy?ygHRB%v1P8A*OqbL(W|tvM5NOYZJ;Q{L z?Z+CeUDd&YMUOKR6(uCAjJVmMKL&2+qo~$aD8I&r=l_ys{Kwf>VxyYrSK4JYv-Hvr z7@ock5&rpozujdk+E~o%beYb78fbgqRFVIS0a<%ed_3;R5X!Q9_bDhIL24B?1hP}8ZJOVS{^^mQZ#g(s{_+(JDORA^eJqR&+ zGma4&+M$|Q!=NH!h;Q}2Re$b?_G#LmvrNmUZQdG0*n=|7O4>v}rF&=-c?rHP$T=7x z9z3=_g|BE3W+K`_D)P^42pf$XyyPNOf-|Pk7q~6TLkgX*<0>g|$vDKCq9>nglzUVi z$?6MFf&Igc12_0XUCOqie^*a68x3$DAy#*k|Zk%cuY!#(6m)6=~fTI67gTb zY#zTDF2ZBhK=qz9qAao%+Mpbr<9E~XX;0mWprRa1v^H2s%8M#(>Wqi4^vO~dB$db0 z%O9i@eSCw15eucmw>wQRy5u~WvrpQm^IF`gc$yrtoazr9Fv+69*xl~N3^uJ~g!xgi zxYSGGCiU|(U!F%x&Ts0+#6`|R{U+(>XI$}A7=$hs8};&Y)PrI>b>}>Foi~};X{71W zJDW};`|k$?3sV~;AyheQsNCkV`=!&aylLS-1bXv)KbmcKj*h~5K52^u4LvAqiG7bp z5AeJn-~e-gY#g-B2PPBNB;T$v35*e_jq3PyC`r06Gk?*f0YFFbv?TH>I}r)PW?#)n zjcoLUM?lujLe@eeFVQEG6xR~^xTa(;o=R0 zcE*+v@$@V;(L`zGwNp(^n9+{n@lCM*Ft|z4@a9tR()6&;po_(Dp53msgYnbT5$xAl zQTb5?ik(SeresH)R%6FPK0smEi${POxNi7#FwKD5nd{`^MQ#ns=M@&;A-pu1Wd{^} zp2z{zS)M~ym@41^JTbj%6O>UhxSi0tSfo`G8Ch0QjCZZFp88!MhCnHb#5l-g}l^2~y=6AkP?!9(zGrt5`rpP@3c zxUr;E9(HN9(E6@#7O}zB$SVVFB^qOo$I&wB06J;pseAs_&9|K`mMj&Xg5}4xv=2Mie&;_){{9*af_oX*+m*CW|nO-z>rD=6CYO~Be^_Y_X3IcjHWZs};Hmr=wBx#^Bw4-54QwC_2j z`+{b8S{=wBDr!wQUJ*;$X^25wko+ECx>4iKD($)=BLADu*OB-0g;pba71zsbiAcJx zXi&N-UKF#e|IGID3Rh#w%3y^>&C(W;F&6Gx)b6x(3BoHLEf_jLfLW9D-KWq5eg zxwt}&GO>$s)(Ym#`DfzDQ(9ZsZJ4Y$6wX@(nIGM@iko^sk=$QRPejld>Oou58Iov z(|xfw<29$oZuh{-X1K^mhnw20(TSCssM$U&9qZY2Nxvq_B$3~&y!UgF?w9nK_cIT?J~+aNy%5Mw zoau5_*S5USJ;KWRw}x^H&jtTs(S$cC>G1nF!?uiRKA&=J*Cd_>u?7%%LRwdKOwwKY z;l`7X5^prHOHd^{a8N3m<(LZ!0jq8K5uuZ|5%`Z z+rS^)X!fB`i_TTf@H>eqZE_O?pLRvUx(PsSrZ-Ggc@o**4sMhH@B>@zduf)`=d_g=Kk*Qp{@aBV(s=&L^t7>z>$KZMwd#ek(MiAO@wE`hFa#oS`Q>AYhQ416jmyKm3I=7Cuca8} zgeXsHWQnot!v4U~U@5}b^nf)MS3`eY?R-||ykx0K)jJ=}e2vIjFKWDXRd8G9@%KP6 zj0OvzmsX7(U2o6}oB|#LgqXZL;xOc*W!igb6+Lp6?Cs2$D1SxAk}7@An$A(~SDQ&_ z&vjoe`C$>W`E4EAaP5oI3^MB!&d=hP_~*V|0H~^jHC6BR1LzX7A7#|EElTtk1GmkB zdObDA!%tSY6eJfNpr%N^RFAD|8cfq?W>Vk4tK3?^@X zHhi*X!^)`at9v0O@6lXTlt{%`0Sg8;&do zf=o%pc>3!_G6qLLVc#FeOgnii?#0pRUB0gDsg>E|D+f~-%5Mf5 zRQKfNfi%2lme|M8&pOTq>2Zoq$@kxN0TTi6yExXT=8{7y=3leQ{!HSjCqa2WoRXle zyn~C1+Pls@r~ocxkhyBbU+s0;@#Z)q|oJ+l*Q!t-0zjEzBCz-d(OHMZ>o+-e(v!-3L zzo7<+rZS_UMO6l08>{g|4#}l$g_T;cQO0EJ!N>}o=F?_EPlFZ!j`0AQfaPg;A%`gD zo+C@iPu;xsrQEwyrHVI&Mg4`qHG=lmTgfU-EWr!Xw?VLqBMXl;(fnk0$lm+dhMg~N zxvz91x*wCKSa{TPWcV$sXWbEWXyCIX^`F-pnynC-`@r;LBC{bTB*J`<$)CHKSnI{X)X zOU)%^>rR}LYIad=k@civ+B(d85!ukGAx;AMjNGQIp5}i;$)3YW|;Fs7AcS z_;@;xk`Y@U7|KC^K7=g)G2xFJ8&%7bh!u&NVn{IUlaw(s<$#fls!ZZ!hHa}GZNMep z4DeDwM~Z#l5*e0uy)eDs?#Jy4kBhMp{B9J*1G;eiSakpA zm0rXZv%NO>$NJ@}l;zjV)Wf`x-Kl-SnVi!jL5kgz zc^uN9FLv78e8%qWry12O7VXgAsSg&|rI7mpe)fa6O~7 zPxflBDP?%TK6}~6Y9hwoITM+Yk!7HgVsK+Y`@9d|YI>DhGFy!Q@wN@0E>%RU<+VH@ zoEq=PyT&%rSzCo)Ux0u=DCc4Azme@;p(K>M`U zL~GGNa3EfY*mu6fdyF&by>MBuexV4t^i3k?+ozo86XH6D`G5n((L`()eP!vk`y;Z0 zTv&0T4ds|sEeyVwu#^$aRAyEWibOR=IAOe|rUhy^K=tZ=9v(DM0~G3F0-rOYqc?z1 zV8B6>zk^Z&FG4u|0+aLCq4u;BHYfmEkBe*7cNVTny!ea3Fc|l#G^|2;kjX;*&DdLo zxJB{I^-=#<^=;ZE2!G#|LrdauWQT^R6LTy`Ct9mOr$fM#ovs00$v&Aiwu*7bmK?i` z1rffI3L0?uMkZDeu3ZElh*i?^Q;OT{`MImoaBTuR0a}VKA=pdveq(Txc~0MV|F;Xw zNr&n+i`2P0QzVy@l_)9p3g^!G$~(0CE_S#!9TIj1=)t1_f3=^D-m&Rd-3JI_7|a2# zxFnyum-&)BjhXuyiZYDez%S$R)r251)~h%~;cq;UX(4B!BEG8QeNTt$&28+rah1(Z zIyQCXLR|#{v0~cK4@Wb{_C~oEdY@CZvxYRbRR7;wU*MPNqKp}9ktYZ4x8uDee`}Aw8$R9hZDwSPv z)zvn9V&jYg@($ae0i!k0JY)*{Y8*Xbg{vu_ta+_;@XYM4IeY1%mubE1BwGK^=6QZL z0%RT3h0n4dGVypk<2bvFk4Bo(}GLJV(@%)avl^NowNV~J>Cv#l@zyX zaW^PoiT0UfVPXAYF${b`CrY9C!fF17T%uBQcQ50oQw^_rjMjr%FgF=lFy|%O_(rKjOmg^IX9r1gWu0zK}DwMSJvl=(z87m>n zF2kn{uXR&k&0fKt&_$DHSWBmC08#kBeHg=&}CT(gxwH6_MdK zFCKW9&l?NAWwqA_ji$eSPVh^@&mCD?5e9I0!U-$TTC>#P(^2iMf{?5{YvpO`Wc-7CSqu+;TShV~H>y*O0^QJ`zlX$UA^_^p| za|7V#&jFL1b3zz#v$9_d$_g2jJ+{OB=RJf8>lSx*l`d<=SFf_V+=!AfivwspJZACf zKp$MHzSy5q+Ww@_-mTI%a2w61=_^jTKG<_y9@9?L6n%3_4=)VFD#D886cq$0rcKUp zxHI4C17{qOg})ZROaRV9p}t{Tl5HNflR+>or!R`Cf)K1v{A(^by!s8v1<80Av6F`U(O{@!HaB))w;wI)rWEA*MmM5y67pQu~) zT1eKGpSk9S)bZVGo)`A23Bht9kuRU>g2{q5yV@uZ@a@m0M4q)m1X@Mj2xiNYfteS+ zz>e<{SDm+!o6zY^x4)m3$d(XHKt=;fO+`ibcgRz>mQ?ZcojN ztc5vkWt5e!Nn^K`xfT@kI!KVDd~x8!Aah~d(7c^!UPLe)9L{Fr03T5~%DPk2U$GM( z6mhjTS^5sycgrUO0%fDq$3O$6z=@byFFgK3@BHTX%=!7sh)LUh2TZ5%^7OZ3NUqvP zaRcSfi9i!N-7F8miNULwo=@?Tw6HypgGFu_WW?96GJw<7ulk@)R%R1T zWR|;*+*Mbn_LFY+Hjk|4(V!3yi+?o@gdDrkhq6HCHcyaK#vWr;yESj$->yImNb+=lIN@ zNi~=jIZ!38Z$bxLlcTv9MYrxH#1u#GVPyEqe|$~zKzn-mmv?@SOvp^Z^gwR8Pn$7E z0S-g(@5ceG8=32nbxMtoub!S7#F2=&tmgspUDqZgMjb#`-A(r4=f5q;7ZZFjd_wq= z>4&`@Mh)3v_DqQ7aoB^Ltl(}uHs%fY%5A=)`Zr^P(>?Ov(wtd_UGmzrz=rpC6ky>o z75u?eh;2aWxNpR{sMSZ-?v=F?_Hybt3nq4Z&qM4S^5phI!)FMLXVIbj*_BUH^=oA> zgi5B*uGUM1XmzD}%nkeK41RB9vnyz&=We_8zwfUJ&z;9)Sc&&O@pr|YPoEI*U8nw( z1$+NY;}SmBv8b{jZT>bNpoNo`H!X$o*KivFZ1xlBpJxxapAa57gmFbDT^$L?DxKb8 znT&qgW9&FnaQzXNT-Jv!U}hu*3>(6Dkc{LfhLr=oD3>ttR+tH6aoktDjOgJM_)cXabmIQCtl*j zwy~HZ#^rTt_90B=ye9Pzy*6@!eHENbaSBleJY_j^FsYPeKXUbZYs0#miaQ2NQ8I*v z!fLJMJ?J}86I(8!s7GE7Ljdd4Km7568$t(l1g(}RULJENWI;qKhKkRNj=3aMMj5V*GU4Zr`2c?|axr+~3y8H9TN87r&qJ0uw`6-($%gSm3 z5OSUY#`B7$Zt?+rNqxRsbd(ZwuOIl7V_n(pRMKU;n6uEJL?6@9h8q%<8I*a-YL?6@ zZOP2dI^~xNU<#1UjJuMWuoP4~%b^}yS;DO6%pbvzX0m7wyOvZj#UUD$9|Tt6nHhX} zoAU?mZLe=W8xo)8TNJ;sKn=u*Dz-HXRQhH{*qBxm`-pl@5>-Fmsug?~Y=t#(Vd-jg z7R3}g+_A4-a@*jExGMbo*LjL@W9JG={W`2o)HuBTCdWm~>HBL~ zsg4Mjx=`c8jM1^kwKd<69AW8R+c2KtpaH`NPusVnkcb;xKO6;K9lmO+$g9mv%9wKm zf|naqJrSt=>a)F|1$BiA&BwcY(>TLSw|Tv-9JE<(aY)D}q^PHwd7I(fURHNEC4}Wc ze_Cuo@bS=uqv6jW#srA1pIPiB!*6v7d1PS>nSaQxo8&l`|2Zv|qje<7642v4r(?u% zV&dW){PRevtv*Xh8ZmbVnNrLv@q-#f-5&;mLtT*`;~W)+N;C-={=}?z) zV7m3~3e8s|Msj=kXAWmkTQr;ZLiSr8R44ADA9n5Fa6u!@SB1vUnqStYkFX1TC72~4 z1mE=vh!AbO7LaHFo5`1aD}rHIaqzu!M%g#(%QQDHU&&3dyAFL3=q#lN5tgWr7cx&7 zdGozZcd^2Z0K?!tRv#iZEIu4^Hu;AySJPJ_cQwM5QyquqYVTZA&8IG(D4=U)#pm~| zCX`fl;==K0J=8lcF_ycSpP%usE^-s}Sj`m@{HuFD7|2}q_d;8Wk&H|rR32ml84(lX zeHk?khVGb8$m0!wi2{{<*+l}{qMKJ7l5R3J%~&Ojku%w1v3nvvoM+fdk3KW;k%@5Q z9c}XbO?i1m$%dyHcv@PE1KDqf&YMz?o!@{C>qiKuWM&>)TD%e*WRgKkbBW@;tjjW7 zr|dI7jcB*nAQv}<**ah z2xQ*V6{%fb9=q2M8JFH*opIC**{k?uz+_hFSbJ1kE7TOjALbkn=ko#@1W;j4FN?++ z701WnR0a9^XcQf#29hJA@>BX&wVYL|a)u(&j*Hu=U_|juoL}bm(RL?6vr(3kk#t9* zX?g;ij=!75tBX5DpOX9qGj)sry-{qIH|@rgL5RK+n6DrA`Ozn1J+*fdtKv0*Iyw1= znd`cNl35Ylr_D>@drjW=tno{IlS5X7os|Q8Lx2T7@J`%-sUpV5(1t&8Fah^kVm1B- z-X3-5J1d(u=K>F1jVoRFVVF7lI=@9Kx6I1hb-a@S2L~Ino=!m!Gh7j2KTiU5GzkKQ zE_%dF4*k?O_6Y5qfLPFVEP>{Cj5pEP=2{(-%Z_x$oVB!-b+$#hT}{23nomS%Jkx{` zWZn(shR@oauEX<%RkWo;tE$JkFb$M>2ZE4&L`n;gMl!7RnqbC!o23q@C6(W@mVMPfErG7a^-Q~D^uh5EN7=9Oz!qZyldRaleO~P@+ZG<{$J!k!jF-Og-lS@KyO;Ia$sZXBvY&;cyypipIMaB4?plw# zhM^BDc8%Ly{DaXGC%uQP-&d;Io4wa|77RSEG)rV6W_R?;$QnKBwmbIr*TR}jj?!aB z=s7k@BWQ~?zval;^J9~#o?&?gn0WBoA_Xk#*NaueCgyi#v`Zf=_1i#*RneR zXOS5-+5Yk^u)o?R{W_XiVg|L|_URr-s7!fT)s5CyIvzJ#rnD}9i1D!$ZMaB+PD-%5 ze7-CnE>_qX4LJ_P*u63zO9^Z(?C#g#(UOLFvW>MnyydN6vnz~>yjEo7 zA!cuoD7vE!(vg5ha~jEkq5)my$l@GDQC#xXu-i+iz2Su8)#4wfUTuwwG^`Mb*p6BN z%=hi_m?*7vdxI*cd+Yg)RH-J739`r-(idKzgrOJR2onLB6PuC=AMY!boMUnM0`HnB zle6otmLWc@+aqX8y^(ObYO8u6Lg`W(;isY#**^>wOx)Eg{-BMc^-dguLQcoy!>7iV zda~Nr&Y9L0Hn_M_i%U#Gg1y_M|N0SN67zXP;wK_#?ZH1sh*kbIe8^fYMOo?gAeUU* zn~itv5jwa%iA~uEyPR7FW?STSf89En%Joo1V8nPmcP1bqGGW1V0|d2}1Gl@RPn3?; zU6EF{*6V5e3Ke0|f#&ZHDt9r? zLwwRPe$qS`c>8uMLcc3**EE5;kz%Bs-Cv$tsjN*BpT3|aD7GJ~j8uw5*4@tRn~W6*ZPw!SiPedV%0X|YZYv8V z#&XH&21Lpy!cZS74CB6WGeKjHvHJ^Sl~zLDT z)e_Pe$=XVFadv}ODF`JhxG2r^*XB5^KQeQBi|@?~f4mV}&WTrK9N)SqEp}%~k=USv z;uD+J3Xd*|=04DGFHgGy^}8XFakDBxj5K{edRZISU}UcJ2DKJQhX=7 ztm0WK4_l^8G%i5BN=#zzAb$iHz>5F|{IbJ027W3#9}yf+;WX6y^S6VB&yv z|Bfdmr1e}G{lYe}d8>7YpF%4mNSfbT`m%|`)_aB(HE!f4&?x}N+Eo*54hyWvX@vu4 z-j6LEn27)?>YA%VG7=o#^7{j|iHmgYJ~{`v_q!)mgKNa1W_mdKxDDYN>)$8x9q5a7 zxQ^E(vgQzXJZKXBP!QxPKCmcmYi*%r{j>k)o)YU_#BF0A#-lHKYu|aJzldiQjPsRn zExxfm54C2O109*gk^qVr@2_jLG^WySU*wSzc^eqLtclB+P4}fwwt3|=eIsOk`}|(L zLyh+o{itl!8|LNFcL&4&iK>jU=gUC$Z1w=5YnBE*g9AXLYd>OY^W#qLtn@|fyMFNL zz7ih#pr*XJD#GaWi`{1z-$OKwC%iQvmN3QDn;k%2gVFX9Yh}#g1@kOuJ)QJ(dV;1g zi;dk1Z;wM2A4XTzGX2;^6L#f|jK*u%t-*blRl@0?4Z&de>SXH@#(s)1bfjcSTS`@P zud=Bz8%yHg!}~SIugiYnsoxLleVE?ENO)4+=s;b4R7@LKUQ2Z_g>#Q|ntq(|_mB(K zCd9TMO~KLeAI@-A*Q6EE&rpZp%abHiS!nB}gnlcThSvzEQA*>WnM+8<0d zfvp}oK5~XT*LRLzvt>*up<1&PGv5|`oPk$&l;ysS%-W=<_k_yrO?*)WZj!j}SBuh2 zhX}gEH~>vT6P)1@Bt>4cp$>yU3x+J1Eo|{Svu8PX{&{>M;3C|nEz-v1V*|85K6u4+< zL>r5DLl~f5h+X@iJDVlY4F`02UH#H}xpLm-5vyxmdB`V{tBgry<$Jdu1-n9H?X58R zO`ei`t6B1JQDWPXz0u0*v?WE7*T zST@jAEH&J)1--A6ls%?XsLv{wQ&ytm(Juf1M9>hCn=PifW(?fi2w-Sg6W48Pu!!q| z=2_tNOpG>=9lk#o=fzUPe3#3t1B>cIhr_7Rd&_z?8<}{@Ajqcj*rO)PX0mSxEnyHw z9}!R^GndgN$!lb94l5N&BcpE&%r4w|IHMHbxZyB{-VLC36vxz)0>H|(OfHH+s^C8t z$P0L=D>8@pc2LT>WN&)a?H9vQ--U`!NVb9AQr#e2&;A?-`MYGrZRKKu4!Rcaw}^kj zS#nf6togO`)bldoy$c&>>`*JMml;`I^N7NyQ*#NcH0P_pqnJ-cSYki8D8yp3mUT$~ zFkzZ`8{=QiqgqO}Jdcx=H~0U&b+evF>24~r`I)`uKIKHVgpuoeypRl0Vbtc;P(wSi za&yO!p7V6G=26p}{FN^ir}k%#T};-^AMM{iyY=k39K!f?4KnqYth0W(s-N^!@c5t? z%;zr7E2eeRQ$;Lk>W4$bH~Y*-M?{l|bLfLYg(3ga=&n@8#L$jMrCNhF2fA}`(GokL zX{lm)9VJ){HidkyzYC^?S+L5QAmkq)jO7ptJS}tY@~M`D;@A=xcp>Dey|Ww*5*>5? zlX+<$c|Hlpbxs$e)$G(UJFLaG?q?Knd*_Ly)Lvfw3`E#*x_1zM*Vrcb+6|>vptU&w zh36xc;9c>^;<>#PoWp$g`P+Im_BVnNav-qjS&_}8r43P1@zlvT!O%ajriDI#QWL5> zJ3Kw_7cYqa&c_dByMbTo#o+4vdV3vzF??wL(cb+zuFbf@YdfdrPR#@*tDxZJg1Msn zjSr6Cj5ni|?@=-FC$iRv;f$gG74Lm=_Za=yQM3-N49Q84;@n0#%sldpSe{Ygzn*9q z##L^(LzH-{{P&pf=l0)B|1KhYgI!k>#_{`f!NL3uI)hPZ?q2%o^~Flv!@4?6HsSue z%&|&-()rVLrW6kA%wVf(rQlO4be(o!h3)D*7gr*2lv6-~_q1ibIMa=#XOiKkI`DfD zfVc$CKyr?b2$lt@&%Wu5;LkGcqFCss%?n!1?`(lu$d5)9C1AE_i zr~`}B+e2|PBThoA7Jn)re6$0HcgIUM)q*Z9vX-@ETXLCd36Hdq%yP5I+j1xm%X;Jhu4B zkDp(6SVduF1H8OFA+PcCsy5GpqycfX>75nM@Sk~Vy4{cxs)&kXEvKxaJj=C$2DSjG zFJ3y%a0UpJT(zv7^VBCn*D?i%&Pyg^ zMl@4^DV>6^2S#M2L4E^v^ORQ4D~;cs&r{$xJIE+=Plk*;R>S1O50wEXQ$Y3K)H*69 zyIw~J8n2JJBd{WVOtEbxHOBnPxlFLu1UL!bG@a_?pkk`(xnHpe;rgK0{ay5adS(>U zdvgwhz(!tt8F+;xZ!Nb|zx?9P^HGbBoT{9F$>@1c!zgQ<>CZ) zvT1`hCLgL6jOU{ZMDus!1#QA7$~uPK`gQzLMl<{#Lp$*TI$qjBxEZiXFx#Gl>RAf! z$`NnrVOi_Sgyr3Rf}(+!s{5M!Nm^gM_vq#sDf^y+50Q7QE8oUB-1=N*z<<4UpwvKl zlE~Utq&O>nte%-Dm=-P43H8-_;i(VR9uU&!j}NLwB`tGcmiM&H}|I664ends~LwNTJY zZ$jzr^^vC|qgspfNIo*BYU1Ig4{LgbiT;!_i&jC8UKQ0mu~d9CAoo3zMvwI@&hDi$ z)?SkJbOhEo;(}hv%If2FK05wUB_h86)fr&|4EAv)XiK68EU_gd|M`nH(;1CkV;_P~ z+Aid)KhD$=FxwPN^Cx$TL4|=;GoTGH9_}>uc%p{#2I9(r!GbME4rDXPr zP!%*<+06UV^Vymus>($FDr@Yzt7hs3we#RQc9G~F;W*UDJG1V!uw(kbCM0@%YTCJGH>yFutP>P;(mokFm;sEvP{Kj^S1m% ze_T@yD{SA;&*Wz&r`&?^*1F1huGZA}0*g4OT(rA&-3z!A!|a1s*kR1|*0tMC^d%SG*8Qw)s0npc;5V@~U%y@c zl$CK#8onELf&TH70H-ELE6TH*Ta2Li=rH;c)GP?5&Jip*>jV5L`uP{b6cc$t=Hxkm zt}`kWMo>D+^wtEcG6ibN{Y| zA%zXg+N~VRnDm%l9Q+ZUrxnnwswr=P{}dCm^rd2xo0mJ;P2Rx*Np&B^t_5g&@5x%F zPG*0xEgeZVs(x+sXY$W@zghv;@EU$2^`jS=^EtGx7~}Y%vDcONjA2{&#KFI({*nXa}5fh@EJ^D3X|XKO@m{x5Jxw z^62@3>rzY{;(@#Rj=gBBZ3k6smHRWJ!qssCR<~WZD{khk!12$P5i`12AYAC=I)yGw zz5u05XECs}|6hlWFBhpb7n(*$q=fRZx0 zJH>2(t6e7Ct&f9c!xLAcsLLGdl&Gw#CEoJKzZejXq2F_L4gb~y_%Ouwsm4uMaYTcR#?$_S;0EBy zXwp{Xzu1onulFQo$u24H_(mU9@Go3G)PCNu<1*n*9y_|f8B7A6jQq`r+9kE#noe)X z``ZRJ*M~m4wcp#8=Q#Fk9`$iuc*Z;Jk4->@QY#P>nqF!EolcU7noAyjf$z{-Q znaaIq@n~jrJMk?2>guM7h`VQJcHr?xWrCZlhuS5O2%4K_qRXHfQ-6uZOmNQd$dyDY zN^`wB_e<>(Zz&x#8Q^%T-mLROQKR%IemTVUiH4!6+s*pQ2;QlJ;0m1+YV!W>3IE3l zx@Qz|Yhh0g)XfUQmvxUr!jqQUg!hb1X2!Qu{%&oiVF+E)tbd#Pmvy=B2{~nd{)GRN z)nC^6#GRLOJ2t6DMIxKMhuU~bIZfFx!Fy1R?Qc_4wSBB%3&q*i`{we{jmsXL45t2* z@!7c@)AXZ4vA-EtH`7FH|JB$nqTaaqFXIyZ|78sO%j4Sa%fI(77s}Gf17^_MiBOT| zdYLJDyCBgc;lFB^=(X93dk-vUEVmOOOU?BxQ(S+m6_`vI9=w94s(7!zs%@t`3}@2p zFW4kc_gBEKUceHtDWqLXty4?Qg=|6=GaJe6m+oE!Yb@Yld9M*@>k>sMN+7q9$W ziir0fRDb-2&ZYl%Tf3u|KXx8GJg)h@U2*Bg6#uE^*%{U)UgoBjyCz!%9*6#ouRTy;xPPi=v^0#2#Y@wjZQ!= z@kJcx9uhw^7ubFvgiZamcV@Zv&yVSUo{~KC9jCOOCCYIB`8w4xtIR=Jz1qBh#;aSkhHk+Do1 z!!4;r-jKbVMRfDqLI^|4-DXD5Qo#cKfwj7=f$zOv){z6ke8dgEU89B?3kq;Ry`|>E zDjNQaArDmRg?Ci$RKh2EHRLk#x#y3}P7VvvWjXbV>oIt#V1`t$%Wv>K8WLq;`A?L) zD=y@Tl#Jv^*h~8d{=B-6JGfcaBqL~gn)LEKM{swihFGe`Ru;u@Keg`cmCvivdEeEm zSDareD$6p8cVnm9P=3($nE8qlY!@G&Yx`pEriq1p4V27U{%oatb%Qdw=ExqXh|5Cs zb1;<-d&hg#udejYD2|*x^C?tp<33#9l9zB;_N5<~J#&*xb6= zCvRsMe#z8ybSH$8FkdValDKZOI5rvuKy#~lkhgmShTD2Sj4&`=c}23)muPe;2T=qtFf_wPsSVkPr8ya&=v~=iT<|XTO z$7*e5)(z33?bIJih(v{GYgfE~S0Eo^({Psz1ySQC%T2bw zs9oOpnqqiL2~J$r^#8@MC%HHiG%59qp)zGEmJHUSuD#ME_zKOEfysUe7(9qw#oixBX(+Z}(Vg z3prew{<{D4k(9{G)cV&htIgDaoK#&KDaz@>$j;(gS5Eg0*dPpTUHdVkpP;EL4QR{ioeOn+JlHv+0lVgr7s?*j`^`pA=?I~Iv(H{ zbgMnyK-fJAb>1XI7qNrjn3A6jSla{iL$u19^P4seEYhedy|p5{je-N&!rk5yH7a6ERUd`kB2h3L=X zTEn+is+J%iq>w`!b^{b`c;qm5+^3s z6oqb$iG-V{y5Dyh(xxi$82SrH%Es<=)UPh1w*26cK!z-jxZJQv8YQ-*Nf;5Fs>tk) z+~JR%QQ)x7CMf$4(+2dE7~~S}%$asKFH8TA_P#Wl?Y(Wc``NqQTelA8nWrd4(I95J z+fp@z5)o6hrXVp?#N4v??tqx8rVycmh=iyih_QoNP(#eL=6Rl~XwQGIbKdvt_gU+# z^X;s&-u0|}`Tf5n_y7Lg`3?7dU)Qy|=QWbH4}ePiC(oTXNRI4Mh4m+8nPa@5{^Nns=d`1BiTMz&J0`wU(uzZW^tZ;e8kT!I{7o(@r zjJjnwQE#or7NYvXU;&i?#0Yi=edecATmQ-K+=34_H2=P^F3{7Abk&5n>HzF=mp z{B{`L<{Lpl0( z&4w1Pff=YWl@!bcs6hBpWkZqGzkIAW1xbG~|0cui_sHI;T8!zZX-8U@4 zq}Y~C?N)@`zInx!tNMTZvrH$Apm5&&XTfzu%Lf-wZD~B#K>zbk#Y~}3hnC;Z%;g;Y zNyvqA#~2j$z0weU#r>urq?<@=cp(L#Q~)q3cJTQ39}QflY{}d9dx=4;8IgSFMoziV zP{V@l2?KSFaLbc`K=#UEfb6)}CSl?S+9RDGuRe0Q;9&Co42=g2zdaULo@K<}?zt`; zQ*{~$r&3q4702WA&j_AVomQjYu-{T#V*5d*OnOv&Ir~lhJK1-c)JY&Xt%K`&Vm5?( z-gg?zKM(2mJrXsuEt5-D#4Q;cjm$dJOJXje6A?tR0)ZY&uJ5#bctJK^%V)DGuxkP+ zGe_hf>ORv_k{aB&iAG8rt^4>F1FNFiKud4^=9`;mlh3)ymp^c8EDkFa=0(tFHzJgs z=@7N?h}!k=)*fKvM6ob$H%>W86>E8ekyiZ9fg68ckd%Q1DP-jhR0*+2_v(sWYhy>O zCSlWgRw4t|R=E<##%3Rsj(L%@^#ic~vI+l8Jh_@8Cz2s=A>_d2OKzy)2bNxqa)`;Zh|X+d!Bz(>tF$e%ft z^rNp~=XMIr74K%q-p8uFsJMTn)rPcMQ8|bJpOAUtH7Aju5f$g=>R$QY3~bx*GB#ER zZ|61l0Z24!1C%6+4x6ka!niQY+IIcxL1dyh0Ukt4HJ6kuVs(xabdaOf8omx>xrF)~ z`UWF%$M%Ogg|D@E9u}^nry{cdI3CrisNU$HGW2s_RJU-Wl1yT4W6q=SxU#DwC59sg zLH$fvw*iC*z>kOUd|6-jm&4fCs=+h_rPD^?&DCr4!hz{xdB=KNYHR*LpJlLQ8LX>x zjA@=Q@$Dm;5wW(SWb_9PNy$8FaV(3$XN!6yD*K&_Yi+?%3Nbl4n$x3WBUv$Tpa+c2 zn-;%eWZqef4cDLQ{kT;hz<92%hgqsxO&Oc9E-9+&kpAVqGt+}4&lG)=?q`4w3dA&d zV93$5nhj;n5$FA6cl&gR69FE7Gt~G!k!&eFt$uwxw}Hnnn0}W54uIys0Hs-=EZU@S z`uh7B!_%wZ&n)XF68GvSH$+2yw=?F&0^Zx{^0(~PkLgZ5*79##SPkX=T*!0+!r*5~ zN8Uq)zufim;fDKK*29usd#gceOOyXVZn5Vewf?8)d>;oOg{p=K?3gd5Rwts?tG-3q zY{`K?Fs$NUkl+KJ@}a%)IV$WI%ysYjYjJ=aaObHSVoV{mmP8`Y8`?VzW4~?COD<@X zhS}^VS;~{S7A_yhgjC92a=9_z`pza%wN;U{Tb-&XgdKM zCR>U$d6)N@)u`F=jxxBUsvO1freM0P;zBs-Iv5ZOkd$P!Q|e9}7!clJsMhy0?>SJ# z`9C`xn)J&|#F^B#Gv0vr>rg|qzD+dWn2y2NL@junQD;Ou%|*{pD~FZYbujB*p=sDn zlML2w+|Ht&V}6~V%P1Z<6U{PcyI3@T)3tHV^v|a6XC!tHzW$gbbN-kC(Cz!Z4zxPj zdVg;iOKkkA*rseoF`Btbvz&LhXfN-x=1*YDTkYNq=17=7we^#*0zPEPISdR7U%03WA)+)9g`AU2duS_Tz)1Cbar0U8~0>n$@Z* zxR$kDsOy|S3zq?~1mh$+h=<)1d7LneZcje@WDM|G^+(Z|8}P}}qvIz(9yC_OM+rtg zfj`o20h^7F%cn$%9s#APSWR-t`i3A)q@q_d zt4$mMZAl~O2-h|KLoP2o&Q;96M@&}IjPI23ZgCw5v;P=fOvude#+JIcXIAk_cc@&H1jDVZjT8_h^7>*|+z~S;|DoCQBlmHb{RNxlENrSQJHv*t zmVVFk&>WP>EJfvI#=+QpjtPC1YKT?Pu>muTjoUxKwcG%u82rf?P*S1CBQ>bQ^9 zStIg+|3e9atAn1I8wF$38f#~&5dgs|Dm}P@7h=7!u{-Ms3q<&-GYfr8O(tei z7b!!j)~RsPoRJAJK!!9QsAFsOa;VWQ(TVCAImkVa3s>4>&jJVk3H^v37Dn=2KYVk?z*$E6ngn{)0frQ z-i*-%15M>`+B3TgK_1R8geuF*gtwnQ>~*LE-^3k8dqCMjKx5fB589=r=~uOZIw1De)+2SJA3Zn;Y*}QjwMmKs zq|g%np}RV&)o;qm2U+vNUl`tUwWoZ8HHxWGaMYnLgmQwph5x-cXdG*+W3MG#D=%57 zE!ODhf4($wdRPD}uh`*j(N>N2H9{rH%%=j9xs&v97#-2EnmRT8)UI0Fy<#0v3Z*e2 zK~%B=2^n03Tb?3Ebj<4|$L+c?@<)TIWW_PE3ne3_jiY(SIeO;`5OzT6OSM9C?#@$* zd4a!%>Zz{W%PEe=)mxol{!-zf>C_CuQ=M}NF}WY!*wd|Xr-3MXPYg-v5G=6%@)YD7 z5tRB|gJ@3B5VpaXPf^;^6VI-+za**HOJyD~HS&@y`S`R_FPsOCLLGI;$*``JFOI$} zc8^R^q5hYgfa`0MggTfdDr0i-!)RL3+^xUNkO0gOjlSV}Li%eSk%@1;wOUy|Z!*H` zz{Bnw2rXeKQ$kf$4C-ouU`$?L946ek-a43(($jdUqnQvR;qvI7 zTCoBkLFVV_I9lmLr80d93>X*RQH5{TY|muO)O;q=KaNyXXb8jk^`uE=lJRjY|EVmG z7op(}JW1y`BU2nBfS||x^IhT&A+b020O&Jvoi7WT<$L$%jv6jsn88%!M!KLBoDX&H zmThHHT8tDJL#m-;S)GqlIGgV)#r;K$7k&mVlC*yi4pQbqSkF}9tXOPZhmxOa{oBLovKL5l+IYDH9;`c7Om zT7B63;0YK`Z3x5TNC~PZP?0{fpdK077a=BTm35LQ%?_jtmPb1L`tjKK%Ws^Ksg4m( zE>(y|ZF!tf=XRH#WTadAzt=l{)G_d;yrXE?6VX3ptz?(7p^d$Etya%{NYbZUPtCe7 zesn6fl48t^WB7kMGry#o$YOkQFxeZl!@43D+-r!>P^(|V_lNxm!64N)421mHSo`Q0 zu?QB+ej+TNNiLdJ)xx<1%Sfu?4v_(ZFX;5Co&o!(b}mBSZ%nvg+iNWjVGZwf&&`VZhgVM!3v6JdkU3lz0E0r{5gq%E zp+w^Q)rDL?S8;KeXVq$<*u~@kuqWiuq|lt+B*o{aoxP8T$SR zv#x=++p@vhL)_b=2fs?rVvFGnOJdbR?vaTTvzpU9>ubjzPZ#EN0PCuib8Z7Jn*gj+ z1gsNq^F2nbRBg(e$?q2-l4#J`)BNUqWQ$8_JRdXz+8W!S>){!Yt{u=%0C(4Ab|qOq z!e`*|$IcDr?W6m5y%=WiuQxo>?|v88>E2fr7nWjB{K-lIG+8#zV=fb6pGwJgVN7T?BB{bh*2d{n zF}VDWEsv@?@+yRWS0^5NA%e}~%WhiMOF>0Pm1GLk24jTc?tU=%eWZv3ZUE_=6lg1| zzqK{gIhI)xPtAkp)4iw}2~ZF|CT21VU+u!gnjxJb+rME)sGmdSD!sv|v|@Ak4>Ke4ZKb-0v4i2kZ) zCHixVx7>@0VRcC`A0KX5hC-ck>uV=})eg_>sVp^ChtiK-QXSG>tXJKpnB2jm#g37A zeb@(2GziBxeLqz**4H8K1Z)>|}CV+RMJqa&smrx&=+(TCT2G?H6Wr&KXI1(_?70-YG6m z5?`>#hq@Y8oeFH^_m{owggjquJC)7)CtXqCai*11fb#^}01~)h*x$ogbC7R;%J0-& zN!io%XY1Cshm`s&D+F$>L<6)YJW zhwu!e=^FthLwj9rtBnrG60r67prx;jXQmt#U9D`Dl#Nx-PgY)R&K;MyxxK7w+g@9Rc_y_|ToY!78Nai`0~dn2vN8)} zx;F3!0dw+L(GI)x0`t!~)z>Pxxp%e{cKT^ImIYtt8QS88Bv%$yp5w9hrgek&GYB4B)ZQ2l4RmbcWJP zUAx0fiv9dE$&{QX-B62)%scPGksmVJ?#`UO1mX!v4D9GzAkTD$z5Jq}`oo)$G{!c& zbI=<8p%0Ko9GrOZ8s8>D<6R?+mBa{c-p}jS7q!#&$u)mD>b=wAlIKiiXxwH8383Mg zIBG2wy<}J#CHTaxB^Kmi$15-GxjquhpJVa-hfUwwr9}{hn)xNwqQ`;r#+Z2n|5D0_ zW6T8?)vTrDwSsrvAF}4GF~tVHLxA!+9QZ7pCS@aknYMZ9#8ztvGR6HhnDxUMEJmrXr6)f*R=Co0beYQXoDrW;kr(6^yHr`=3lG+O09fafjFkZ0;OV=2a-B3Jy>T6v%Jz0 z09!MFYX!^uVUEdZiG}>wF|@h@!@9dRP>r>q`Q@=o1zCv*sHJ5m-k!0RalhHc^#oT zuQG&O^%2aGb~sq_(5~uPNsIVqD#LRNJzzF7%f8b7-h0BvGp2m0eX?369_2}64IXlO zTz=G;V^^)z5i6d2m*fQdYTcZy@G^h;eP%#*GeklxepU^UMy{ojql+3S2tTq782m+u z?1|e05_ki;a+%1i;ZuNUMhcf)zDm*{x%gwK+v8bV$4;T6eD_jy_&>j+j5PS!t9$Ri zEt~0r=acyQ7tirW?l#nmwFq>)_|sA0p`GU zDM{KvpM3&E-7yE1%@FX1&JS}GJ__dWs#5fg;5=DH2qXQSNyYrlxOK#Z%v}Z#pdSoI zzzv4))GS*V?}e*EJy1)fP?*go#L`!uVeN>cWTKd=eqgAonE^mMA+B3vBI~hsTpJtc zwJ`wVgT^o8@`8Erg?x{)EIb;b?yJ80Jr zljJvohBCvCyhh8mIUG^d3TffXz^01Tsz;dwQaA5$nFjm z=fJm#=bYDovM;HDT8nNn_p#9Z=+hJL-GBw8!yS?ht>NO2$LXF_;J#x35oz?5(Osft zht+gD^`rOsgB6%uAds%4D@cfCF01J zqdSqSt}>v{va9akuEw8E@9UjU)Ft*G3hbrkdJUi|U@L*8_fm^`-nrGY);O-2C5rRd z4^@fGNCjmLqV1z`wUS_-=BPHQD8W!OlDUKR`1#3{d}{1#Di@l_1n?oBk9*jnHsat921&m=QoTF zpyOAbA2}8G+=jQmuU&APkw2xmwq@W(0H`$Vo?6 z-tB{C-`;ti!~90B#IJ>ynuH;dHe9t8u4_S!HwCH}a|!2XE3O~Ed$qN(YL)2VmNz6_ zhf=vgw)zzy>x$u`mD5Om7LSfmgE&Y8Q9Kb*&}r=^Lnsrs@%_>D7H%@Ij|I?CXOaR6 zqZ>aNmspZVgLFj~jS;Y3!QE;))Jdx1x#kS)H5EMw&smj})WgRl?uWjt;X60^wo62X zH{+MoFBh^OJK&PFDa(P+FZypy(<~_o_snPd5)I)>Wn9o83PD2)#uWXn@&pH{2xptjTcBh zK+QuU`7~z_EF7O~C0wTkTvU#8FH^e5e3R3lBwO_`=11X`X!EY~Z7#>cRhM}a@nV(21(i-G-KH+S= z%Vi~NavwxY@>Uv3qk<+SL%A$v+=?FkvjwHBEj2c1ZFtCq)yFM}jR@#jIWaMIyuu}S zVO;-&^bEXijlaMZXkgSpr9{)HGIi;ph2cOp%Hl;o>KfB2d%h-*NL3)aG<=zysD_9% zKzVp{7e_kow%7Ru&GVSSA$H&7Vpy&TsEppJ)S8=%%loEH0xQ^HyTY(Rf9AkYbpZl9LMZ%oiutrSF~Yf;qfqo%FGi$%6jXRBhIX_|uD6*Nd? zu5SQ(5kV;<&a!)90K8Ytg3F1p4&e*y&eaZ2a-7=Y9f+BVA5-juLBU2Gc&cRf#HNSf z%&2yF8Hxor*9cw+_z=eiaV1u$ZUm_wb{Ck|$)#OC4YEHQR&nlnb6jj{Nc+|_iN>z0 zoQTJ4BH-@WVMFaW)N%Z$oO7t0%w`oK0&XKKF`-@qq!)7)c$tzdW|-(!3lc$>$KCM<7AlF z9k$@ku}Z+B>Gva16%|ZpX5duqrmA=N0cKkHGj|RV!uR|iW7UeuzRhPapsH6_k>YOH zEb`!7MMpGWmSJ|FOb#?DR{6a9mWv*xEIdsOZ0!oeTE7688Br0V_v@Dh^gaD;j-QG! zmsJOk#-3dpkjTw*52y1GxQ-v72)`sCLKzC<=@%b;-68yOGuU=dc#u`@{Vx7~;Vt}Q zpf=U1wGJ~Fj>u};Tho0b2D+)fD*Oo$Shh~e!Bw`41X#5XG5*fCvu` zV1)ekhLJ03;4x~8f7pC%5Q-KigO3fc5cX=e5KPd@7L}^9=_@bo3zNsq24ybP#F>XI zKI^Sm3(de;DYfW~9krQqx4}mSGwbULE%~;_K~u2spH6~X`}r-X^JA9|d;T$Rc&AsIL0%04NZ zCr2q>=;Pz!TN&|;ruUUVLiY>~Im06hQ`Swj!?0L5szGgr?J)W+F-Q(ys=JaAx0uqr z!Lk5j9mKKw!x~8W*c=nka7MOxuZJIhT{QwPBEvAR-jFl7y6bBcf6)$Y<)AitB#5qy zOH^#+y-VKgPZc0yC%nx6w!yfF>9ry44xe6~o*XI=uj()=HVzteb2iHtP|BonOTpdY z22Yt`*<#D5cw?iluGU|RbN#B^UvgUz~pvyn+=_kb3ENqJP(5-x(1 zq39X3Gj?O03iUMQco>Es)%22UkzXmE!H$f=V3TA*hi~lOPGh|H3RWG+xi^4^+W?Y4 z3Qi__BwHvZ0eX38Ohg=fxUdgB(M)t}UcBjH!=)Z1UtY~-JlAA+vRVW4>%(>EPCSm~ zAn_&ncpFr7qPg7qD4R>{tR+lC0+#CQ+_D{4b+to4o#(KiMN#9TqPCUdc_~SKUOsH_ z?Qr&|T*wclWwzmr*kAf<^EfGAvN&~)>Eoi2%8Osn@pUhk}i5>AvYuTWLhD1bI&Lzj@ zOq{%X$Afb^>3PJ`omwr{+~2pM21qEeQXm;#VOn1?QDXeB3x( z2hdR93Cm03x_qqqAauC&r0L=5a^Qf2qE%5NO08L@%(+TZ%051Na9dr za*Gr=@JrWL36mJ$nSNd)9f3e$~dm?<+Jl86RCattd$izrFy*a1?Bo>&_1m8ut(&-9$_{?lo zLLb}52NKrp6M*PsvUalt6S0q?SDq1L`S*rq*pwE~AR$0vEv@tL1O8^tfQ9)b(C&YE zqywxK5B7|Vzn{qfTBsbl!wipmHor;iygj3L;g|o0ImUl^rOT1$6}fYLTi$a%NluI5 zw`#2!x?mJ*0Qa}dIi~l)!ploE^*ZWwIYjgiWvP;f3y$aq6)@kHE!wVA~zC*qrZ-wtLYmDphiVsp$9yp10zlY4dL!IQl z`noMK_q0GCmwkGDN)-^zDA8Z`-SWD)FfFt5kP&ge<4H)c28TxSS=!DE)71|hKbt(^ z)B9>6R24atgRKrxiwby@9D2jP>6%+(y$<0Sq2o{X(VeUN)Bo!`W#h(gu3FSO)c>D; zeQW1de~zI=L~^T7&VJ#f;?#vJ6BE)?X8fg{LdvCoHzV|)%NC@ zZuoNh$@~hR=S&~|yBWGKv4wrmPx;#fk5jKh)8MD~{{9AkbAtFiZRk?bW`9U`#kb1i zg1UG4e}99&nQ=*4Ob&n`F6$ykzn`&x(m(mR|8EZ5`nw&kE~b2y58uoFw=4e^4F7gz zWBvc@sNDWy_(6&L@xAD@xk-YjbLF$eB`BYb_2<_3A7T%BQ126k#_iGMF3TqeyJWOP zSx+*83D6tkT*4M=vcfAA(93uK#IwwLCzcgN1P5{)Wj`E8NJ4IZ$ar2O-zQvK?j)^o zC!qvp9yr8V@nq4!;1Ihv(Kl+_nVOL%;^b?Up(k7yFf5+5n*P%`msF3z;$1Kp<|Ylp zmPT(VzGL(D^yjZex$Qu^g%d<3Tn7{VzhJS Xr-A$bvX=k*@!uZ!|HlJAd>{QE>A$XE literal 114123 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
    GVDEXAJF$}+ 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 W#Z2V>|I#u0Pd&5$qhI8=-v0nt?XKPc diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/etl-pipeline.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/etl-pipeline.adoc index a7fa6e6d7b8..87b237a4cec 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/etl-pipeline.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/etl-pipeline.adoc @@ -18,6 +18,8 @@ The `Document` class contains text and metadata and is created from PDFs, text f To construct a simple ETL pipeline, you can chain together an instance of each type. +image::etl-pipeline.jpg[align="center"] + Let's say we have the following instances of those three ETL types * `PagePdfDocumentReader` an implementation of `DocumentReader` @@ -44,6 +46,10 @@ spring boot new --from ai-rag --name myrag . Consult the generated `README.md` file for guidance on obtaining an OpenAI API Key and running your first AI RAG application. == ETL Interfaces and Implementations + +The ETL pipeline is composed of the following interfaces and implementations. +Detailed ETL class diagram is shown in the <> section. + === DocumentReader Provides a source of documents from diverse origins. @@ -209,9 +215,18 @@ public interface DocumentWriter extends Consumer> { } ``` +==== FileDocumentWriter +Persist documents to a file . -== Available Implementations - -There is an implementation for each of the Vector Stores that Spring AI supports, e.g. `PineconeVectorStore`. +==== VectorStore +Provides integration with various vector stores. See xref:api/vectordbs.adoc[Vector DB Documentation] for a full listing. + +[[etl-class-diagram]] +=== ETL Class Diagram + +The following class diagram illustrates the ETL interfaces and implementations. + +// image::etl-class-diagram.jpg[align="center", width="800px"] +image::etl-class-diagram.jpg[align="center"] \ No newline at end of file From 80ab883ed84b958ea8c844bd7d00caf1ff3129b9 Mon Sep 17 00:00:00 2001 From: Christian Tzolov Date: Fri, 8 Mar 2024 12:52:13 +0100 Subject: [PATCH 20/39] Fix spring-ai-retry BOM version --- spring-ai-bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-ai-bom/pom.xml b/spring-ai-bom/pom.xml index 4f604f768e7..32d678598f3 100644 --- a/spring-ai-bom/pom.xml +++ b/spring-ai-bom/pom.xml @@ -36,7 +36,7 @@ org.springframework.ai spring-ai-retry - ${project.parent.version} + ${project.version} From 13f4130556e7bcb2eb8357502cca5cd887ae0a02 Mon Sep 17 00:00:00 2001 From: youngpar Date: Sat, 9 Mar 2024 08:35:51 +0900 Subject: [PATCH 21/39] Revert "docs FunctionCallingOptionsBuilder.java" This reverts commit 231e9ccee19ff8b24cf1e0e685cb640fd6b8a486. Revert Branch --- .../model/function/FunctionCallingOptionsBuilder.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java index 98f8b2de16b..4d6f3a78eca 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java @@ -19,7 +19,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import org.springframework.lang.NonNull; import org.springframework.util.Assert; /** @@ -61,26 +60,25 @@ public FunctionCallingOptions build() { return new FunctionCallingOptionsImpl(this.functionCallbacks, this.functions); } - public FunctionCallingOptionsBuilder withFunctionCallbacks( - @NonNull final List functionCallbacks) { + public FunctionCallingOptionsBuilder withFunctionCallbacks(final List functionCallbacks) { Assert.notNull(functionCallbacks, "FunctionCallback must not be null"); this.functionCallbacks.addAll(functionCallbacks); return this; } - public FunctionCallingOptionsBuilder withFunctionCallback(@NonNull final FunctionCallback functionCallback) { + public FunctionCallingOptionsBuilder withFunctionCallback(final FunctionCallback functionCallback) { Assert.notNull(functionCallback, "FunctionCallback must not be null"); this.functionCallbacks.add(functionCallback); return this; } - public FunctionCallingOptionsBuilder withFunctions(@NonNull final Set functions) { + public FunctionCallingOptionsBuilder withFunctions(final Set functions) { Assert.notNull(functions, "Functions must not be null"); this.functions.addAll(functions); return this; } - public FunctionCallingOptionsBuilder withFunction(@NonNull final String function) { + public FunctionCallingOptionsBuilder withFunction(final String function) { Assert.notNull(function, "Function must not be null"); this.functions.add(function); return this; From fbb0fc37a5f80ec16be768651915740aca189c1c Mon Sep 17 00:00:00 2001 From: youngpar Date: Sun, 10 Mar 2024 16:27:28 +0900 Subject: [PATCH 22/39] refactor Private Class to Static memory Optimized --- .../org/springframework/ai/chat/prompt/ChatOptionsBuilder.java | 2 +- .../java/org/springframework/ai/image/ImageOptionsBuilder.java | 2 +- .../ai/model/function/FunctionCallingOptionsBuilder.java | 2 +- .../model/function/PortableFunctionCallingOptionsBuilder.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java index 0f27bbbf46a..d4a2554e07e 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/prompt/ChatOptionsBuilder.java @@ -70,7 +70,7 @@ public ChatOptions build() { * Created only by ChatOptionsBuilder for controlled setup. Hidden implementation, * accessed via ChatOptions interface. Promotes modularity and easy use. */ - private class ChatOptionsImpl implements ChatOptions { + private static class ChatOptionsImpl implements ChatOptions { private final Float temperature; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java index d4c26072bd4..d1254e560e1 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java @@ -93,7 +93,7 @@ public ImageOptionsBuilder withHeight(final Integer height) { * Created only by ImageOptionsBuilder for controlled setup. Hidden implementation, * accessed via ImageOptions interface. Promotes modularity and easy use. */ - private class ImageOptionsImpl implements ImageOptions { + private static class ImageOptionsImpl implements ImageOptions { private final Integer n; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java index 4d6f3a78eca..1246a1439b3 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java @@ -84,7 +84,7 @@ public FunctionCallingOptionsBuilder withFunction(final String function) { return this; } - private class FunctionCallingOptionsImpl implements FunctionCallingOptions { + private static class FunctionCallingOptionsImpl implements FunctionCallingOptions { private final List functionCallbacks; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptionsBuilder.java index c86daec88a2..44ff052802e 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptionsBuilder.java @@ -109,7 +109,7 @@ public PortableFunctionCallingOptionsBuilder withFunctionCallingOptions(final Fu return this; } - private class PortableFunctionCallingOptionsImpl implements PortableFunctionCallingOptions { + private static class PortableFunctionCallingOptionsImpl implements PortableFunctionCallingOptions { private final FunctionCallingOptions functionCallingOptions; From a80fa1d26610ff120c57c7acbdcec114f16d542c Mon Sep 17 00:00:00 2001 From: youngpar Date: Sun, 10 Mar 2024 16:33:12 +0900 Subject: [PATCH 23/39] docs FunctionCallingOptionsBuilder.java Modified to facilitate documentation through the use of the @nonnull annotation. --- .../model/function/FunctionCallingOptionsBuilder.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java index 1246a1439b3..1abf562e057 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptionsBuilder.java @@ -19,6 +19,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import org.springframework.lang.NonNull; import org.springframework.util.Assert; /** @@ -60,25 +61,26 @@ public FunctionCallingOptions build() { return new FunctionCallingOptionsImpl(this.functionCallbacks, this.functions); } - public FunctionCallingOptionsBuilder withFunctionCallbacks(final List functionCallbacks) { + public FunctionCallingOptionsBuilder withFunctionCallbacks( + @NonNull final List functionCallbacks) { Assert.notNull(functionCallbacks, "FunctionCallback must not be null"); this.functionCallbacks.addAll(functionCallbacks); return this; } - public FunctionCallingOptionsBuilder withFunctionCallback(final FunctionCallback functionCallback) { + public FunctionCallingOptionsBuilder withFunctionCallback(@NonNull final FunctionCallback functionCallback) { Assert.notNull(functionCallback, "FunctionCallback must not be null"); this.functionCallbacks.add(functionCallback); return this; } - public FunctionCallingOptionsBuilder withFunctions(final Set functions) { + public FunctionCallingOptionsBuilder withFunctions(@NonNull final Set functions) { Assert.notNull(functions, "Functions must not be null"); this.functions.addAll(functions); return this; } - public FunctionCallingOptionsBuilder withFunction(final String function) { + public FunctionCallingOptionsBuilder withFunction(@NonNull final String function) { Assert.notNull(function, "Function must not be null"); this.functions.add(function); return this; From d353505a4c769b9a0cc3e56c209cfd3d8a980744 Mon Sep 17 00:00:00 2001 From: youngpar Date: Mon, 11 Mar 2024 00:32:21 +0900 Subject: [PATCH 24/39] docs add Comment for javadoc --- .../ai/model/function/PortableFunctionCallingOptions.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptions.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptions.java index e14ee29bbae..adc229b8c42 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/PortableFunctionCallingOptions.java @@ -17,6 +17,12 @@ import org.springframework.ai.chat.prompt.ChatOptions; +/** + * Including {@link FunctionCallingOptions} and {@link ChatOptions}. This Interface allows + * the extracion of ChatOptions and FunctionCallingOptions. + * + * @author youngmon + */ public interface PortableFunctionCallingOptions extends FunctionCallingOptions, ChatOptions { } From 784a3af38144a4e84791790dcc73ef2401392ea3 Mon Sep 17 00:00:00 2001 From: youngpar Date: Wed, 13 Mar 2024 18:57:22 +0900 Subject: [PATCH 25/39] refactor DefaultContentFormatter.java The code was already well-crafted, so no immediate modifications were evident. However, to maintain consistency across the entire builder API, it was necessary to make adjustments to the from method. --- .../ai/document/DefaultContentFormatter.java | 48 +++++++++++-------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java b/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java index 7db065225ab..d6f83760a6a 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/document/DefaultContentFormatter.java @@ -78,8 +78,23 @@ public class DefaultContentFormatter implements ContentFormatter { * Start building a new configuration. * @return The entry point for creating a new configuration. */ - public static Builder builder() { - return new Builder(); + public static ContentFormatterBuilder builder() { + return new ContentFormatterBuilder(); + } + + /** + * Initializes a new {@link ContentFormatterBuilder} with settings from an existing + * {@link DefaultContentFormatter} object. + * @param formatter The DefaultContentFormatter object whose settings are to be used. + * @return A ContentFormatterBuilder instance initialized with the provided + * DefaultContentFormatter settings. + */ + public static ContentFormatterBuilder builder(DefaultContentFormatter formatter) { + return builder().withExcludedEmbedMetadataKeys(formatter.getExcludedEmbedMetadataKeys()) + .withExcludedInferenceMetadataKeys(formatter.getExcludedInferenceMetadataKeys()) + .withMetadataSeparator(formatter.getMetadataSeparator()) + .withMetadataTemplate(formatter.getMetadataTemplate()) + .withTextTemplate(formatter.getTextTemplate()); } /** @@ -90,7 +105,7 @@ public static DefaultContentFormatter defaultConfig() { return builder().build(); } - private DefaultContentFormatter(Builder builder) { + private DefaultContentFormatter(ContentFormatterBuilder builder) { this.metadataTemplate = builder.metadataTemplate; this.metadataSeparator = builder.metadataSeparator; this.textTemplate = builder.textTemplate; @@ -98,7 +113,7 @@ private DefaultContentFormatter(Builder builder) { this.excludedEmbedMetadataKeys = builder.excludedEmbedMetadataKeys; } - public static class Builder { + public static class ContentFormatterBuilder { private String metadataTemplate = DEFAULT_METADATA_TEMPLATE; @@ -110,16 +125,7 @@ public static class Builder { private List excludedEmbedMetadataKeys = new ArrayList<>(); - private Builder() { - } - - public Builder from(DefaultContentFormatter fromFormatter) { - this.withExcludedEmbedMetadataKeys(fromFormatter.getExcludedEmbedMetadataKeys()) - .withExcludedInferenceMetadataKeys(fromFormatter.getExcludedInferenceMetadataKeys()) - .withMetadataSeparator(fromFormatter.getMetadataSeparator()) - .withMetadataTemplate(fromFormatter.getMetadataTemplate()) - .withTextTemplate(fromFormatter.getTextTemplate()); - return this; + private ContentFormatterBuilder() { } /** @@ -127,7 +133,7 @@ public Builder from(DefaultContentFormatter fromFormatter) { * @param metadataTemplate Metadata template to use. * @return this builder */ - public Builder withMetadataTemplate(String metadataTemplate) { + public ContentFormatterBuilder withMetadataTemplate(String metadataTemplate) { Assert.hasText(metadataTemplate, "Metadata Template must not be empty"); this.metadataTemplate = metadataTemplate; return this; @@ -138,7 +144,7 @@ public Builder withMetadataTemplate(String metadataTemplate) { * @param metadataSeparator Metadata separator to use. * @return this builder */ - public Builder withMetadataSeparator(String metadataSeparator) { + public ContentFormatterBuilder withMetadataSeparator(String metadataSeparator) { Assert.notNull(metadataSeparator, "Metadata separator must not be empty"); this.metadataSeparator = metadataSeparator; return this; @@ -149,7 +155,7 @@ public Builder withMetadataSeparator(String metadataSeparator) { * @param textTemplate Document's content template. * @return this builder */ - public Builder withTextTemplate(String textTemplate) { + public ContentFormatterBuilder withTextTemplate(String textTemplate) { Assert.hasText(textTemplate, "Document's text template must not be empty"); this.textTemplate = textTemplate; return this; @@ -161,13 +167,13 @@ public Builder withTextTemplate(String textTemplate) { * @param excludedInferenceMetadataKeys Excluded inference metadata keys to use. * @return this builder */ - public Builder withExcludedInferenceMetadataKeys(List excludedInferenceMetadataKeys) { + public ContentFormatterBuilder withExcludedInferenceMetadataKeys(List excludedInferenceMetadataKeys) { Assert.notNull(excludedInferenceMetadataKeys, "Excluded inference metadata keys must not be null"); this.excludedInferenceMetadataKeys = excludedInferenceMetadataKeys; return this; } - public Builder withExcludedInferenceMetadataKeys(String... keys) { + public ContentFormatterBuilder withExcludedInferenceMetadataKeys(String... keys) { Assert.notNull(keys, "Excluded inference metadata keys must not be null"); this.excludedInferenceMetadataKeys.addAll(Arrays.asList(keys)); return this; @@ -178,13 +184,13 @@ public Builder withExcludedInferenceMetadataKeys(String... keys) { * @param excludedEmbedMetadataKeys Excluded Embed metadata keys to use. * @return this builder */ - public Builder withExcludedEmbedMetadataKeys(List excludedEmbedMetadataKeys) { + public ContentFormatterBuilder withExcludedEmbedMetadataKeys(List excludedEmbedMetadataKeys) { Assert.notNull(excludedEmbedMetadataKeys, "Excluded Embed metadata keys must not be null"); this.excludedEmbedMetadataKeys = excludedEmbedMetadataKeys; return this; } - public Builder withExcludedEmbedMetadataKeys(String... keys) { + public ContentFormatterBuilder withExcludedEmbedMetadataKeys(String... keys) { Assert.notNull(keys, "Excluded Embed metadata keys must not be null"); this.excludedEmbedMetadataKeys.addAll(Arrays.asList(keys)); return this; From eed83f4184b4f8aef0599af33eaaf38f2858a0b1 Mon Sep 17 00:00:00 2001 From: youngpar Date: Fri, 15 Mar 2024 17:06:07 +0900 Subject: [PATCH 26/39] refactor OpenAiImageOptions.java Seperated implementation and interface --- .../ai/openai/OpenAiImageOptions.java | 238 +----------------- .../ai/openai/OpenAiImageOptionsBuilder.java | 212 ++++++++++++++++ .../ai/image/ImageOptionsBuilder.java | 2 +- 3 files changed, 223 insertions(+), 229 deletions(-) create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptionsBuilder.java 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 28effc5fd45..43aabfe2cdf 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 @@ -1,27 +1,7 @@ -/* - * Copyright 2023 - 2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ package org.springframework.ai.openai; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; - import org.springframework.ai.image.ImageOptions; -import org.springframework.ai.openai.api.OpenAiImageApi; - -import java.util.Objects; /** * OpenAI Image API options. OpenAiImageOptions.java @@ -30,33 +10,7 @@ * @author Christian Tzolov * @since 0.8.0 */ -@JsonInclude(JsonInclude.Include.NON_NULL) -public class OpenAiImageOptions implements ImageOptions { - - /** - * The number of images to generate. Must be between 1 and 10. For dall-e-3, only n=1 - * is supported. - */ - @JsonProperty("n") - private Integer n; - - /** - * The model to use for image generation. - */ - @JsonProperty("model") - private String model = OpenAiImageApi.DEFAULT_IMAGE_MODEL; - - /** - * The width of the generated images. Must be one of 256, 512, or 1024 for dall-e-2. - */ - @JsonProperty("size_width") - private Integer width; - - /** - * The height of the generated images. Must be one of 256, 512, or 1024 for dall-e-2. - */ - @JsonProperty("size_height") - private Integer height; +public interface OpenAiImageOptions extends ImageOptions { /** * The quality of the image that will be generated. hd creates images with finer @@ -64,21 +18,7 @@ public class OpenAiImageOptions implements ImageOptions { * dall-e-3. */ @JsonProperty("quality") - private String quality; - - /** - * The format in which the generated images are returned. Must be one of url or - * b64_json. - */ - @JsonProperty("response_format") - private String responseFormat; - - /** - * The size of the generated images. Must be one of 256x256, 512x512, or 1024x1024 for - * dall-e-2. Must be one of 1024x1024, 1792x1024, or 1024x1792 for dall-e-3 models. - */ - @JsonProperty("size") - private String size; + String getQuality(); /** * The style of the generated images. Must be one of vivid or natural. Vivid causes @@ -87,178 +27,20 @@ public class OpenAiImageOptions implements ImageOptions { * only supported for dall-e-3. */ @JsonProperty("style") - private String style; + String getStyle(); /** * A unique identifier representing your end-user, which can help OpenAI to monitor * and detect abuse. */ @JsonProperty("user") - private String user; - - public static Builder builder() { - return new Builder(); - } - - public static class Builder { - - private final OpenAiImageOptions options; - - private Builder() { - this.options = new OpenAiImageOptions(); - } - - public Builder withN(Integer n) { - options.setN(n); - return this; - } - - public Builder withModel(String model) { - options.setModel(model); - return this; - } - - public Builder withQuality(String quality) { - options.setQuality(quality); - return this; - } + String getUser(); - public Builder withResponseFormat(String responseFormat) { - options.setResponseFormat(responseFormat); - return this; - } - - public Builder withWidth(Integer width) { - options.setWidth(width); - return this; - } - - public Builder withHeight(Integer height) { - options.setHeight(height); - return this; - } - - public Builder withStyle(String style) { - options.setStyle(style); - return this; - } - - public Builder withUser(String user) { - options.setUser(user); - return this; - } - - public OpenAiImageOptions build() { - return options; - } - - } - - @Override - public Integer getN() { - return this.n; - } - - public void setN(Integer n) { - this.n = n; - } - - @Override - public String getModel() { - return this.model; - } - - public void setModel(String model) { - this.model = model; - } - - public String getQuality() { - return this.quality; - } - - public void setQuality(String quality) { - this.quality = quality; - } - - @Override - public String getResponseFormat() { - return responseFormat; - } - - public void setResponseFormat(String responseFormat) { - this.responseFormat = responseFormat; - } - - @Override - public Integer getWidth() { - return this.width; - } - - public void setWidth(Integer width) { - this.width = width; - this.size = this.width + "x" + this.height; - } - - @Override - public Integer getHeight() { - return this.height; - } - - public void setHeight(Integer height) { - this.height = height; - this.size = this.width + "x" + this.height; - } - - public String getStyle() { - return this.style; - } - - public void setStyle(String style) { - this.style = style; - } - - public String getUser() { - return this.user; - } - - public void setUser(String user) { - this.user = user; - } - - public void setSize(String size) { - this.size = size; - } - - public String getSize() { - - if (this.size != null) { - return this.size; - } - return (this.width != null && this.height != null) ? this.width + "x" + this.height : null; - } - - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (!(o instanceof OpenAiImageOptions that)) - return false; - return Objects.equals(n, that.n) && Objects.equals(model, that.model) && Objects.equals(width, that.width) - && Objects.equals(height, that.height) && Objects.equals(quality, that.quality) - && Objects.equals(responseFormat, that.responseFormat) && Objects.equals(size, that.size) - && Objects.equals(style, that.style) && Objects.equals(user, that.user); - } - - @Override - public int hashCode() { - return Objects.hash(n, model, width, height, quality, responseFormat, size, style, user); - } - - @Override - public String toString() { - return "OpenAiImageOptions{" + "n=" + n + ", model='" + model + '\'' + ", width=" + width + ", height=" + height - + ", quality='" + quality + '\'' + ", responseFormat='" + responseFormat + '\'' + ", size='" + size - + '\'' + ", style='" + style + '\'' + ", user='" + user + '\'' + '}'; - } + /** + * The size of the generated images. Must be one of 256x256, 512x512, or 1024x1024 for + * dall-e-2. Must be one of 1024x1024, 1792x1024, or 1024x1792 for dall-e-3 models. + */ + @JsonProperty("size") + String getSize(); } diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptionsBuilder.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptionsBuilder.java new file mode 100644 index 00000000000..e16972a6883 --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptionsBuilder.java @@ -0,0 +1,212 @@ +package org.springframework.ai.openai; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; +import org.springframework.ai.image.ImageOptions; +import org.springframework.ai.image.ImageOptionsBuilder; +import org.springframework.ai.openai.api.OpenAiImageApi; + +public class OpenAiImageOptionsBuilder { + + private final ImageOptionsBuilder imageOptionsBuilder = ImageOptionsBuilder.builder() + .withModel(OpenAiImageApi.DEFAULT_IMAGE_MODEL); + + private String quality; + + private String size; + + private String style; + + private String user; + + public static OpenAiImageOptionsBuilder builder() { + return new OpenAiImageOptionsBuilder(); + } + + public static OpenAiImageOptionsBuilder builder(final ImageOptions options) { + return builder().withN(options.getN()) + .withModel(options.getModel()) + .withWidth(options.getWidth()) + .withHeight(options.getHeight()); + } + + public static OpenAiImageOptionsBuilder builder(final OpenAiImageOptions options) { + return builder((ImageOptions) options).withQuality(options.getQuality()) + .withResponseFormat(options.getResponseFormat()) + .withSize(options.getSize()) + .withStyle(options.getStyle()) + .withUser(options.getUser()); + } + + public OpenAiImageOptionsImpl build() { + return new OpenAiImageOptionsImpl(this); + } + + public OpenAiImageOptionsBuilder withN(final Integer n) { + this.imageOptionsBuilder.withN(n); + return this; + } + + public OpenAiImageOptionsBuilder withModel(final String model) { + this.imageOptionsBuilder.withModel(model); + return this; + }; + + public OpenAiImageOptionsBuilder withWidth(final Integer width) { + this.imageOptionsBuilder.withWidth(width); + return this; + } + + public OpenAiImageOptionsBuilder withHeight(final Integer height) { + this.imageOptionsBuilder.withHeight(height); + return this; + } + + public OpenAiImageOptionsBuilder withResponseFormat(final String responseFormat) { + this.imageOptionsBuilder.withResponseFormat(responseFormat); + return this; + } + + public OpenAiImageOptionsBuilder withQuality(final String quality) { + this.quality = quality; + return this; + } + + public OpenAiImageOptionsBuilder withSize(final String size) { + this.size = size; + return this; + } + + public OpenAiImageOptionsBuilder withStyle(final String style) { + this.style = style; + return this; + } + + public OpenAiImageOptionsBuilder withUser(final String user) { + this.user = user; + return this; + } + + @JsonInclude(JsonInclude.Include.NON_NULL) + private static class OpenAiImageOptionsImpl implements OpenAiImageOptions { + + private OpenAiImageOptionsImpl(OpenAiImageOptionsBuilder builder) { + this.options = builder.imageOptionsBuilder.build(); + this.quality = builder.quality; + this.user = builder.user; + this.style = builder.style; + if (builder.size != null) { + this.size = builder.size; + } + else + this.size = (this.options.getWidth() != null && this.options.getWidth() != null) + ? this.options.getWidth() + "x" + this.options.getHeight() : null; + } + + private final ImageOptions options; + + private final String quality; + + private final String size; + + private final String style; + + private final String user; + + /** + * The number of images to generate. Must be between 1 and 10. For dall-e-3, only + * n=1 is supported. + */ + @Override + @JsonProperty("n") + public Integer getN() { + return this.options.getN(); + } + + /** + * The model to use for image generation. + */ + @Override + @JsonProperty("model") + public String getModel() { + return this.options.getModel(); + } + + /** + * The format in which the generated images are returned. Must be one of url or + * b64_json. + */ + @Override + @JsonProperty("response_format") + public String getResponseFormat() { + return this.options.getResponseFormat(); + } + + /** + * The width of the generated images. Must be one of 256, 512, or 1024 for + * dall-e-2. + */ + @Override + @JsonProperty("size_width") + public Integer getWidth() { + return this.options.getWidth(); + } + + /** + * The height of the generated images. Must be one of 256, 512, or 1024 for + * dall-e-2. + */ + @Override + @JsonProperty("size_height") + public Integer getHeight() { + return this.options.getHeight(); + } + + @Override + public String getQuality() { + return this.quality; + } + + @Override + public String getStyle() { + return this.style; + } + + @Override + public String getUser() { + return this.user; + } + + @Override + public String getSize() { + return this.size; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof OpenAiImageOptionsImpl that)) + return false; + return Objects.equals(options, that.options) && Objects.equals(quality, that.quality) + && Objects.equals(size, that.size) && Objects.equals(style, that.style) + && Objects.equals(user, that.user); + } + + @Override + public int hashCode() { + return Objects.hash(options, quality, size, style, user); + } + + @Override + public String toString() { + return "OpenAiImageOptions{" + "n=" + options.getN() + ", model='" + options.getModel() + '\'' + ", width=" + + options.getWidth() + ", height=" + options.getHeight() + ", quality='" + quality + '\'' + + ", responseFormat='" + options.getResponseFormat() + '\'' + ", size='" + size + '\'' + ", style='" + + style + '\'' + ", user='" + user + '\'' + '}'; + } + + } + +} diff --git a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java index d1254e560e1..fb308666220 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/image/ImageOptionsBuilder.java @@ -105,7 +105,7 @@ private static class ImageOptionsImpl implements ImageOptions { private final String responseFormat; - ImageOptionsImpl(final Integer n, final String model, final Integer width, final Integer height, + private ImageOptionsImpl(final Integer n, final String model, final Integer width, final Integer height, final String responseFormat) { this.n = n; this.model = model; From c1b11dd1b7e07642daf89ab913d485c4578a7fcd Mon Sep 17 00:00:00 2001 From: youngpar Date: Fri, 15 Mar 2024 18:42:54 +0900 Subject: [PATCH 27/39] refactor OpenAiImageProperties.java Seperated Option Object, Property Object --- .../openai/OpenAiImageOptionsProperties.java | 134 ++++++++++++++++++ .../openai/OpenAiImageProperties.java | 4 +- 2 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiImageOptionsProperties.java diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiImageOptionsProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiImageOptionsProperties.java new file mode 100644 index 00000000000..29d5fbf1247 --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiImageOptionsProperties.java @@ -0,0 +1,134 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.autoconfigure.openai; + +import org.springframework.ai.openai.OpenAiImageOptions; +import org.springframework.ai.openai.OpenAiImageOptionsBuilder; + +/** + * This class is an object for binding Spring Properties. As it implements the + * {@link OpenAiImageOptions} interface, it can be used as an immutable object through the + * {@link OpenAiImageOptionsBuilder}. + * + * @since 0.8.1 + * @author youngmon + */ +public class OpenAiImageOptionsProperties implements OpenAiImageOptions { + + private Integer n; + + private String model; + + private Integer width; + + private Integer height; + + private String quality; + + private String responseFormat; + + private String size; + + private String style; + + private String user; + + @Override + public Integer getN() { + return this.n; + } + + @Override + public String getModel() { + return this.model; + } + + @Override + public Integer getHeight() { + return this.height; + } + + @Override + public Integer getWidth() { + return this.width; + } + + @Override + public String getResponseFormat() { + return responseFormat; + } + + @Override + public String getSize() { + + if (this.size != null) { + return this.size; + } + return (this.width != null && this.height != null) ? this.width + "x" + this.height : null; + } + + @Override + public String getUser() { + return this.user; + } + + @Override + public String getStyle() { + return this.style; + } + + @Override + public String getQuality() { + return this.quality; + } + + public void setN(Integer n) { + this.n = n; + } + + public void setWidth(Integer width) { + this.width = width; + } + + public void setHeight(Integer height) { + this.height = height; + } + + public void setResponseFormat(String responseFormat) { + this.responseFormat = responseFormat; + } + + public void setQuality(String quality) { + this.quality = quality; + } + + public void setModel(String model) { + this.model = model; + } + + public void setStyle(String style) { + this.style = style; + } + + public void setUser(String user) { + this.user = user; + } + + public void setSize(String size) { + this.size = size; + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiImageProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiImageProperties.java index 99fadafaf4d..baf256adfe6 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiImageProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiImageProperties.java @@ -39,13 +39,13 @@ public class OpenAiImageProperties extends OpenAiParentProperties { * Options for OpenAI Image API. */ @NestedConfigurationProperty - private OpenAiImageOptions options = OpenAiImageOptions.builder().build(); + private OpenAiImageOptionsProperties options = new OpenAiImageOptionsProperties(); public OpenAiImageOptions getOptions() { return options; } - public void setOptions(OpenAiImageOptions options) { + public void setOptions(OpenAiImageOptionsProperties options) { this.options = options; } From 15ce8e25f49255071aaf9c5879b2aa9a10eed5ac Mon Sep 17 00:00:00 2001 From: youngpar Date: Fri, 15 Mar 2024 18:49:42 +0900 Subject: [PATCH 28/39] fix side-effect Apply Changes --- .../ai/openai/OpenAiImageClient.java | 40 +++---------------- .../ai/openai/chat/OpenAiRetryTests.java | 4 +- .../openai/OpenAiAutoConfiguration.java | 5 ++- 3 files changed, 10 insertions(+), 39 deletions(-) diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java index 69863ef9ffc..7c28e5e27fe 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java @@ -48,14 +48,14 @@ public class OpenAiImageClient implements ImageClient { private final static Logger logger = LoggerFactory.getLogger(OpenAiImageClient.class); - private OpenAiImageOptions defaultOptions; + private final OpenAiImageOptions defaultOptions; private final OpenAiImageApi openAiImageApi; public final RetryTemplate retryTemplate; public OpenAiImageClient(OpenAiImageApi openAiImageApi) { - this(openAiImageApi, OpenAiImageOptions.builder().build(), RetryUtils.DEFAULT_RETRY_TEMPLATE); + this(openAiImageApi, OpenAiImageOptionsBuilder.builder().build(), RetryUtils.DEFAULT_RETRY_TEMPLATE); } public OpenAiImageClient(OpenAiImageApi openAiImageApi, OpenAiImageOptions defaultOptions, @@ -123,39 +123,9 @@ private ImageResponse convertResponse(ResponseEntity Date: Sun, 17 Mar 2024 03:51:07 +0900 Subject: [PATCH 29/39] fix returning implementations --- .../springframework/ai/openai/OpenAiImageOptionsBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptionsBuilder.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptionsBuilder.java index e16972a6883..e95d1351fcc 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptionsBuilder.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageOptionsBuilder.java @@ -39,7 +39,7 @@ public static OpenAiImageOptionsBuilder builder(final OpenAiImageOptions options .withUser(options.getUser()); } - public OpenAiImageOptionsImpl build() { + public OpenAiImageOptions build() { return new OpenAiImageOptionsImpl(this); } From 8edd1a7e47d3c1b745ef5eb6eb37138a0ba33ea1 Mon Sep 17 00:00:00 2001 From: youngpar Date: Sun, 17 Mar 2024 04:37:51 +0900 Subject: [PATCH 30/39] add header and null check logic --- .../ai/openai/OpenAiImageClient.java | 6 +- .../ai/openai/OpenAiImageOptionsBuilder.java | 55 ++++++++++++++++--- 2 files changed, 49 insertions(+), 12 deletions(-) diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java index 7c28e5e27fe..9b24cd57925 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiImageClient.java @@ -123,9 +123,9 @@ private ImageResponse convertResponse(ResponseEntity Date: Sun, 17 Mar 2024 04:48:44 +0900 Subject: [PATCH 31/39] refactor OpenAiChatOptions.java Seperated implementation and interface --- .../ai/openai/OpenAiChatOptions.java | 527 +++--------------- .../ai/openai/OpenAiChatOptionsBuilder.java | 488 ++++++++++++++++ .../function/FunctionCallingOptions.java | 3 + 3 files changed, 567 insertions(+), 451 deletions(-) create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptionsBuilder.java diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java index 3cfe6f0a262..077d4e57d50 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java @@ -15,496 +15,121 @@ */ package org.springframework.ai.openai; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; - -import org.springframework.ai.chat.prompt.ChatOptions; -import org.springframework.ai.model.function.FunctionCallback; -import org.springframework.ai.model.function.FunctionCallingOptions; +import java.util.List; +import java.util.Map; +import org.springframework.ai.model.function.PortableFunctionCallingOptions; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest.ResponseFormat; import org.springframework.ai.openai.api.OpenAiApi.FunctionTool; -import org.springframework.boot.context.properties.NestedConfigurationProperty; -import org.springframework.util.Assert; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest.ToolChoiceBuilder; /** + * @author youngmon * @author Christian Tzolov * @since 0.8.0 */ @JsonInclude(Include.NON_NULL) -public class OpenAiChatOptions implements FunctionCallingOptions, ChatOptions { +public interface OpenAiChatOptions extends PortableFunctionCallingOptions { - // @formatter:off /** - * ID of the model to use. + * How many chat completion choices to generate for each input message. Note that you + * will be charged based on the number of generated tokens across all of the choices. + * Keep n as 1 to minimize costs. */ - private @JsonProperty("model") String model; + @JsonProperty("n") + Integer getN(); + /** - * Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing - * frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. + * ID of the model to use. */ - private @JsonProperty("frequency_penalty") Float frequencyPenalty; + @JsonProperty("model") + String getModel(); + /** - * Modify the likelihood of specified tokens appearing in the completion. Accepts a JSON object - * that maps tokens (specified by their token ID in the tokenizer) to an associated bias value from -100 to 100. - * Mathematically, the bias is added to the logits generated by the model prior to sampling. The exact effect will - * vary per model, but values between -1 and 1 should decrease or increase likelihood of selection; values like -100 - * or 100 should result in a ban or exclusive selection of the relevant token. + * An object specifying the format that the model must output. Setting to { "type": + * "json_object" } enables JSON mode, which guarantees the message the model generates + * is valid JSON. */ - private @JsonProperty("logit_bias") Map logitBias; + @JsonProperty("response_format") + ResponseFormat getResponseFormat(); + /** - * The maximum number of tokens to generate in the chat completion. The total length of input - * tokens and generated tokens is limited by the model's context length. + * Number between -2.0 and 2.0. Positive values penalize new tokens based on their + * existing frequency in the text so far, decreasing the model's likelihood to repeat + * the same line verbatim. */ - private @JsonProperty("max_tokens") Integer maxTokens; + @JsonProperty("frequency_penalty") + Float getFrequencyPenalty(); + /** - * How many chat completion choices to generate for each input message. Note that you will be charged based - * on the number of generated tokens across all of the choices. Keep n as 1 to minimize costs. + * Modify the likelihood of specified tokens appearing in the completion. Accepts a + * JSON object that maps tokens (specified by their token ID in the tokenizer) to an + * associated bias value from -100 to 100. Mathematically, the bias is added to the + * logits generated by the model prior to sampling. The exact effect will vary per + * model, but values between -1 and 1 should decrease or increase likelihood of + * selection; values like -100 or 100 should result in a ban or exclusive selection of + * the relevant token. */ - private @JsonProperty("n") Integer n; + @JsonProperty("logit_bias") + Map getLogitBias(); + /** - * Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they - * appear in the text so far, increasing the model's likelihood to talk about new topics. + * The maximum number of tokens to generate in the chat completion. The total length + * of input tokens and generated tokens is limited by the model's context length. */ - private @JsonProperty("presence_penalty") Float presencePenalty; + @JsonProperty("max_tokens") + Integer getMaxTokens(); + /** - * An object specifying the format that the model must output. Setting to { "type": - * "json_object" } enables JSON mode, which guarantees the message the model generates is valid JSON. + * Number between -2.0 and 2.0. Positive values penalize new tokens based on whether + * they appear in the text so far, increasing the model's likelihood to talk about new + * topics. */ - private @JsonProperty("response_format") ResponseFormat responseFormat; + @JsonProperty("presence_penalty") + Float getPresencePenalty(); + /** * This feature is in Beta. If specified, our system will make a best effort to sample - * deterministically, such that repeated requests with the same seed and parameters should return the same result. - * Determinism is not guaranteed, and you should refer to the system_fingerprint response parameter to monitor - * changes in the backend. + * deterministically, such that repeated requests with the same seed and parameters + * should return the same result. Determinism is not guaranteed, and you should refer + * to the system_fingerprint response parameter to monitor changes in the backend. */ - private @JsonProperty("seed") Integer seed; + @JsonProperty("seed") + Integer getSeed(); + /** * Up to 4 sequences where the API will stop generating further tokens. */ - @NestedConfigurationProperty - private @JsonProperty("stop") List stop; - /** - * What sampling temperature to use, between 0 and 1. Higher values like 0.8 will make the output - * more random, while lower values like 0.2 will make it more focused and deterministic. We generally recommend - * altering this or top_p but not both. - */ - private @JsonProperty("temperature") Float temperature; - /** - * An alternative to sampling with temperature, called nucleus sampling, where the model considers the - * results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% - * probability mass are considered. We generally recommend altering this or temperature but not both. - */ - private @JsonProperty("top_p") Float topP; - /** - * A list of tools the model may call. Currently, only functions are supported as a tool. Use this to - * provide a list of functions the model may generate JSON inputs for. - */ - @NestedConfigurationProperty - private @JsonProperty("tools") List tools; - /** - * Controls which (if any) function is called by the model. none means the model will not call a - * function and instead generates a message. auto means the model can pick between generating a message or calling a - * function. Specifying a particular function via {"type: "function", "function": {"name": "my_function"}} forces - * the model to call that function. none is the default when no functions are present. auto is the default if - * functions are present. Use the {@link ToolChoiceBuilder} to create a tool choice object. - */ - private @JsonProperty("tool_choice") String toolChoice; + @JsonProperty("stop") + List getStop(); + /** - * A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. + * A list of tools the model may call. Currently, only functions are supported as a + * tool. Use this to provide a list of functions the model may generate JSON inputs + * for. */ - private @JsonProperty("user") String user; + @JsonProperty("tools") + List getTools(); /** - * OpenAI Tool Function Callbacks to register with the ChatClient. - * For Prompt Options the functionCallbacks are automatically enabled for the duration of the prompt execution. - * For Default Options the functionCallbacks are registered but disabled by default. Use the enableFunctions to set the functions - * from the registry to be used by the ChatClient chat completion requests. + * Controls which (if any) function is called by the model. none means the model will + * not call a function and instead generates a message. auto means the model can pick + * between generating a message or calling a function. Specifying a particular + * function via {"type: "function", "function": {"name": "my_function"}} forces the + * model to call that function. none is the default when no functions are present. + * auto is the default if functions are present. Use the {@link ToolChoiceBuilder} to + * create a tool choice object. */ - @NestedConfigurationProperty - @JsonIgnore - private List functionCallbacks = new ArrayList<>(); + @JsonProperty("tool_choice") + String getToolChoice(); /** - * List of functions, identified by their names, to configure for function calling in - * the chat completion requests. - * Functions with those names must exist in the functionCallbacks registry. - * The {@link #functionCallbacks} from the PromptOptions are automatically enabled for the duration of the prompt execution. - * - * Note that function enabled with the default options are enabled for all chat completion requests. This could impact the token count and the billing. - * If the functions is set in a prompt options, then the enabled functions are only active for the duration of this prompt execution. + * A unique identifier representing your end-user, which can help OpenAI to monitor + * and detect abuse. */ - @NestedConfigurationProperty - @JsonIgnore - private Set functions = new HashSet<>(); - // @formatter:on - - public static Builder builder() { - return new Builder(); - } - - public static class Builder { - - protected OpenAiChatOptions options; - - public Builder() { - this.options = new OpenAiChatOptions(); - } - - public Builder(OpenAiChatOptions options) { - this.options = options; - } - - public Builder withModel(String model) { - this.options.model = model; - return this; - } - - public Builder withFrequencyPenalty(Float frequencyPenalty) { - this.options.frequencyPenalty = frequencyPenalty; - return this; - } - - public Builder withLogitBias(Map logitBias) { - this.options.logitBias = logitBias; - return this; - } - - public Builder withMaxTokens(Integer maxTokens) { - this.options.maxTokens = maxTokens; - return this; - } - - public Builder withN(Integer n) { - this.options.n = n; - return this; - } - - public Builder withPresencePenalty(Float presencePenalty) { - this.options.presencePenalty = presencePenalty; - return this; - } - - public Builder withResponseFormat(ResponseFormat responseFormat) { - this.options.responseFormat = responseFormat; - return this; - } - - public Builder withSeed(Integer seed) { - this.options.seed = seed; - return this; - } - - public Builder withStop(List stop) { - this.options.stop = stop; - return this; - } - - public Builder withTemperature(Float temperature) { - this.options.temperature = temperature; - return this; - } - - public Builder withTopP(Float topP) { - this.options.topP = topP; - return this; - } - - public Builder withTools(List tools) { - this.options.tools = tools; - return this; - } - - public Builder withToolChoice(String toolChoice) { - this.options.toolChoice = toolChoice; - return this; - } - - public Builder withUser(String user) { - this.options.user = user; - return this; - } - - public Builder withFunctionCallbacks(List functionCallbacks) { - this.options.functionCallbacks = functionCallbacks; - return this; - } - - public Builder withFunctions(Set functionNames) { - Assert.notNull(functionNames, "Function names must not be null"); - this.options.functions = functionNames; - return this; - } - - public Builder withFunction(String functionName) { - Assert.hasText(functionName, "Function name must not be empty"); - this.options.functions.add(functionName); - return this; - } - - public OpenAiChatOptions build() { - return this.options; - } - - } - - public String getModel() { - return this.model; - } - - public void setModel(String model) { - this.model = model; - } - - public Float getFrequencyPenalty() { - return this.frequencyPenalty; - } - - public void setFrequencyPenalty(Float frequencyPenalty) { - this.frequencyPenalty = frequencyPenalty; - } - - public Map getLogitBias() { - return this.logitBias; - } - - public void setLogitBias(Map logitBias) { - this.logitBias = logitBias; - } - - public Integer getMaxTokens() { - return this.maxTokens; - } - - public void setMaxTokens(Integer maxTokens) { - this.maxTokens = maxTokens; - } - - public Integer getN() { - return this.n; - } - - public void setN(Integer n) { - this.n = n; - } - - public Float getPresencePenalty() { - return this.presencePenalty; - } - - public void setPresencePenalty(Float presencePenalty) { - this.presencePenalty = presencePenalty; - } - - public ResponseFormat getResponseFormat() { - return this.responseFormat; - } - - public void setResponseFormat(ResponseFormat responseFormat) { - this.responseFormat = responseFormat; - } - - public Integer getSeed() { - return this.seed; - } - - public void setSeed(Integer seed) { - this.seed = seed; - } - - public List getStop() { - return this.stop; - } - - public void setStop(List stop) { - this.stop = stop; - } - - @Override - public Float getTemperature() { - return this.temperature; - } - - public void setTemperature(Float temperature) { - this.temperature = temperature; - } - - @Override - public Float getTopP() { - return this.topP; - } - - public void setTopP(Float topP) { - this.topP = topP; - } - - public List getTools() { - return this.tools; - } - - public void setTools(List tools) { - this.tools = tools; - } - - public String getToolChoice() { - return this.toolChoice; - } - - public void setToolChoice(String toolChoice) { - this.toolChoice = toolChoice; - } - - public String getUser() { - return this.user; - } - - public void setUser(String user) { - this.user = user; - } - - @Override - public List getFunctionCallbacks() { - return this.functionCallbacks; - } - - @Override - public Set getFunctions() { - return functions; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((model == null) ? 0 : model.hashCode()); - result = prime * result + ((frequencyPenalty == null) ? 0 : frequencyPenalty.hashCode()); - result = prime * result + ((logitBias == null) ? 0 : logitBias.hashCode()); - result = prime * result + ((maxTokens == null) ? 0 : maxTokens.hashCode()); - result = prime * result + ((n == null) ? 0 : n.hashCode()); - result = prime * result + ((presencePenalty == null) ? 0 : presencePenalty.hashCode()); - result = prime * result + ((responseFormat == null) ? 0 : responseFormat.hashCode()); - result = prime * result + ((seed == null) ? 0 : seed.hashCode()); - result = prime * result + ((stop == null) ? 0 : stop.hashCode()); - result = prime * result + ((temperature == null) ? 0 : temperature.hashCode()); - result = prime * result + ((topP == null) ? 0 : topP.hashCode()); - result = prime * result + ((tools == null) ? 0 : tools.hashCode()); - result = prime * result + ((toolChoice == null) ? 0 : toolChoice.hashCode()); - result = prime * result + ((user == null) ? 0 : user.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - OpenAiChatOptions other = (OpenAiChatOptions) obj; - if (this.model == null) { - if (other.model != null) - return false; - } - else if (!model.equals(other.model)) - return false; - if (this.frequencyPenalty == null) { - if (other.frequencyPenalty != null) - return false; - } - else if (!this.frequencyPenalty.equals(other.frequencyPenalty)) - return false; - if (this.logitBias == null) { - if (other.logitBias != null) - return false; - } - else if (!this.logitBias.equals(other.logitBias)) - return false; - if (this.maxTokens == null) { - if (other.maxTokens != null) - return false; - } - else if (!this.maxTokens.equals(other.maxTokens)) - return false; - if (this.n == null) { - if (other.n != null) - return false; - } - else if (!this.n.equals(other.n)) - return false; - if (this.presencePenalty == null) { - if (other.presencePenalty != null) - return false; - } - else if (!this.presencePenalty.equals(other.presencePenalty)) - return false; - if (this.responseFormat == null) { - if (other.responseFormat != null) - return false; - } - else if (!this.responseFormat.equals(other.responseFormat)) - return false; - if (this.seed == null) { - if (other.seed != null) - return false; - } - else if (!this.seed.equals(other.seed)) - return false; - if (this.stop == null) { - if (other.stop != null) - return false; - } - else if (!stop.equals(other.stop)) - return false; - if (this.temperature == null) { - if (other.temperature != null) - return false; - } - else if (!this.temperature.equals(other.temperature)) - return false; - if (this.topP == null) { - if (other.topP != null) - return false; - } - else if (!topP.equals(other.topP)) - return false; - if (this.tools == null) { - if (other.tools != null) - return false; - } - else if (!tools.equals(other.tools)) - return false; - if (this.toolChoice == null) { - if (other.toolChoice != null) - return false; - } - else if (!toolChoice.equals(other.toolChoice)) - return false; - if (this.user == null) { - if (other.user != null) - return false; - } - else if (!this.user.equals(other.user)) - return false; - return true; - } - - @Override - @JsonIgnore - public Integer getTopK() { - throw new UnsupportedOperationException("Unimplemented method 'getTopK'"); - } - - @JsonIgnore - public void setTopK(Integer topK) { - throw new UnsupportedOperationException("Unimplemented method 'setTopK'"); - } + @JsonProperty("user") + String getUser(); } diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptionsBuilder.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptionsBuilder.java new file mode 100644 index 00000000000..e01f1a07e11 --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptionsBuilder.java @@ -0,0 +1,488 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.openai; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.springframework.ai.chat.prompt.ChatOptions; +import org.springframework.ai.chat.prompt.ChatOptionsBuilder; +import org.springframework.ai.model.function.FunctionCallback; +import org.springframework.ai.model.function.FunctionCallingOptions; +import org.springframework.ai.model.function.FunctionCallingOptionsBuilder; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest.ResponseFormat; +import org.springframework.ai.openai.api.OpenAiApi.FunctionTool; + +public class OpenAiChatOptionsBuilder { + + private final FunctionCallingOptionsBuilder functionCallingOptionsBuilder = FunctionCallingOptionsBuilder.builder(); + + private final ChatOptionsBuilder chatOptionsBuilder = ChatOptionsBuilder.builder(); + + private String model; + + private Float frequencyPenalty; + + private ResponseFormat responseFormat; + + private Integer maxTokens; + + private Integer n; + + private Float presencePenalty; + + private Integer seed; + + private String toolChoice; + + private String user; + + private final List stop = new ArrayList<>(); + + private final List tools = new ArrayList<>(); + + private final Map logitBias = new HashMap<>(); + + private OpenAiChatOptionsBuilder() { + } + + public static OpenAiChatOptionsBuilder builder() { + return new OpenAiChatOptionsBuilder(); + } + + /** + * Copy Constructor for {@link OpenAiChatOptionsBuilder} + * @param options Existing {@link OpenAiChatOptions} + * @return new OpenAiChatOptionsBuilder + */ + public static OpenAiChatOptionsBuilder builder(final OpenAiChatOptions options) { + return builder().withFunctionCallingOptions(options) + .withChatOptions(options) + .withFrequencyPenalty(options.getFrequencyPenalty()) + .withPresencePenalty(options.getPresencePenalty()) + .withMaxTokens(options.getMaxTokens()) + .withLogitBias(options.getLogitBias()) + .withUser(options.getUser()) + .withModel(options.getModel()) + .withToolChoice(options.getToolChoice()) + .withTools(options.getTools()) + .withN(options.getN()) + .withSeed(options.getSeed()) + .withStop(options.getStop()) + .withResponseFormat(options.getResponseFormat()); + } + + public OpenAiChatOptions build() { + return new OpenAiChatOptionsImpl(this); + } + + public OpenAiChatOptionsBuilder withFunctionCallingOptions(final FunctionCallingOptions options) { + if (options == null) + return this; + withFunctionCallbacks(options.getFunctionCallbacks()); + withFunctions(options.getFunctions()); + return this; + } + + public OpenAiChatOptionsBuilder withChatOptions(final ChatOptions options) { + if (options == null) + return this; + withTopP(options.getTopP()); + withTemperature(options.getTemperature()); + return this; + } + + public OpenAiChatOptionsBuilder withModel(final String model) { + if (model == null) + return this; + this.model = model; + return this; + } + + public OpenAiChatOptionsBuilder withFrequencyPenalty(final Float frequencyPenalty) { + if (frequencyPenalty == null) + return this; + this.frequencyPenalty = frequencyPenalty; + return this; + } + + public OpenAiChatOptionsBuilder withLogitBias(final Map logitBias) { + if (logitBias == null) + return this; + this.logitBias.putAll(logitBias); + return this; + } + + public OpenAiChatOptionsBuilder withMaxTokens(final Integer maxTokens) { + if (maxTokens == null) + return this; + this.maxTokens = maxTokens; + return this; + } + + public OpenAiChatOptionsBuilder withN(final Integer n) { + if (n == null) + return this; + this.n = n; + return this; + } + + public OpenAiChatOptionsBuilder withPresencePenalty(final Float presencePenalty) { + if (presencePenalty == null) + return this; + this.presencePenalty = presencePenalty; + return this; + } + + public OpenAiChatOptionsBuilder withResponseFormat(final ResponseFormat responseFormat) { + if (responseFormat == null) + return this; + this.responseFormat = responseFormat; + return this; + } + + public OpenAiChatOptionsBuilder withSeed(final Integer seed) { + if (seed == null) + return this; + this.seed = seed; + return this; + } + + public OpenAiChatOptionsBuilder withStop(final List stop) { + if (stop == null) + return this; + this.stop.addAll(stop); + return this; + } + + public OpenAiChatOptionsBuilder withTemperature(final Float temperature) { + if (temperature == null) + return this; + this.chatOptionsBuilder.withTemperature(temperature); + return this; + } + + public OpenAiChatOptionsBuilder withTopP(final Float topP) { + if (topP == null) + return this; + this.chatOptionsBuilder.withTopP(topP); + return this; + } + + public OpenAiChatOptionsBuilder withTools(final List tools) { + if (tools == null) + return this; + this.tools.addAll(tools); + return this; + } + + public OpenAiChatOptionsBuilder withToolChoice(final String toolChoice) { + if (toolChoice == null) + return this; + this.toolChoice = toolChoice; + return this; + } + + public OpenAiChatOptionsBuilder withUser(final String user) { + if (user == null) + return this; + this.user = user; + return this; + } + + public OpenAiChatOptionsBuilder withFunctionCallbacks(final List functionCallbacks) { + if (functionCallbacks == null) + return this; + this.functionCallingOptionsBuilder.withFunctionCallbacks(functionCallbacks); + return this; + } + + public OpenAiChatOptionsBuilder withFunctionCallback(final FunctionCallback functionCallback) { + if (functionCallback == null) + return this; + this.functionCallingOptionsBuilder.withFunctionCallback(functionCallback); + return this; + } + + public OpenAiChatOptionsBuilder withFunctions(final Set functionNames) { + if (functionNames == null) + return this; + this.functionCallingOptionsBuilder.withFunctions(functionNames); + return this; + } + + public OpenAiChatOptionsBuilder withFunction(final String functionName) { + if (functionName != null) + this.functionCallingOptionsBuilder.withFunction(functionName); + return this; + } + + private static class OpenAiChatOptionsImpl implements OpenAiChatOptions { + + private final ChatOptions chatOptions; + + private final FunctionCallingOptions functionCallingOptions; + + private final String model; + + private final Float frequencyPenalty; + + private final ResponseFormat responseFormat; + + private final Map logitBias; + + private final Integer maxTokens; + + private final Integer n; + + private final Float presencePenalty; + + private final Integer seed; + + private final String toolChoice; + + private final String user; + + private final List stop; + + private final List tools; + + private OpenAiChatOptionsImpl(final OpenAiChatOptionsBuilder builder) { + this.chatOptions = builder.chatOptionsBuilder.build(); + this.functionCallingOptions = builder.functionCallingOptionsBuilder.build(); + this.frequencyPenalty = builder.frequencyPenalty; + this.presencePenalty = builder.presencePenalty; + this.logitBias = builder.logitBias; + this.maxTokens = builder.maxTokens; + this.model = builder.model; + this.responseFormat = builder.responseFormat; + this.stop = builder.stop; + this.tools = builder.tools; + this.user = builder.user; + this.n = builder.n; + this.toolChoice = builder.toolChoice; + this.seed = builder.seed; + } + + @Override + public String getModel() { + return this.model; + } + + @Override + public Float getFrequencyPenalty() { + return this.frequencyPenalty; + } + + @Override + public Map getLogitBias() { + return this.logitBias; + } + + @Override + public Integer getMaxTokens() { + return this.maxTokens; + } + + @Override + public Integer getN() { + return this.n; + } + + @Override + public Float getPresencePenalty() { + return this.presencePenalty; + } + + @Override + public ResponseFormat getResponseFormat() { + return this.responseFormat; + } + + @Override + public Integer getSeed() { + return this.seed; + } + + @Override + public List getStop() { + return this.stop; + } + + @Override + public List getTools() { + return this.tools; + } + + @Override + public String getToolChoice() { + return this.toolChoice; + } + + @Override + public String getUser() { + return this.user; + } + + /** + * What sampling temperature to use, between 0 and 1. Higher values like 0.8 will + * make the output more random, while lower values like 0.2 will make it more + * focused and deterministic. We generally recommend altering this or top_p but + * not both. + */ + @Override + @JsonProperty("temperature") + public Float getTemperature() { + return this.chatOptions.getTemperature(); + } + + /** + * An alternative to sampling with temperature, called nucleus sampling, where the + * model considers the results of the tokens with top_p probability mass. So 0.1 + * means only the tokens comprising the top 10% probability mass are considered. + * We generally recommend altering this or temperature but not both. + */ + @Override + @JsonProperty("top_p") + public Float getTopP() { + return this.chatOptions.getTopP(); + } + + @Override + @JsonIgnore + public Integer getTopK() { + throw new UnsupportedOperationException("Unimplemented method 'getTopK'"); + } + + @Override + public List getFunctionCallbacks() { + return this.functionCallingOptions.getFunctionCallbacks(); + } + + @Override + public Set getFunctions() { + return this.functionCallingOptions.getFunctions(); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((model == null) ? 0 : model.hashCode()); + result = prime * result + ((frequencyPenalty == null) ? 0 : frequencyPenalty.hashCode()); + result = prime * result + ((logitBias == null) ? 0 : logitBias.hashCode()); + result = prime * result + ((maxTokens == null) ? 0 : maxTokens.hashCode()); + result = prime * result + ((n == null) ? 0 : n.hashCode()); + result = prime * result + ((presencePenalty == null) ? 0 : presencePenalty.hashCode()); + result = prime * result + ((responseFormat == null) ? 0 : responseFormat.hashCode()); + result = prime * result + ((seed == null) ? 0 : seed.hashCode()); + result = prime * result + ((stop == null) ? 0 : stop.hashCode()); + result = prime * result + ((tools == null) ? 0 : tools.hashCode()); + result = prime * result + ((toolChoice == null) ? 0 : toolChoice.hashCode()); + result = prime * result + ((user == null) ? 0 : user.hashCode()); + result = prime * result + ((functionCallingOptions == null) ? 0 : functionCallingOptions.hashCode()); + result = prime * result + ((chatOptions == null) ? 0 : chatOptions.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + OpenAiChatOptionsImpl other = (OpenAiChatOptionsImpl) obj; + if (this.model == null) { + if (other.model != null) + return false; + } + else if (!model.equals(other.model)) + return false; + if (this.frequencyPenalty == null) { + if (other.frequencyPenalty != null) + return false; + } + else if (!this.frequencyPenalty.equals(other.frequencyPenalty)) + return false; + if (this.logitBias == null) { + if (other.logitBias != null) + return false; + } + else if (!this.logitBias.equals(other.logitBias)) + return false; + if (this.maxTokens == null) { + if (other.maxTokens != null) + return false; + } + else if (!this.maxTokens.equals(other.maxTokens)) + return false; + if (this.n == null) { + if (other.n != null) + return false; + } + else if (!this.n.equals(other.n)) + return false; + if (this.presencePenalty == null) { + if (other.presencePenalty != null) + return false; + } + else if (!this.presencePenalty.equals(other.presencePenalty)) + return false; + if (this.responseFormat == null) { + if (other.responseFormat != null) + return false; + } + else if (!this.responseFormat.equals(other.responseFormat)) + return false; + if (this.seed == null) { + if (other.seed != null) + return false; + } + else if (!this.seed.equals(other.seed)) + return false; + if (this.stop == null) { + if (other.stop != null) + return false; + } + else if (!stop.equals(other.stop)) + return false; + if ((this.chatOptions == null) != (other.chatOptions == null)) + return false; + else if (!this.chatOptions.equals(other.chatOptions)) + return false; + if ((this.tools == null) != (other.tools == null)) + return false; + else if (!tools.equals(other.tools)) + return false; + if ((this.toolChoice == null) != (other.toolChoice == null)) + return false; + else if (!toolChoice.equals(other.toolChoice)) + return false; + if ((this.user == null) != (other.user == null)) + return false; + else + return this.user.equals(other.user); + } + + } + +} diff --git a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java index 856acb13f10..0108b77ddd9 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/model/function/FunctionCallingOptions.java @@ -15,6 +15,7 @@ */ package org.springframework.ai.model.function; +import com.fasterxml.jackson.annotation.JsonIgnore; import java.util.List; import java.util.Set; @@ -31,12 +32,14 @@ public interface FunctionCallingOptions { * ChatClient registry to be used in the chat completion requests. * @return Return the Function Callbacks to be registered with the ChatClient. */ + @JsonIgnore List getFunctionCallbacks(); /** * @return List of function names from the ChatClient registry to be used in the next * chat completion requests. */ + @JsonIgnore Set getFunctions(); } \ No newline at end of file From 285002e15e9e3aa03e47358c6ff127830d36ea2a Mon Sep 17 00:00:00 2001 From: youngpar Date: Sun, 17 Mar 2024 04:51:05 +0900 Subject: [PATCH 32/39] refactor OpenAiChatOptionsProperties.java Seperated Option Object, Property Object --- .../openai/OpenAiChatOptionsProperties.java | 216 ++++++++++++++++++ .../openai/OpenAiChatProperties.java | 14 +- 2 files changed, 219 insertions(+), 11 deletions(-) create mode 100644 spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiChatOptionsProperties.java diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiChatOptionsProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiChatOptionsProperties.java new file mode 100644 index 00000000000..e1a50eb3d08 --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiChatOptionsProperties.java @@ -0,0 +1,216 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.autoconfigure.openai; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.springframework.ai.model.function.FunctionCallback; +import org.springframework.ai.openai.OpenAiChatOptions; +import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest.ResponseFormat; +import org.springframework.ai.openai.api.OpenAiApi.FunctionTool; +import org.springframework.boot.context.properties.NestedConfigurationProperty; + +public class OpenAiChatOptionsProperties implements OpenAiChatOptions { + + public static final String DEFAULT_CHAT_MODEL = "gpt-3.5-turbo"; + + private static final Double DEFAULT_TEMPERATURE = 0.7; + + private String model = DEFAULT_CHAT_MODEL; + + private Float temperature = DEFAULT_TEMPERATURE.floatValue(); + + private Float frequencyPenalty; + + private ResponseFormat responseFormat; + + private Map logitBias; + + private Integer maxTokens; + + private Integer n; + + private Float presencePenalty; + + private Integer seed; + + private String toolChoice; + + private String user; + + private Float topP; + + @NestedConfigurationProperty + private List tools; + + @NestedConfigurationProperty + private List stop; + + @NestedConfigurationProperty + private List functionCallbacks = new ArrayList<>(); + + @NestedConfigurationProperty + private Set functions = new HashSet<>(); + + @Override + public String getModel() { + return this.model; + } + + public void setModel(String model) { + this.model = model; + } + + @Override + public Float getFrequencyPenalty() { + return this.frequencyPenalty; + } + + public void setFrequencyPenalty(Float frequencyPenalty) { + this.frequencyPenalty = frequencyPenalty; + } + + @Override + public Map getLogitBias() { + return this.logitBias; + } + + public void setLogitBias(Map logitBias) { + this.logitBias = logitBias; + } + + @Override + public Integer getMaxTokens() { + return this.maxTokens; + } + + public void setMaxTokens(Integer maxTokens) { + this.maxTokens = maxTokens; + } + + @Override + public Integer getN() { + return this.n; + } + + public void setN(Integer n) { + this.n = n; + } + + @Override + public Float getPresencePenalty() { + return this.presencePenalty; + } + + public void setPresencePenalty(Float presencePenalty) { + this.presencePenalty = presencePenalty; + } + + @Override + public ResponseFormat getResponseFormat() { + return this.responseFormat; + } + + public void setResponseFormat(ResponseFormat responseFormat) { + this.responseFormat = responseFormat; + } + + @Override + public Integer getSeed() { + return this.seed; + } + + public void setSeed(Integer seed) { + this.seed = seed; + } + + @Override + public List getStop() { + return this.stop; + } + + public void setStop(List stop) { + this.stop = stop; + } + + @Override + public List getTools() { + return this.tools; + } + + public void setTools(List tools) { + this.tools = tools; + } + + @Override + public String getToolChoice() { + return this.toolChoice; + } + + public void setToolChoice(String toolChoice) { + this.toolChoice = toolChoice; + } + + @Override + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } + + @Override + public Float getTemperature() { + return this.temperature; + } + + public void setTemperature(Float temperature) { + this.temperature = temperature; + } + + @Override + public Float getTopP() { + return this.topP; + } + + public void setTopP(Float topP) { + this.topP = topP; + } + + @Override + public List getFunctionCallbacks() { + return this.functionCallbacks; + } + + @Override + public Set getFunctions() { + return this.functions; + } + + public void setFunctions(Set functions) { + this.functions = functions; + } + + @Override + public Integer getTopK() { + return null; + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiChatProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiChatProperties.java index 5e9940b4238..2407900b461 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiChatProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiChatProperties.java @@ -15,7 +15,6 @@ */ package org.springframework.ai.autoconfigure.openai; -import org.springframework.ai.openai.OpenAiChatOptions; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.NestedConfigurationProperty; @@ -24,26 +23,19 @@ public class OpenAiChatProperties extends OpenAiParentProperties { public static final String CONFIG_PREFIX = "spring.ai.openai.chat"; - public static final String DEFAULT_CHAT_MODEL = "gpt-3.5-turbo"; - - private static final Double DEFAULT_TEMPERATURE = 0.7; - /** * Enable OpenAI chat client. */ private boolean enabled = true; @NestedConfigurationProperty - private OpenAiChatOptions options = OpenAiChatOptions.builder() - .withModel(DEFAULT_CHAT_MODEL) - .withTemperature(DEFAULT_TEMPERATURE.floatValue()) - .build(); + private OpenAiChatOptionsProperties options = new OpenAiChatOptionsProperties(); - public OpenAiChatOptions getOptions() { + public OpenAiChatOptionsProperties getOptions() { return options; } - public void setOptions(OpenAiChatOptions options) { + public void setOptions(OpenAiChatOptionsProperties options) { this.options = options; } From 77e683c39fa1817ba8196fb2a33f5a575e1f3def Mon Sep 17 00:00:00 2001 From: youngpar Date: Sun, 17 Mar 2024 05:03:37 +0900 Subject: [PATCH 33/39] fix side-effect Apply Changes --- .../ai/openai/OpenAiChatClient.java | 35 ++++++++++--------- .../ai/openai/ChatCompletionRequestTests.java | 18 +++++----- .../ai/openai/chat/OpenAiChatClient2IT.java | 4 +-- .../ai/openai/chat/OpenAiChatClientIT.java | 6 ++-- .../ai/openai/chat/OpenAiRetryTests.java | 4 +-- .../tool/PaymentStatusBeanOpenAiIT.java | 4 +-- .../tool/FunctionCallbackInPromptIT.java | 6 ++-- ...nctionCallbackWithPlainFunctionBeanIT.java | 10 +++--- .../tool/FunctionCallbackWrapperIT.java | 10 +++--- 9 files changed, 51 insertions(+), 46 deletions(-) diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java index 79c4b6498cc..d6dea327417 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatClient.java @@ -97,7 +97,10 @@ public class OpenAiChatClient extends */ public OpenAiChatClient(OpenAiApi openAiApi) { this(openAiApi, - OpenAiChatOptions.builder().withModel(OpenAiApi.DEFAULT_CHAT_MODEL).withTemperature(0.7f).build()); + OpenAiChatOptionsBuilder.builder() + .withModel(OpenAiApi.DEFAULT_CHAT_MODEL) + .withTemperature(0.7f) + .build()); } /** @@ -249,20 +252,20 @@ ChatCompletionRequest createRequest(Prompt prompt, boolean stream) { ChatCompletionRequest request = new ChatCompletionRequest(chatCompletionMessages, stream); if (prompt.getOptions() != null) { - if (prompt.getOptions() instanceof ChatOptions runtimeOptions) { - OpenAiChatOptions updatedRuntimeOptions = ModelOptionsUtils.copyToTarget(runtimeOptions, - ChatOptions.class, OpenAiChatOptions.class); - - Set promptEnabledFunctions = this.handleFunctionCallbackConfigurations(updatedRuntimeOptions, - IS_RUNTIME_CALL); - functionsForThisRequest.addAll(promptEnabledFunctions); - - request = ModelOptionsUtils.merge(updatedRuntimeOptions, request, ChatCompletionRequest.class); - } - else { + OpenAiChatOptionsBuilder builder; + if (prompt.getOptions() instanceof OpenAiChatOptions runtimeOptions) + builder = OpenAiChatOptionsBuilder.builder(runtimeOptions); + else if (prompt.getOptions() instanceof ChatOptions runtimeOptions) + builder = OpenAiChatOptionsBuilder.builder().withChatOptions(runtimeOptions); + else throw new IllegalArgumentException("Prompt options are not of type ChatOptions: " + prompt.getOptions().getClass().getSimpleName()); - } + + Set promptEnabledFunctions = this.handleFunctionCallbackConfigurations(builder.build(), + IS_RUNTIME_CALL); + functionsForThisRequest.addAll(promptEnabledFunctions); + builder.withFunctions(promptEnabledFunctions); + request = ModelOptionsUtils.merge(builder.build(), request, ChatCompletionRequest.class); } if (this.defaultOptions != null) { @@ -278,9 +281,9 @@ ChatCompletionRequest createRequest(Prompt prompt, boolean stream) { // Add the enabled functions definitions to the request's tools parameter. if (!CollectionUtils.isEmpty(functionsForThisRequest)) { - request = ModelOptionsUtils.merge( - OpenAiChatOptions.builder().withTools(this.getFunctionTools(functionsForThisRequest)).build(), - request, ChatCompletionRequest.class); + request = ModelOptionsUtils.merge(OpenAiChatOptionsBuilder.builder() + .withTools(this.getFunctionTools(functionsForThisRequest)) + .build(), request, ChatCompletionRequest.class); } return request; 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 300cdfafbb8..f58891598cc 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 @@ -35,7 +35,7 @@ public class ChatCompletionRequestTests { public void createRequestWithChatOptions() { var client = new OpenAiChatClient(new OpenAiApi("TEST"), - OpenAiChatOptions.builder().withModel("DEFAULT_MODEL").withTemperature(66.6f).build()); + OpenAiChatOptionsBuilder.builder().withModel("DEFAULT_MODEL").withTemperature(66.6f).build()); var request = client.createRequest(new Prompt("Test message content"), false); @@ -45,8 +45,10 @@ public void createRequestWithChatOptions() { assertThat(request.model()).isEqualTo("DEFAULT_MODEL"); assertThat(request.temperature()).isEqualTo(66.6f); - request = client.createRequest(new Prompt("Test message content", - OpenAiChatOptions.builder().withModel("PROMPT_MODEL").withTemperature(99.9f).build()), true); + request = client.createRequest( + new Prompt("Test message content", + OpenAiChatOptionsBuilder.builder().withModel("PROMPT_MODEL").withTemperature(99.9f).build()), + true); assertThat(request.messages()).hasSize(1); assertThat(request.stream()).isTrue(); @@ -61,10 +63,10 @@ public void promptOptionsTools() { final String TOOL_FUNCTION_NAME = "CurrentWeather"; var client = new OpenAiChatClient(new OpenAiApi("TEST"), - OpenAiChatOptions.builder().withModel("DEFAULT_MODEL").build()); + OpenAiChatOptionsBuilder.builder().withModel("DEFAULT_MODEL").build()); var request = client.createRequest(new Prompt("Test message content", - OpenAiChatOptions.builder() + OpenAiChatOptionsBuilder.builder() .withModel("PROMPT_MODEL") .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) .withName(TOOL_FUNCTION_NAME) @@ -91,7 +93,7 @@ public void defaultOptionsTools() { final String TOOL_FUNCTION_NAME = "CurrentWeather"; var client = new OpenAiChatClient(new OpenAiApi("TEST"), - OpenAiChatOptions.builder() + OpenAiChatOptionsBuilder.builder() .withModel("DEFAULT_MODEL") .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) .withName(TOOL_FUNCTION_NAME) @@ -116,7 +118,7 @@ public void defaultOptionsTools() { // Explicitly enable the function request = client.createRequest(new Prompt("Test message content", - OpenAiChatOptions.builder().withFunction(TOOL_FUNCTION_NAME).build()), false); + OpenAiChatOptionsBuilder.builder().withFunction(TOOL_FUNCTION_NAME).build()), false); assertThat(request.tools()).hasSize(1); assertThat(request.tools().get(0).function().name()).as("Explicitly enabled function") @@ -124,7 +126,7 @@ public void defaultOptionsTools() { // Override the default options function with one from the prompt request = client.createRequest(new Prompt("Test message content", - OpenAiChatOptions.builder() + OpenAiChatOptionsBuilder.builder() .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) .withName(TOOL_FUNCTION_NAME) .withDescription("Overridden function description") diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClient2IT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClient2IT.java index fc5904be1db..80624cbe8fd 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClient2IT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClient2IT.java @@ -28,7 +28,7 @@ import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.openai.OpenAiChatClient; -import org.springframework.ai.openai.OpenAiChatOptions; +import org.springframework.ai.openai.OpenAiChatOptionsBuilder; import org.springframework.ai.openai.api.OpenAiApi; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest; import org.springframework.beans.factory.annotation.Autowired; @@ -63,7 +63,7 @@ void responseFormatTest() throws JsonMappingException, JsonProcessingException { // param=messages, code=null]] Prompt prompt = new Prompt("List 8 planets. Use JSON response", - OpenAiChatOptions.builder() + OpenAiChatOptionsBuilder.builder() .withResponseFormat(new ChatCompletionRequest.ResponseFormat("json_object")) .build()); diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java index b23af540b34..54d34eac922 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatClientIT.java @@ -25,6 +25,7 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.ai.openai.OpenAiChatOptionsBuilder; import reactor.core.publisher.Flux; import org.springframework.ai.chat.ChatResponse; @@ -36,7 +37,6 @@ import org.springframework.ai.chat.prompt.PromptTemplate; import org.springframework.ai.chat.prompt.SystemPromptTemplate; import org.springframework.ai.model.function.FunctionCallbackWrapper; -import org.springframework.ai.openai.OpenAiChatOptions; import org.springframework.ai.openai.OpenAiTestConfiguration; import org.springframework.ai.openai.api.OpenAiApi; import org.springframework.ai.openai.api.tool.MockWeatherService; @@ -188,7 +188,7 @@ void functionCallTest() { List messages = new ArrayList<>(List.of(userMessage)); - var promptOptions = OpenAiChatOptions.builder() + var promptOptions = OpenAiChatOptionsBuilder.builder() .withModel(OpenAiApi.ChatModel.GPT_4_TURBO_PREVIEW.getValue()) .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) .withName("getCurrentWeather") @@ -213,7 +213,7 @@ void streamFunctionCallTest() { List messages = new ArrayList<>(List.of(userMessage)); - var promptOptions = OpenAiChatOptions.builder() + var promptOptions = OpenAiChatOptionsBuilder.builder() // .withModel(OpenAiApi.ChatModel.GPT_4_TURBO_PREVIEW.getValue()) .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) .withName("getCurrentWeather") 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 e2376b940e2..f40b24edcdf 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 @@ -23,6 +23,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.ai.openai.OpenAiChatOptionsBuilder; import org.springframework.ai.openai.OpenAiImageOptionsBuilder; import reactor.core.publisher.Flux; @@ -33,7 +34,6 @@ import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; import org.springframework.ai.openai.OpenAiAudioTranscriptionOptions; import org.springframework.ai.openai.OpenAiChatClient; -import org.springframework.ai.openai.OpenAiChatOptions; import org.springframework.ai.openai.OpenAiEmbeddingClient; import org.springframework.ai.openai.OpenAiEmbeddingOptions; import org.springframework.ai.openai.OpenAiImageClient; @@ -121,7 +121,7 @@ public void beforeEach() { retryListener = new TestRetryListener(); retryTemplate.registerListener(retryListener); - chatClient = new OpenAiChatClient(openAiApi, OpenAiChatOptions.builder().build(), null, retryTemplate); + chatClient = new OpenAiChatClient(openAiApi, OpenAiChatOptionsBuilder.builder().build(), null, retryTemplate); embeddingClient = new OpenAiEmbeddingClient(openAiApi, MetadataMode.EMBED, OpenAiEmbeddingOptions.builder().build(), retryTemplate); audioTranscriptionClient = new OpenAiAudioTranscriptionClient(openAiAudioApi, diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java index 15796f921b2..854f287932a 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/mistralai/tool/PaymentStatusBeanOpenAiIT.java @@ -32,7 +32,7 @@ import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.mistralai.api.MistralAiApi; import org.springframework.ai.openai.OpenAiChatClient; -import org.springframework.ai.openai.OpenAiChatOptions; +import org.springframework.ai.openai.OpenAiChatOptionsBuilder; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; @@ -71,7 +71,7 @@ void functionCallTest() { ChatResponse response = chatClient .call(new Prompt(List.of(new UserMessage("What's the status of my transaction with id T1001?")), - OpenAiChatOptions.builder() + OpenAiChatOptionsBuilder.builder() .withFunction("retrievePaymentStatus") .withFunction("retrievePaymentDate") .build())); diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java index 67770f6af82..298dd762faf 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackInPromptIT.java @@ -22,6 +22,7 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.ai.openai.OpenAiChatOptionsBuilder; import reactor.core.publisher.Flux; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; @@ -33,7 +34,6 @@ import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.model.function.FunctionCallbackWrapper; import org.springframework.ai.openai.OpenAiChatClient; -import org.springframework.ai.openai.OpenAiChatOptions; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; @@ -58,7 +58,7 @@ void functionCallTest() { UserMessage userMessage = new UserMessage("What's the weather like in San Francisco, Tokyo, and Paris?"); - var promptOptions = OpenAiChatOptions.builder() + var promptOptions = OpenAiChatOptionsBuilder.builder() .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) .withName("CurrentWeatherService") .withDescription("Get the weather in location") @@ -83,7 +83,7 @@ void streamingFunctionCallTest() { UserMessage userMessage = new UserMessage("What's the weather like in San Francisco, Tokyo, and Paris?"); - var promptOptions = OpenAiChatOptions.builder() + var promptOptions = OpenAiChatOptionsBuilder.builder() .withFunctionCallbacks(List.of(FunctionCallbackWrapper.builder(new MockWeatherService()) .withName("CurrentWeatherService") .withDescription("Get the weather in location") 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 155ab0a4d4d..81e60e87511 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 @@ -23,6 +23,7 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.ai.openai.OpenAiChatOptionsBuilder; import reactor.core.publisher.Flux; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; @@ -35,7 +36,6 @@ import org.springframework.ai.model.function.PortableFunctionCallingOptions; import org.springframework.ai.model.function.PortableFunctionCallingOptionsBuilder; import org.springframework.ai.openai.OpenAiChatClient; -import org.springframework.ai.openai.OpenAiChatOptions; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; @@ -66,7 +66,7 @@ void functionCallTest() { UserMessage userMessage = new UserMessage("What's the weather like in San Francisco, Tokyo, and Paris?"); ChatResponse response = chatClient.call(new Prompt(List.of(userMessage), - OpenAiChatOptions.builder().withFunction("weatherFunction").build())); + OpenAiChatOptionsBuilder.builder().withFunction("weatherFunction").build())); logger.info("Response: {}", response); @@ -74,7 +74,7 @@ void functionCallTest() { // Test weatherFunctionTwo response = chatClient.call(new Prompt(List.of(userMessage), - OpenAiChatOptions.builder().withFunction("weatherFunctionTwo").build())); + OpenAiChatOptionsBuilder.builder().withFunction("weatherFunctionTwo").build())); logger.info("Response: {}", response); @@ -112,7 +112,7 @@ void streamFunctionCallTest() { UserMessage userMessage = new UserMessage("What's the weather like in San Francisco, Tokyo, and Paris?"); Flux response = chatClient.stream(new Prompt(List.of(userMessage), - OpenAiChatOptions.builder().withFunction("weatherFunction").build())); + OpenAiChatOptionsBuilder.builder().withFunction("weatherFunction").build())); String content = response.collectList() .block() @@ -130,7 +130,7 @@ void streamFunctionCallTest() { // Test weatherFunctionTwo response = chatClient.stream(new Prompt(List.of(userMessage), - OpenAiChatOptions.builder().withFunction("weatherFunctionTwo").build())); + OpenAiChatOptionsBuilder.builder().withFunction("weatherFunctionTwo").build())); content = response.collectList() .block() diff --git a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java index 44e2c3af740..06782e1a0e9 100644 --- a/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java +++ b/spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/openai/tool/FunctionCallbackWrapperIT.java @@ -22,6 +22,7 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.ai.openai.OpenAiChatOptionsBuilder; import reactor.core.publisher.Flux; import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration; @@ -34,7 +35,6 @@ import org.springframework.ai.model.function.FunctionCallbackWrapper; import org.springframework.ai.model.function.FunctionCallback; import org.springframework.ai.openai.OpenAiChatClient; -import org.springframework.ai.openai.OpenAiChatOptions; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; @@ -62,8 +62,8 @@ void functionCallTest() { UserMessage userMessage = new UserMessage("What's the weather like in San Francisco, Tokyo, and Paris?"); - ChatResponse response = chatClient.call( - new Prompt(List.of(userMessage), OpenAiChatOptions.builder().withFunction("WeatherInfo").build())); + ChatResponse response = chatClient.call(new Prompt(List.of(userMessage), + OpenAiChatOptionsBuilder.builder().withFunction("WeatherInfo").build())); logger.info("Response: {}", response); @@ -80,8 +80,8 @@ void streamFunctionCallTest() { UserMessage userMessage = new UserMessage("What's the weather like in San Francisco, Tokyo, and Paris?"); - Flux response = chatClient.stream( - new Prompt(List.of(userMessage), OpenAiChatOptions.builder().withFunction("WeatherInfo").build())); + Flux response = chatClient.stream(new Prompt(List.of(userMessage), + OpenAiChatOptionsBuilder.builder().withFunction("WeatherInfo").build())); String content = response.collectList() .block() From 26a03191f2a7ec0c70633c8adec8f2a78898de86 Mon Sep 17 00:00:00 2001 From: youngpar Date: Sun, 17 Mar 2024 15:59:16 +0900 Subject: [PATCH 34/39] refactor OpenAiAudioTranscriptionOptions.java Seperated implementation and interface --- .../OpenAiAudioTranscriptionOptions.java | 178 ++-------------- ...penAiAudioTranscriptionOptionsBuilder.java | 201 ++++++++++++++++++ 2 files changed, 220 insertions(+), 159 deletions(-) create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptionsBuilder.java 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 0307657e655..f2b36d0aefd 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 @@ -18,187 +18,47 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; - import org.springframework.ai.model.ModelOptions; import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptResponseFormat; import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptionRequest.GranularityType; /** + * @author youngmon * @author Michael Lavelle * @author Christian Tzolov * @since 0.8.1 */ @JsonInclude(Include.NON_NULL) -public class OpenAiAudioTranscriptionOptions implements ModelOptions { +public interface OpenAiAudioTranscriptionOptions extends ModelOptions { - // @formatter:off /** * ID of the model to use. */ - private @JsonProperty("model") String model; + @JsonProperty("model") + String getModel(); /** - * The format of the transcript output, in one of these options: json, text, srt, verbose_json, or vtt. + * The format of the transcript output, in one of these options: json, text, srt, + * verbose_json, or vtt. */ - private @JsonProperty("response_format") TranscriptResponseFormat responseFormat; + @JsonProperty("response_format") + TranscriptResponseFormat getResponseFormat(); - private @JsonProperty("prompt") String prompt; + @JsonProperty("prompt") + String getPrompt(); - private @JsonProperty("language") String language; + @JsonProperty("language") + String getLanguage(); /** - * What sampling temperature to use, between 0 and 1. Higher values like 0.8 will make the output - * more random, while lower values like 0.2 will make it more focused and deterministic. + * What sampling temperature to use, between 0 and 1. Higher values like 0.8 will make + * the output more random, while lower values like 0.2 will make it more focused and + * deterministic. */ - private @JsonProperty("temperature") Float temperature; - - private @JsonProperty("timestamp_granularities") GranularityType granularityType; - - public static Builder builder() { - return new Builder(); - } - - public static class Builder { - - protected OpenAiAudioTranscriptionOptions options; - - public Builder() { - this.options = new OpenAiAudioTranscriptionOptions(); - } - - public Builder(OpenAiAudioTranscriptionOptions options) { - this.options = options; - } - - public Builder withModel(String model) { - this.options.model = model; - return this; - } - - public Builder withLanguage(String language) { - this.options.language = language; - return this; - } - - public Builder withPrompt(String prompt) { - this.options.prompt = prompt; - return this; - } - - public Builder withResponseFormat(TranscriptResponseFormat responseFormat) { - this.options.responseFormat = responseFormat; - return this; - } - - public Builder withTemperature(Float temperature) { - this.options.temperature = temperature; - return this; - } - - public Builder withGranularityType(GranularityType granularityType) { - this.options.granularityType = granularityType; - return this; - } - - public OpenAiAudioTranscriptionOptions build() { - return this.options; - } - - } - - public String getModel() { - return this.model; - } - - public void setModel(String model) { - this.model = model; - } - - public String getLanguage() { - return this.language; - } - - public void setLanguage(String language) { - this.language = language; - } - - public String getPrompt() { - return this.prompt; - } - - public void setPrompt(String prompt) { - this.prompt = prompt; - } - - public Float getTemperature() { - return this.temperature; - } - - public void setTemperature(Float temperature) { - this.temperature = temperature; - } - - - public TranscriptResponseFormat getResponseFormat() { - return this.responseFormat; - } - - public void setResponseFormat(TranscriptResponseFormat responseFormat) { - this.responseFormat = responseFormat; - } - - public GranularityType getGranularityType() { - return this.granularityType; - } - - public void setGranularityType(GranularityType granularityType) { - this.granularityType = granularityType; - } + @JsonProperty("temperature") + Float getTemperature(); - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((model == null) ? 0 : model.hashCode()); - result = prime * result + ((prompt == null) ? 0 : prompt.hashCode()); - result = prime * result + ((language == null) ? 0 : language.hashCode()); - result = prime * result + ((responseFormat == null) ? 0 : responseFormat.hashCode()); - return result; - } + @JsonProperty("timestamp_granularities") + GranularityType getGranularityType(); - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - OpenAiAudioTranscriptionOptions other = (OpenAiAudioTranscriptionOptions) obj; - if (this.model == null) { - if (other.model != null) - return false; - } - else if (!model.equals(other.model)) - return false; - if (this.prompt == null) { - if (other.prompt != null) - return false; - } - else if (!this.prompt.equals(other.prompt)) - return false; - if (this.language == null) { - if (other.language != null) - return false; - } - else if (!this.language.equals(other.language)) - return false; - if (this.responseFormat == null) { - if (other.responseFormat != null) - return false; - } - 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/OpenAiAudioTranscriptionOptionsBuilder.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptionsBuilder.java new file mode 100644 index 00000000000..81c0a1e9e56 --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionOptionsBuilder.java @@ -0,0 +1,201 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.openai; + +import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptResponseFormat; +import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptionRequest.GranularityType; + +/** + * Builder for {@link OpenAiAudioTranscriptionOptions} + * + * @author youngmon + * @version 0.8.1 + */ +public class OpenAiAudioTranscriptionOptionsBuilder { + + private String model; + + private TranscriptResponseFormat responseFormat; + + private String prompt; + + private String language; + + private Float temperature; + + private GranularityType granularityType; + + private OpenAiAudioTranscriptionOptionsBuilder() { + } + + public static OpenAiAudioTranscriptionOptionsBuilder builder() { + return new OpenAiAudioTranscriptionOptionsBuilder(); + } + + /** + * Copy Constructor for {@link OpenAiAudioTranscriptionOptionsBuilder} + * @param options Existing {@link OpenAiAudioTranscriptionOptions} + * @return new OpenAiAudioTranscriptionsBuilder + */ + public static OpenAiAudioTranscriptionOptionsBuilder builder(OpenAiAudioTranscriptionOptions options) { + return builder().withModel(options.getModel()) + .withResponseFormat(options.getResponseFormat()) + .withPrompt(options.getPrompt()) + .withLanguage(options.getLanguage()) + .withTemperature(options.getTemperature()) + .withGranularityType(options.getGranularityType()); + } + + public OpenAiAudioTranscriptionOptions build() { + return new OpenAiAudioTranscriptionOptionsImpl(this); + } + + public OpenAiAudioTranscriptionOptionsBuilder withModel(final String model) { + if (model == null) + return this; + this.model = model; + return this; + } + + public OpenAiAudioTranscriptionOptionsBuilder withResponseFormat(final TranscriptResponseFormat responseFormat) { + if (responseFormat == null) + return this; + this.responseFormat = responseFormat; + return this; + } + + public OpenAiAudioTranscriptionOptionsBuilder withPrompt(final String prompt) { + if (prompt == null) + return this; + this.prompt = prompt; + return this; + } + + public OpenAiAudioTranscriptionOptionsBuilder withLanguage(final String language) { + if (language == null) + return this; + this.language = language; + return this; + } + + public OpenAiAudioTranscriptionOptionsBuilder withTemperature(final Float temperature) { + if (temperature == null) + return this; + this.temperature = temperature; + return this; + } + + public OpenAiAudioTranscriptionOptionsBuilder withGranularityType(final GranularityType granularityType) { + if (granularityType == null) + return this; + this.granularityType = granularityType; + return this; + } + + private static class OpenAiAudioTranscriptionOptionsImpl implements OpenAiAudioTranscriptionOptions { + + private final String model; + + private final TranscriptResponseFormat responseFormat; + + private final String prompt; + + private final String language; + + private final Float temperature; + + private final GranularityType granularityType; + + private OpenAiAudioTranscriptionOptionsImpl(OpenAiAudioTranscriptionOptionsBuilder builder) { + this.model = builder.model; + this.responseFormat = builder.responseFormat; + this.prompt = builder.prompt; + this.language = builder.language; + this.temperature = builder.temperature; + this.granularityType = builder.granularityType; + } + + @Override + public String getModel() { + return this.model; + } + + @Override + public TranscriptResponseFormat getResponseFormat() { + return this.responseFormat; + } + + @Override + public String getPrompt() { + return this.prompt; + } + + @Override + public String getLanguage() { + return this.language; + } + + @Override + public Float getTemperature() { + return this.temperature; + } + + @Override + public GranularityType getGranularityType() { + return this.granularityType; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((model == null) ? 0 : model.hashCode()); + result = prime * result + ((prompt == null) ? 0 : prompt.hashCode()); + result = prime * result + ((language == null) ? 0 : language.hashCode()); + result = prime * result + ((responseFormat == null) ? 0 : responseFormat.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + OpenAiAudioTranscriptionOptionsImpl other = (OpenAiAudioTranscriptionOptionsImpl) obj; + if ((this.model == null) != (other.model == null)) + return false; + else if (!model.equals(other.model)) + return false; + if ((this.prompt == null) != (other.prompt == null)) + return false; + else if (!this.prompt.equals(other.prompt)) + return false; + if ((this.language == null) != (other.language == null)) + return false; + else if (!this.language.equals(other.language)) + return false; + if ((this.responseFormat == null) != (other.responseFormat == null)) + return false; + else + return this.responseFormat.equals(other.responseFormat); + } + + } + +} From 1e5d85ea4b4aa7a20e5431919de304d12ba78395 Mon Sep 17 00:00:00 2001 From: youngpar Date: Sun, 17 Mar 2024 16:00:33 +0900 Subject: [PATCH 35/39] refactor OpenAiAudioTranscriptionProperties.java Seperated Option Object, Property Object --- ...nAiAudioTranscriptionOptionProperties.java | 102 ++++++++++++++++++ .../OpenAiAudioTranscriptionProperties.java | 18 +--- 2 files changed, 105 insertions(+), 15 deletions(-) create mode 100644 spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionOptionProperties.java diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionOptionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionOptionProperties.java new file mode 100644 index 00000000000..2ed81924ba2 --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionOptionProperties.java @@ -0,0 +1,102 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.autoconfigure.openai; + +import org.springframework.ai.openai.OpenAiAudioTranscriptionOptions; +import org.springframework.ai.openai.api.OpenAiAudioApi; +import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptResponseFormat; +import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptionRequest.GranularityType; + +/** + * @author Michael Lavelle + * @author Christian Tzolov + * @since 0.8.1 + */ +public class OpenAiAudioTranscriptionOptionProperties implements OpenAiAudioTranscriptionOptions { + + public static final String DEFAULT_TRANSCRIPTION_MODEL = OpenAiAudioApi.WhisperModel.WHISPER_1.getValue(); + + private static final Double DEFAULT_TEMPERATURE = 0.7; + + private static final OpenAiAudioApi.TranscriptResponseFormat DEFAULT_RESPONSE_FORMAT = OpenAiAudioApi.TranscriptResponseFormat.TEXT; + + private String model = DEFAULT_TRANSCRIPTION_MODEL; + + private Float temperature = DEFAULT_TEMPERATURE.floatValue(); + + private TranscriptResponseFormat responseFormat = DEFAULT_RESPONSE_FORMAT; + + private String prompt; + + private String language; + + private GranularityType granularityType; + + @Override + public String getModel() { + return this.model; + } + + public void setModel(String model) { + this.model = model; + } + + @Override + public String getLanguage() { + return this.language; + } + + public void setLanguage(String language) { + this.language = language; + } + + @Override + public String getPrompt() { + return this.prompt; + } + + public void setPrompt(String prompt) { + this.prompt = prompt; + } + + @Override + public Float getTemperature() { + return this.temperature; + } + + public void setTemperature(Float temperature) { + this.temperature = temperature; + } + + @Override + public TranscriptResponseFormat getResponseFormat() { + return this.responseFormat; + } + + public void setResponseFormat(TranscriptResponseFormat responseFormat) { + this.responseFormat = responseFormat; + } + + @Override + public GranularityType getGranularityType() { + return this.granularityType; + } + + public void setGranularityType(GranularityType granularityType) { + this.granularityType = granularityType; + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java index ab27093f80b..7ed908cad58 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiAudioTranscriptionProperties.java @@ -15,8 +15,6 @@ */ package org.springframework.ai.autoconfigure.openai; -import org.springframework.ai.openai.OpenAiAudioTranscriptionOptions; -import org.springframework.ai.openai.api.OpenAiAudioApi; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.NestedConfigurationProperty; @@ -25,24 +23,14 @@ public class OpenAiAudioTranscriptionProperties extends OpenAiParentProperties { public static final String CONFIG_PREFIX = "spring.ai.openai.audio.transcription"; - public static final String DEFAULT_TRANSCRIPTION_MODEL = OpenAiAudioApi.WhisperModel.WHISPER_1.getValue(); - - private static final Double DEFAULT_TEMPERATURE = 0.7; - - private static final OpenAiAudioApi.TranscriptResponseFormat DEFAULT_RESPONSE_FORMAT = OpenAiAudioApi.TranscriptResponseFormat.TEXT; - @NestedConfigurationProperty - private OpenAiAudioTranscriptionOptions options = OpenAiAudioTranscriptionOptions.builder() - .withModel(DEFAULT_TRANSCRIPTION_MODEL) - .withTemperature(DEFAULT_TEMPERATURE.floatValue()) - .withResponseFormat(DEFAULT_RESPONSE_FORMAT) - .build(); + private OpenAiAudioTranscriptionOptionProperties options = new OpenAiAudioTranscriptionOptionProperties(); - public OpenAiAudioTranscriptionOptions getOptions() { + public OpenAiAudioTranscriptionOptionProperties getOptions() { return options; } - public void setOptions(OpenAiAudioTranscriptionOptions options) { + public void setOptions(OpenAiAudioTranscriptionOptionProperties options) { this.options = options; } From 7e76931794d719a50196eb14f363eb0c4ba3ba0f Mon Sep 17 00:00:00 2001 From: youngpar Date: Sun, 17 Mar 2024 16:01:22 +0900 Subject: [PATCH 36/39] fix side-effect Apply Changes --- .../OpenAiAudioTranscriptionClient.java | 19 +++++++++---------- .../OpenAiTranscriptionClientIT.java | 5 +++-- .../ai/openai/chat/OpenAiRetryTests.java | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java index 98f1b8ac787..f2cb6e3affe 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiAudioTranscriptionClient.java @@ -75,7 +75,7 @@ public class OpenAiAudioTranscriptionClient */ public OpenAiAudioTranscriptionClient(OpenAiAudioApi audioApi) { this(audioApi, - OpenAiAudioTranscriptionOptions.builder() + OpenAiAudioTranscriptionOptionsBuilder.builder() .withModel(OpenAiAudioApi.WhisperModel.WHISPER_1.getValue()) .withResponseFormat(OpenAiAudioApi.TranscriptResponseFormat.JSON) .withTemperature(0.7f) @@ -207,19 +207,18 @@ private byte[] toBytes(Resource resource) { private OpenAiAudioTranscriptionOptions merge(OpenAiAudioTranscriptionOptions source, OpenAiAudioTranscriptionOptions target) { - + OpenAiAudioTranscriptionOptionsBuilder builder = OpenAiAudioTranscriptionOptionsBuilder.builder(); if (source == null) { - source = new OpenAiAudioTranscriptionOptions(); + source = OpenAiAudioTranscriptionOptionsBuilder.builder().build(); } - OpenAiAudioTranscriptionOptions merged = new OpenAiAudioTranscriptionOptions(); - merged.setLanguage(source.getLanguage() != null ? source.getLanguage() : target.getLanguage()); - merged.setModel(source.getModel() != null ? source.getModel() : target.getModel()); - merged.setPrompt(source.getPrompt() != null ? source.getPrompt() : target.getPrompt()); - merged.setResponseFormat( + builder.withLanguage(source.getLanguage() != null ? source.getLanguage() : target.getLanguage()); + builder.withModel(source.getModel() != null ? source.getModel() : target.getModel()); + builder.withPrompt(source.getPrompt() != null ? source.getPrompt() : target.getPrompt()); + builder.withResponseFormat( source.getResponseFormat() != null ? source.getResponseFormat() : target.getResponseFormat()); - merged.setTemperature(source.getTemperature() != null ? source.getTemperature() : target.getTemperature()); - return merged; + builder.withTemperature(source.getTemperature() != null ? source.getTemperature() : target.getTemperature()); + return builder.build(); } } diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java index 9c0845deead..8fb54ac6ca7 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/audio/transcription/OpenAiTranscriptionClientIT.java @@ -19,6 +19,7 @@ import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.springframework.ai.openai.OpenAiAudioTranscriptionOptions; +import org.springframework.ai.openai.OpenAiAudioTranscriptionOptionsBuilder; import org.springframework.ai.openai.OpenAiTestConfiguration; import org.springframework.ai.openai.api.OpenAiAudioApi; import org.springframework.ai.openai.api.OpenAiAudioApi.TranscriptResponseFormat; @@ -38,7 +39,7 @@ class OpenAiTranscriptionClientIT extends AbstractIT { @Test void transcriptionTest() { - OpenAiAudioTranscriptionOptions transcriptionOptions = OpenAiAudioTranscriptionOptions.builder() + OpenAiAudioTranscriptionOptions transcriptionOptions = OpenAiAudioTranscriptionOptionsBuilder.builder() .withResponseFormat(TranscriptResponseFormat.TEXT) .withTemperature(0f) .build(); @@ -52,7 +53,7 @@ void transcriptionTest() { void transcriptionTestWithOptions() { OpenAiAudioApi.TranscriptResponseFormat responseFormat = OpenAiAudioApi.TranscriptResponseFormat.VTT; - OpenAiAudioTranscriptionOptions transcriptionOptions = OpenAiAudioTranscriptionOptions.builder() + OpenAiAudioTranscriptionOptions transcriptionOptions = OpenAiAudioTranscriptionOptionsBuilder.builder() .withLanguage("en") .withPrompt("Ask not this, but ask that") .withTemperature(0f) 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 f40b24edcdf..c16ccb853e4 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 @@ -23,6 +23,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.ai.openai.OpenAiAudioTranscriptionOptionsBuilder; import org.springframework.ai.openai.OpenAiChatOptionsBuilder; import org.springframework.ai.openai.OpenAiImageOptionsBuilder; import reactor.core.publisher.Flux; @@ -32,7 +33,6 @@ import org.springframework.ai.image.ImageMessage; import org.springframework.ai.image.ImagePrompt; import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; -import org.springframework.ai.openai.OpenAiAudioTranscriptionOptions; import org.springframework.ai.openai.OpenAiChatClient; import org.springframework.ai.openai.OpenAiEmbeddingClient; import org.springframework.ai.openai.OpenAiEmbeddingOptions; @@ -125,7 +125,7 @@ public void beforeEach() { embeddingClient = new OpenAiEmbeddingClient(openAiApi, MetadataMode.EMBED, OpenAiEmbeddingOptions.builder().build(), retryTemplate); audioTranscriptionClient = new OpenAiAudioTranscriptionClient(openAiAudioApi, - OpenAiAudioTranscriptionOptions.builder() + OpenAiAudioTranscriptionOptionsBuilder.builder() .withModel("model") .withResponseFormat(TranscriptResponseFormat.JSON) .build(), From 5e31771d9634ceec49dd0c11ac555f2dcccf302a Mon Sep 17 00:00:00 2001 From: youngpar Date: Sun, 17 Mar 2024 17:09:05 +0900 Subject: [PATCH 37/39] refactor OpenAiEmbeddingOptions.java Seperated implementation and interface --- .../ai/openai/OpenAiEmbeddingOptions.java | 76 ++----------- .../openai/OpenAiEmbeddingOptionsBuilder.java | 104 ++++++++++++++++++ 2 files changed, 115 insertions(+), 65 deletions(-) create mode 100644 models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptionsBuilder.java diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptions.java index 59a85aacc32..646390aad8f 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptions.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptions.java @@ -18,7 +18,6 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; - import org.springframework.ai.embedding.EmbeddingOptions; /** @@ -26,78 +25,25 @@ * @since 0.8.0 */ @JsonInclude(Include.NON_NULL) -public class OpenAiEmbeddingOptions implements EmbeddingOptions { +public interface OpenAiEmbeddingOptions extends EmbeddingOptions { - // @formatter:off /** * ID of the model to use. */ - private @JsonProperty("model") String model; + @JsonProperty("model") + String getModel(); + /** * The format to return the embeddings in. Can be either float or base64. */ - private @JsonProperty("encoding_format") String encodingFormat; + @JsonProperty("encoding_format") + String getEncodingFormat(); + /** - * A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. + * A unique identifier representing your end-user, which can help OpenAI to monitor + * and detect abuse. */ - private @JsonProperty("user") String user; - // @formatter:on - - public static Builder builder() { - return new Builder(); - } - - public static class Builder { - - protected OpenAiEmbeddingOptions options; - - public Builder() { - this.options = new OpenAiEmbeddingOptions(); - } - - public Builder withModel(String model) { - this.options.setModel(model); - return this; - } - - public Builder withEncodingFormat(String encodingFormat) { - this.options.setEncodingFormat(encodingFormat); - return this; - } - - public Builder withUser(String user) { - this.options.setUser(user); - return this; - } - - public OpenAiEmbeddingOptions build() { - return this.options; - } - - } - - public String getModel() { - return model; - } - - public void setModel(String model) { - this.model = model; - } - - public String getEncodingFormat() { - return encodingFormat; - } - - public void setEncodingFormat(String encodingFormat) { - this.encodingFormat = encodingFormat; - } - - public String getUser() { - return user; - } - - public void setUser(String user) { - this.user = user; - } + @JsonProperty("user") + String getUser(); } diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptionsBuilder.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptionsBuilder.java new file mode 100644 index 00000000000..caf1547403c --- /dev/null +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingOptionsBuilder.java @@ -0,0 +1,104 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.openai; + +/** + * @author youngmon + * @version 0.8.1 + */ +public class OpenAiEmbeddingOptionsBuilder { + + private String model; + + private String encodingFormat; + + private String user; + + private OpenAiEmbeddingOptionsBuilder() { + } + + public static OpenAiEmbeddingOptionsBuilder builder() { + return new OpenAiEmbeddingOptionsBuilder(); + } + + /** + * Copy Constructor for {@link OpenAiEmbeddingOptionsBuilder} + * @param options Existing {@link OpenAiEmbeddingOptions} + * @return new OpenAiEmbeddingOptionsBuilder + */ + public static OpenAiEmbeddingOptionsBuilder builder(OpenAiEmbeddingOptions options) { + return builder().withUser(options.getUser()) + .withModel(options.getModel()) + .withEncodingFormat(options.getEncodingFormat()); + } + + public OpenAiEmbeddingOptionsBuilder withUser(final String user) { + if (user == null) + return this; + this.user = user; + return this; + } + + public OpenAiEmbeddingOptionsBuilder withModel(final String model) { + if (model == null) + return this; + this.model = model; + return this; + } + + public OpenAiEmbeddingOptionsBuilder withEncodingFormat(final String encodingFormat) { + if (encodingFormat == null) + return this; + this.encodingFormat = encodingFormat; + return this; + } + + public OpenAiEmbeddingOptions build() { + return new OpenAiEmbeddingOptionsImpl(this); + } + + private static class OpenAiEmbeddingOptionsImpl implements OpenAiEmbeddingOptions { + + private final String model; + + private final String encodingFormat; + + private final String user; + + private OpenAiEmbeddingOptionsImpl(final OpenAiEmbeddingOptionsBuilder builder) { + this.user = builder.user; + this.encodingFormat = builder.encodingFormat; + this.model = builder.model; + } + + @Override + public String getModel() { + return this.model; + } + + @Override + public String getEncodingFormat() { + return this.encodingFormat; + } + + @Override + public String getUser() { + return this.user; + } + + } + +} From ce8b353b5365d7d31f1bebb8d1f74d6b484e581c Mon Sep 17 00:00:00 2001 From: youngpar Date: Sun, 17 Mar 2024 17:11:38 +0900 Subject: [PATCH 38/39] refactor OpenAiEmbeddingProperties.java Seperated Option Object, Property Object --- .../OpenAiEmbeddingOptionProperties.java | 57 +++++++++++++++++++ .../openai/OpenAiEmbeddingProperties.java | 15 +++-- 2 files changed, 64 insertions(+), 8 deletions(-) create mode 100644 spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiEmbeddingOptionProperties.java diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiEmbeddingOptionProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiEmbeddingOptionProperties.java new file mode 100644 index 00000000000..26e550fdf91 --- /dev/null +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiEmbeddingOptionProperties.java @@ -0,0 +1,57 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.autoconfigure.openai; + +import org.springframework.ai.openai.OpenAiEmbeddingOptions; + +public class OpenAiEmbeddingOptionProperties implements OpenAiEmbeddingOptions { + + public static final String DEFAULT_EMBEDDING_MODEL = "text-embedding-ada-002"; + + private String model = DEFAULT_EMBEDDING_MODEL; + + private String encodingFormat; + + private String user; + + @Override + public String getModel() { + return this.model; + } + + public void setModel(final String model) { + this.model = model; + } + + @Override + public String getEncodingFormat() { + return this.encodingFormat; + } + + public void setEncodingFormat(final String encodingFormat) { + this.encodingFormat = encodingFormat; + } + + @Override + public String getUser() { + return this.user; + } + + public void setUser(final String user) { + this.user = user; + } + +} diff --git a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiEmbeddingProperties.java b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiEmbeddingProperties.java index fa796d92f3f..5b6695bb4e0 100644 --- a/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiEmbeddingProperties.java +++ b/spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/openai/OpenAiEmbeddingProperties.java @@ -16,17 +16,18 @@ package org.springframework.ai.autoconfigure.openai; import org.springframework.ai.document.MetadataMode; -import org.springframework.ai.openai.OpenAiEmbeddingOptions; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.NestedConfigurationProperty; +/** + * @author youngmon + * @version 0.8.1 + */ @ConfigurationProperties(OpenAiEmbeddingProperties.CONFIG_PREFIX) public class OpenAiEmbeddingProperties extends OpenAiParentProperties { public static final String CONFIG_PREFIX = "spring.ai.openai.embedding"; - public static final String DEFAULT_EMBEDDING_MODEL = "text-embedding-ada-002"; - /** * Enable OpenAI embedding client. */ @@ -35,15 +36,13 @@ public class OpenAiEmbeddingProperties extends OpenAiParentProperties { private MetadataMode metadataMode = MetadataMode.EMBED; @NestedConfigurationProperty - private OpenAiEmbeddingOptions options = OpenAiEmbeddingOptions.builder() - .withModel(DEFAULT_EMBEDDING_MODEL) - .build(); + private OpenAiEmbeddingOptionProperties options = new OpenAiEmbeddingOptionProperties(); - public OpenAiEmbeddingOptions getOptions() { + public OpenAiEmbeddingOptionProperties getOptions() { return this.options; } - public void setOptions(OpenAiEmbeddingOptions options) { + public void setOptions(OpenAiEmbeddingOptionProperties options) { this.options = options; } From 49f205e874eadedc14344f65e17186f2258a81ed Mon Sep 17 00:00:00 2001 From: youngpar Date: Sun, 17 Mar 2024 17:12:29 +0900 Subject: [PATCH 39/39] fix side-effect Apply Changes --- .../springframework/ai/openai/OpenAiEmbeddingClient.java | 2 +- .../springframework/ai/openai/chat/OpenAiRetryTests.java | 4 ++-- .../springframework/ai/openai/embedding/EmbeddingIT.java | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java index f5d5730d750..07e419ee8c0 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiEmbeddingClient.java @@ -59,7 +59,7 @@ public OpenAiEmbeddingClient(OpenAiApi openAiApi) { public OpenAiEmbeddingClient(OpenAiApi openAiApi, MetadataMode metadataMode) { this(openAiApi, metadataMode, - OpenAiEmbeddingOptions.builder().withModel(OpenAiApi.DEFAULT_EMBEDDING_MODEL).build(), + OpenAiEmbeddingOptionsBuilder.builder().withModel(OpenAiApi.DEFAULT_EMBEDDING_MODEL).build(), RetryUtils.DEFAULT_RETRY_TEMPLATE); } 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 c16ccb853e4..dce502bdca3 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 @@ -25,6 +25,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.ai.openai.OpenAiAudioTranscriptionOptionsBuilder; import org.springframework.ai.openai.OpenAiChatOptionsBuilder; +import org.springframework.ai.openai.OpenAiEmbeddingOptionsBuilder; import org.springframework.ai.openai.OpenAiImageOptionsBuilder; import reactor.core.publisher.Flux; @@ -35,7 +36,6 @@ import org.springframework.ai.openai.OpenAiAudioTranscriptionClient; import org.springframework.ai.openai.OpenAiChatClient; import org.springframework.ai.openai.OpenAiEmbeddingClient; -import org.springframework.ai.openai.OpenAiEmbeddingOptions; import org.springframework.ai.openai.OpenAiImageClient; import org.springframework.ai.openai.api.OpenAiApi; import org.springframework.ai.openai.api.OpenAiApi.ChatCompletion; @@ -123,7 +123,7 @@ public void beforeEach() { chatClient = new OpenAiChatClient(openAiApi, OpenAiChatOptionsBuilder.builder().build(), null, retryTemplate); embeddingClient = new OpenAiEmbeddingClient(openAiApi, MetadataMode.EMBED, - OpenAiEmbeddingOptions.builder().build(), retryTemplate); + OpenAiEmbeddingOptionsBuilder.builder().build(), retryTemplate); audioTranscriptionClient = new OpenAiAudioTranscriptionClient(openAiAudioApi, OpenAiAudioTranscriptionOptionsBuilder.builder() .withModel("model") 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 683f54b4826..2260ebebaea 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 @@ -20,7 +20,7 @@ import org.springframework.ai.embedding.EmbeddingRequest; import org.springframework.ai.embedding.EmbeddingResponse; import org.springframework.ai.openai.OpenAiEmbeddingClient; -import org.springframework.ai.openai.OpenAiEmbeddingOptions; +import org.springframework.ai.openai.OpenAiEmbeddingOptionsBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -53,7 +53,7 @@ void defaultEmbedding() { void embedding3Large() { EmbeddingResponse embeddingResponse = embeddingClient.call(new EmbeddingRequest(List.of("Hello World"), - OpenAiEmbeddingOptions.builder().withModel("text-embedding-3-large").build())); + OpenAiEmbeddingOptionsBuilder.builder().withModel("text-embedding-3-large").build())); assertThat(embeddingResponse.getResults()).hasSize(1); assertThat(embeddingResponse.getResults().get(0)).isNotNull(); assertThat(embeddingResponse.getResults().get(0).getOutput()).hasSize(3072); @@ -68,7 +68,7 @@ void embedding3Large() { void textEmbeddingAda002() { EmbeddingResponse embeddingResponse = embeddingClient.call(new EmbeddingRequest(List.of("Hello World"), - OpenAiEmbeddingOptions.builder().withModel("text-embedding-3-small").build())); + OpenAiEmbeddingOptionsBuilder.builder().withModel("text-embedding-3-small").build())); assertThat(embeddingResponse.getResults()).hasSize(1); assertThat(embeddingResponse.getResults().get(0)).isNotNull(); assertThat(embeddingResponse.getResults().get(0).getOutput()).hasSize(1536);