diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/ReReadingAdvisor.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/ReReadingAdvisor.java index 0ad524689..84832be8b 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/ReReadingAdvisor.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/client/ReReadingAdvisor.java @@ -67,8 +67,8 @@ public class ReReadingAdvisor implements CallAroundAdvisor, StreamAroundAdvisor advisedUserParams.put("re2_input_query", advisedRequest.userText()); return AdvisedRequest.from(advisedRequest) - .withUserText(this.re2AdviseTemplate) - .withUserParams(advisedUserParams) + .userText(this.re2AdviseTemplate) + .userParams(advisedUserParams) .build(); } diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/RequestResponseAdvisor.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/RequestResponseAdvisor.java index fa1d1526a..798b1ed1d 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/RequestResponseAdvisor.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/RequestResponseAdvisor.java @@ -67,9 +67,7 @@ public interface RequestResponseAdvisor extends CallAroundAdvisor, StreamAroundA default AdvisedResponse aroundCall(AdvisedRequest advisedRequest, CallAroundAdvisorChain chain) { var context = new HashMap<>(advisedRequest.adviseContext()); var requestPrim = adviseRequest(advisedRequest, context); - advisedRequest = AdvisedRequest.from(requestPrim) - .withAdviseContext(Collections.unmodifiableMap(context)) - .build(); + advisedRequest = AdvisedRequest.from(requestPrim).adviseContext(Collections.unmodifiableMap(context)).build(); var advisedResponse = chain.nextAroundCall(advisedRequest); diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/AbstractChatMemoryAdvisor.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/AbstractChatMemoryAdvisor.java index 9be47bbfe..11ba4a15a 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/AbstractChatMemoryAdvisor.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/AbstractChatMemoryAdvisor.java @@ -36,6 +36,7 @@ import org.springframework.util.Assert; * * @param the type of the chat memory. * @author Christian Tzolov + * @author Ilayaperumal Gopinathan * @since 1.0.0 */ public abstract class AbstractChatMemoryAdvisor implements CallAroundAdvisor, StreamAroundAdvisor { @@ -238,7 +239,7 @@ public abstract class AbstractChatMemoryAdvisor implements CallAroundAdvisor, * @param conversationId the conversation id * @return the builder */ - public AbstractBuilder withConversationId(String conversationId) { + public AbstractBuilder conversationId(String conversationId) { this.conversationId = conversationId; return this; } @@ -248,7 +249,7 @@ public abstract class AbstractChatMemoryAdvisor implements CallAroundAdvisor, * @param chatMemoryRetrieveSize the chat memory retrieve size * @return the builder */ - public AbstractBuilder withChatMemoryRetrieveSize(int chatMemoryRetrieveSize) { + public AbstractBuilder chatMemoryRetrieveSize(int chatMemoryRetrieveSize) { this.chatMemoryRetrieveSize = chatMemoryRetrieveSize; return this; } @@ -258,7 +259,7 @@ public abstract class AbstractChatMemoryAdvisor implements CallAroundAdvisor, * @param protectFromBlocking whether to protect from blocking * @return the builder */ - public AbstractBuilder withProtectFromBlocking(boolean protectFromBlocking) { + public AbstractBuilder protectFromBlocking(boolean protectFromBlocking) { this.protectFromBlocking = protectFromBlocking; return this; } @@ -268,6 +269,42 @@ public abstract class AbstractChatMemoryAdvisor implements CallAroundAdvisor, * @param order the order * @return the builder */ + public AbstractBuilder order(int order) { + this.order = order; + return this; + } + + /** + * @deprecated use {@link #conversationId( String)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public AbstractBuilder withConversationId(String conversationId) { + this.conversationId = conversationId; + return this; + } + + /** + * @deprecated use {@link #chatMemoryRetrieveSize(int)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public AbstractBuilder withChatMemoryRetrieveSize(int chatMemoryRetrieveSize) { + this.chatMemoryRetrieveSize = chatMemoryRetrieveSize; + return this; + } + + /** + * @deprecated use {@link #protectFromBlocking(boolean)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public AbstractBuilder withProtectFromBlocking(boolean protectFromBlocking) { + this.protectFromBlocking = protectFromBlocking; + return this; + } + + /** + * @deprecated use {@link #order(int)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") public AbstractBuilder withOrder(int order) { this.order = order; return this; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/DefaultAroundAdvisorChain.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/DefaultAroundAdvisorChain.java index ee441d1d6..084afd001 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/DefaultAroundAdvisorChain.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/DefaultAroundAdvisorChain.java @@ -86,11 +86,11 @@ public class DefaultAroundAdvisorChain implements CallAroundAdvisorChain, Stream var advisor = this.callAroundAdvisors.pop(); var observationContext = AdvisorObservationContext.builder() - .withAdvisorName(advisor.getName()) - .withAdvisorType(AdvisorObservationContext.Type.AROUND) - .withAdvisedRequest(advisedRequest) - .withAdvisorRequestContext(advisedRequest.adviseContext()) - .withOrder(advisor.getOrder()) + .advisorName(advisor.getName()) + .advisorType(AdvisorObservationContext.Type.AROUND) + .advisedRequest(advisedRequest) + .advisorRequestContext(advisedRequest.adviseContext()) + .order(advisor.getOrder()) .build(); return AdvisorObservationDocumentation.AI_ADVISOR @@ -108,11 +108,11 @@ public class DefaultAroundAdvisorChain implements CallAroundAdvisorChain, Stream var advisor = this.streamAroundAdvisors.pop(); AdvisorObservationContext observationContext = AdvisorObservationContext.builder() - .withAdvisorName(advisor.getName()) - .withAdvisorType(AdvisorObservationContext.Type.AROUND) - .withAdvisedRequest(advisedRequest) - .withAdvisorRequestContext(advisedRequest.adviseContext()) - .withOrder(advisor.getOrder()) + .advisorName(advisor.getName()) + .advisorType(AdvisorObservationContext.Type.AROUND) + .advisedRequest(advisedRequest) + .advisorRequestContext(advisedRequest.adviseContext()) + .order(advisor.getOrder()) .build(); var observation = AdvisorObservationDocumentation.AI_ADVISOR.observation(null, diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/MessageChatMemoryAdvisor.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/MessageChatMemoryAdvisor.java index 6aa2ca1bc..cd1c53cb3 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/MessageChatMemoryAdvisor.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/MessageChatMemoryAdvisor.java @@ -91,7 +91,7 @@ public class MessageChatMemoryAdvisor extends AbstractChatMemoryAdvisor sensitiveWords) { + this.sensitiveWords = sensitiveWords; + return this; + } + + public Builder failureResponse(String failureResponse) { + this.failureResponse = failureResponse; + return this; + } + + public Builder order(int order) { + this.order = order; + return this; + } + + /** + * @deprecated use {@link #sensitiveWords(List)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") public Builder withSensitiveWords(List sensitiveWords) { this.sensitiveWords = sensitiveWords; return this; } + /** + * @deprecated use {@link #failureResponse(String)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") public Builder withFailureResponse(String failureResponse) { this.failureResponse = failureResponse; return this; } + /** + * @deprecated use {@link #order(int)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") public Builder withOrder(int order) { this.order = order; return this; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/VectorStoreChatMemoryAdvisor.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/VectorStoreChatMemoryAdvisor.java index 3873417eb..df6bb87fd 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/VectorStoreChatMemoryAdvisor.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/VectorStoreChatMemoryAdvisor.java @@ -153,8 +153,8 @@ public class VectorStoreChatMemoryAdvisor extends AbstractChatMemoryAdvisor, Map> contextTransform) { Assert.notNull(contextTransform, "contextTransform cannot be null"); return from(this) - .withAdviseContext(Collections.unmodifiableMap(contextTransform.apply(new HashMap<>(this.adviseContext)))) + .adviseContext(Collections.unmodifiableMap(contextTransform.apply(new HashMap<>(this.adviseContext)))) .build(); } @@ -228,7 +229,7 @@ public record AdvisedRequest( * @param chatModel the chat model * @return this {@link Builder} instance */ - public Builder withChatModel(ChatModel chatModel) { + public Builder chatModel(ChatModel chatModel) { this.chatModel = chatModel; return this; } @@ -238,7 +239,7 @@ public record AdvisedRequest( * @param userText the user text * @return this {@link Builder} instance */ - public Builder withUserText(String userText) { + public Builder userText(String userText) { this.userText = userText; return this; } @@ -248,7 +249,7 @@ public record AdvisedRequest( * @param systemText the system text * @return this {@link Builder} instance */ - public Builder withSystemText(String systemText) { + public Builder systemText(String systemText) { this.systemText = systemText; return this; } @@ -258,7 +259,7 @@ public record AdvisedRequest( * @param chatOptions the chat options * @return this {@link Builder} instance */ - public Builder withChatOptions(ChatOptions chatOptions) { + public Builder chatOptions(ChatOptions chatOptions) { this.chatOptions = chatOptions; return this; } @@ -268,7 +269,7 @@ public record AdvisedRequest( * @param media the media * @return this {@link Builder} instance */ - public Builder withMedia(List media) { + public Builder media(List media) { this.media = media; return this; } @@ -278,7 +279,7 @@ public record AdvisedRequest( * @param functionNames the function names * @return this {@link Builder} instance */ - public Builder withFunctionNames(List functionNames) { + public Builder functionNames(List functionNames) { this.functionNames = functionNames; return this; } @@ -288,7 +289,7 @@ public record AdvisedRequest( * @param functionCallbacks the function callbacks * @return this {@link Builder} instance */ - public Builder withFunctionCallbacks(List functionCallbacks) { + public Builder functionCallbacks(List functionCallbacks) { this.functionCallbacks = functionCallbacks; return this; } @@ -298,7 +299,7 @@ public record AdvisedRequest( * @param messages the messages * @return this {@link Builder} instance */ - public Builder withMessages(List messages) { + public Builder messages(List messages) { this.messages = messages; return this; } @@ -308,7 +309,7 @@ public record AdvisedRequest( * @param userParams the user params * @return this {@link Builder} instance */ - public Builder withUserParams(Map userParams) { + public Builder userParams(Map userParams) { this.userParams = userParams; return this; } @@ -318,7 +319,7 @@ public record AdvisedRequest( * @param systemParams the system params * @return this {@link Builder} instance */ - public Builder withSystemParams(Map systemParams) { + public Builder systemParams(Map systemParams) { this.systemParams = systemParams; return this; } @@ -328,7 +329,7 @@ public record AdvisedRequest( * @param advisors the advisors * @return this {@link Builder} instance */ - public Builder withAdvisors(List advisors) { + public Builder advisors(List advisors) { this.advisors = advisors; return this; } @@ -338,7 +339,7 @@ public record AdvisedRequest( * @param advisorParams the advisor params * @return this {@link Builder} instance */ - public Builder withAdvisorParams(Map advisorParams) { + public Builder advisorParams(Map advisorParams) { this.advisorParams = advisorParams; return this; } @@ -348,7 +349,7 @@ public record AdvisedRequest( * @param adviseContext the advise context * @return this {@link Builder} instance */ - public Builder withAdviseContext(Map adviseContext) { + public Builder adviseContext(Map adviseContext) { this.adviseContext = adviseContext; return this; } @@ -358,6 +359,132 @@ public record AdvisedRequest( * @param toolContext the tool context * @return this {@link Builder} instance */ + public Builder toolContext(Map toolContext) { + this.toolContext = toolContext; + return this; + } + + /** + * @deprecated use {@link #chatModel(ChatModel)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withChatModel(ChatModel chatModel) { + this.chatModel = chatModel; + return this; + } + + /** + * @deprecated use {@link #userText(String)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withUserText(String userText) { + this.userText = userText; + return this; + } + + /** + * @deprecated use {@link #systemText(String)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withSystemText(String systemText) { + this.systemText = systemText; + return this; + } + + /** + * @deprecated use {@link #chatOptions(ChatOptions)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withChatOptions(ChatOptions chatOptions) { + this.chatOptions = chatOptions; + return this; + } + + /** + * @deprecated use {@link #media(List)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withMedia(List media) { + this.media = media; + return this; + } + + /** + * @deprecated use {@link #functionNames(List)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withFunctionNames(List functionNames) { + this.functionNames = functionNames; + return this; + } + + /** + * @deprecated use {@link #functionCallbacks(List)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withFunctionCallbacks(List functionCallbacks) { + this.functionCallbacks = functionCallbacks; + return this; + } + + /** + * @deprecated use {@link #messages(List)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withMessages(List messages) { + this.messages = messages; + return this; + } + + /** + * @deprecated use {@link #userParams(Map)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withUserParams(Map userParams) { + this.userParams = userParams; + return this; + } + + /** + * @deprecated use {@link #systemParams(Map)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withSystemParams(Map systemParams) { + this.systemParams = systemParams; + return this; + } + + /** + * @deprecated use {@link #advisors(List)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withAdvisors(List advisors) { + this.advisors = advisors; + return this; + } + + /** + * @deprecated use {@link #advisorParams(Map)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withAdvisorParams(Map advisorParams) { + this.advisorParams = advisorParams; + return this; + } + + /** + * @deprecated use {@link #adviseContext(Map)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withAdviseContext(Map adviseContext) { + this.adviseContext = adviseContext; + return this; + } + + /** + * @deprecated use {@link #toolContext(Map)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") public Builder withToolContext(Map toolContext) { this.toolContext = toolContext; return this; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/api/AdvisedResponse.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/api/AdvisedResponse.java index 7de7b6bf3..124039665 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/api/AdvisedResponse.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/api/AdvisedResponse.java @@ -21,6 +21,7 @@ import java.util.HashMap; import java.util.Map; import java.util.function.Function; +import org.springframework.ai.chat.model.ChatModel; import org.springframework.ai.chat.model.ChatResponse; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -32,6 +33,7 @@ import org.springframework.util.Assert; * @param adviseContext the context to advise the response * @author Christian Tzolov * @author Thomas Vitale + * @author Ilayaperumal Gopinathan * @since 1.0.0 */ public record AdvisedResponse(@Nullable ChatResponse response, Map adviseContext) { @@ -62,7 +64,7 @@ public record AdvisedResponse(@Nullable ChatResponse response, Map adviseContext) { + this.adviseContext = adviseContext; + return this; + } + + /** + * @deprecated use {@link #response(ChatResponse)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withResponse(@Nullable ChatResponse response) { + this.response = response; + return this; + } + + /** + * @deprecated use {@link #adviseContext(Map)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") public Builder withAdviseContext(Map adviseContext) { this.adviseContext = adviseContext; return this; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContext.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContext.java index a174bf81b..530ce4761 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContext.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContext.java @@ -221,7 +221,7 @@ public class AdvisorObservationContext extends Observation.Context { * @param advisorName the advisor name * @return the builder */ - public Builder withAdvisorName(String advisorName) { + public Builder advisorName(String advisorName) { this.advisorName = advisorName; return this; } @@ -231,7 +231,7 @@ public class AdvisorObservationContext extends Observation.Context { * @param advisorType the advisor type * @return the builder */ - public Builder withAdvisorType(Type advisorType) { + public Builder advisorType(Type advisorType) { this.advisorType = advisorType; return this; } @@ -241,7 +241,7 @@ public class AdvisorObservationContext extends Observation.Context { * @param advisedRequest the advised request * @return the builder */ - public Builder withAdvisedRequest(AdvisedRequest advisedRequest) { + public Builder advisedRequest(AdvisedRequest advisedRequest) { this.advisorRequest = advisedRequest; return this; } @@ -251,7 +251,7 @@ public class AdvisorObservationContext extends Observation.Context { * @param advisorRequestContext the advisor request context * @return the builder */ - public Builder withAdvisorRequestContext(Map advisorRequestContext) { + public Builder advisorRequestContext(Map advisorRequestContext) { this.advisorRequestContext = advisorRequestContext; return this; } @@ -261,7 +261,7 @@ public class AdvisorObservationContext extends Observation.Context { * @param advisorResponseContext the advisor response context * @return the builder */ - public Builder withAdvisorResponseContext(Map advisorResponseContext) { + public Builder advisorResponseContext(Map advisorResponseContext) { this.advisorResponseContext = advisorResponseContext; return this; } @@ -271,6 +271,60 @@ public class AdvisorObservationContext extends Observation.Context { * @param order the order of the advisor in the advisor chain * @return the builder */ + public Builder order(int order) { + this.order = order; + return this; + } + + /** + * @deprecated use {@link #advisorName(String)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withAdvisorName(String advisorName) { + this.advisorName = advisorName; + return this; + } + + /** + * @deprecated use {@link #advisorType(Type)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withAdvisorType(Type advisorType) { + this.advisorType = advisorType; + return this; + } + + /** + * @deprecated use {@link #advisedRequest(AdvisedRequest)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withAdvisedRequest(AdvisedRequest advisedRequest) { + this.advisorRequest = advisedRequest; + return this; + } + + /** + * @deprecated use {@link #advisorRequestContext(Map)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withAdvisorRequestContext(Map advisorRequestContext) { + this.advisorRequestContext = advisorRequestContext; + return this; + } + + /** + * @deprecated use {@link #advisorResponseContext(Map)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") + public Builder withAdvisorResponseContext(Map advisorResponseContext) { + this.advisorResponseContext = advisorResponseContext; + return this; + } + + /** + * @deprecated use {@link #order(int)} instead. + */ + @Deprecated(forRemoval = true, since = "1.0.0-M5") public Builder withOrder(int order) { this.order = order; return this; diff --git a/spring-ai-core/src/main/java/org/springframework/ai/chat/model/MessageAggregator.java b/spring-ai-core/src/main/java/org/springframework/ai/chat/model/MessageAggregator.java index 6e0beaa28..d3f57f270 100644 --- a/spring-ai-core/src/main/java/org/springframework/ai/chat/model/MessageAggregator.java +++ b/spring-ai-core/src/main/java/org/springframework/ai/chat/model/MessageAggregator.java @@ -59,8 +59,8 @@ public class MessageAggregator { }), aggregatedChatResponse -> { AdvisedResponse aggregatedAdvisedResponse = AdvisedResponse.builder() - .withResponse(aggregatedChatResponse) - .withAdviseContext(adviseContext.get()) + .response(aggregatedChatResponse) + .adviseContext(adviseContext.get()) .build(); aggregationHandler.accept(aggregatedAdvisedResponse); diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContextTests.java b/spring-ai-core/src/test/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContextTests.java index 9e12573fa..06b34bf67 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContextTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContextTests.java @@ -32,8 +32,8 @@ class AdvisorObservationContextTests { @Test void whenMandatoryOptionsThenReturn() { AdvisorObservationContext observationContext = AdvisorObservationContext.builder() - .withAdvisorName("MyName") - .withAdvisorType(AdvisorObservationContext.Type.BEFORE) + .advisorName("MyName") + .advisorType(AdvisorObservationContext.Type.BEFORE) .build(); assertThat(observationContext).isNotNull(); @@ -41,15 +41,15 @@ class AdvisorObservationContextTests { @Test void missingAdvisorName() { - assertThatThrownBy(() -> AdvisorObservationContext.builder() - .withAdvisorType(AdvisorObservationContext.Type.BEFORE) - .build()).isInstanceOf(IllegalArgumentException.class) + assertThatThrownBy( + () -> AdvisorObservationContext.builder().advisorType(AdvisorObservationContext.Type.BEFORE).build()) + .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("advisorName must not be null or empty"); } @Test void missingAdvisorType() { - assertThatThrownBy(() -> AdvisorObservationContext.builder().withAdvisorName("MyName").build()) + assertThatThrownBy(() -> AdvisorObservationContext.builder().advisorName("MyName").build()) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("advisorType must not be null"); } diff --git a/spring-ai-core/src/test/java/org/springframework/ai/chat/client/advisor/observation/DefaultAdvisorObservationConventionTests.java b/spring-ai-core/src/test/java/org/springframework/ai/chat/client/advisor/observation/DefaultAdvisorObservationConventionTests.java index ee311d3df..39de4b46e 100644 --- a/spring-ai-core/src/test/java/org/springframework/ai/chat/client/advisor/observation/DefaultAdvisorObservationConventionTests.java +++ b/spring-ai-core/src/test/java/org/springframework/ai/chat/client/advisor/observation/DefaultAdvisorObservationConventionTests.java @@ -46,8 +46,8 @@ class DefaultAdvisorObservationConventionTests { @Test void contextualName() { AdvisorObservationContext observationContext = AdvisorObservationContext.builder() - .withAdvisorName("MyName") - .withAdvisorType(AdvisorObservationContext.Type.AROUND) + .advisorName("MyName") + .advisorType(AdvisorObservationContext.Type.AROUND) .build(); assertThat(this.observationConvention.getContextualName(observationContext)).isEqualTo("my_name"); } @@ -55,8 +55,8 @@ class DefaultAdvisorObservationConventionTests { @Test void supportsAdvisorObservationContext() { AdvisorObservationContext observationContext = AdvisorObservationContext.builder() - .withAdvisorName("MyName") - .withAdvisorType(AdvisorObservationContext.Type.AROUND) + .advisorName("MyName") + .advisorType(AdvisorObservationContext.Type.AROUND) .build(); assertThat(this.observationConvention.supportsContext(observationContext)).isTrue(); assertThat(this.observationConvention.supportsContext(new Observation.Context())).isFalse(); @@ -65,8 +65,8 @@ class DefaultAdvisorObservationConventionTests { @Test void shouldHaveLowCardinalityKeyValuesWhenDefined() { AdvisorObservationContext observationContext = AdvisorObservationContext.builder() - .withAdvisorName("MyName") - .withAdvisorType(AdvisorObservationContext.Type.AROUND) + .advisorName("MyName") + .advisorType(AdvisorObservationContext.Type.AROUND) .build(); assertThat(this.observationConvention.getLowCardinalityKeyValues(observationContext)).contains( KeyValue.of(LowCardinalityKeyNames.ADVISOR_TYPE.asString(), @@ -80,9 +80,9 @@ class DefaultAdvisorObservationConventionTests { @Test void shouldHaveKeyValuesWhenDefinedAndResponse() { AdvisorObservationContext observationContext = AdvisorObservationContext.builder() - .withAdvisorName("MyName") - .withAdvisorType(AdvisorObservationContext.Type.AROUND) - .withOrder(678) + .advisorName("MyName") + .advisorType(AdvisorObservationContext.Type.AROUND) + .order(678) .build(); assertThat(this.observationConvention.getHighCardinalityKeyValues(observationContext)) diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/advisors.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/advisors.adoc index 6e686b216..204bb2f2b 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/advisors.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/advisors.adoc @@ -272,11 +272,11 @@ public class ReReadingAdvisor implements CallAroundAdvisor, StreamAroundAdvisor advisedUserParams.put("re2_input_query", advisedRequest.userText()); return AdvisedRequest.from(advisedRequest) - .withUserText(""" + .userText(""" {re2_input_query} Read the question again: {re2_input_query} """) - .withUserParams(advisedUserParams) + .userParams(advisedUserParams) .build(); }