Skip to content

Commit d096e18

Browse files
committed
feat: Move the advisor name to low cardinality key values
- Adviser name is moved from hight to low cardinality key values. - Updated tests in to reflect these changes, ensuring the new low cardinality key is correctly captured. Resolves #1716
1 parent 6acd202 commit d096e18

File tree

3 files changed

+14
-14
lines changed

3 files changed

+14
-14
lines changed

spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationDocumentation.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,7 @@ public String asString() {
6868
public String asString() {
6969
return "spring.ai.advisor.type";
7070
}
71-
}
72-
73-
}
74-
75-
public enum HighCardinalityKeyNames implements KeyName {
71+
},
7672

7773
/**
7874
* Advisor name.
@@ -83,6 +79,11 @@ public String asString() {
8379
return "spring.ai.advisor.name";
8480
}
8581
},
82+
83+
}
84+
85+
public enum HighCardinalityKeyNames implements KeyName {
86+
8687
/**
8788
* Advisor order in the advisor chain.
8889
*/

spring-ai-core/src/main/java/org/springframework/ai/chat/client/advisor/observation/DefaultAdvisorObservationConvention.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,19 @@ public String getContextualName(AdvisorObservationContext context) {
6262

6363
@Override
6464
public KeyValues getLowCardinalityKeyValues(AdvisorObservationContext context) {
65-
return KeyValues.of(springAiKind(), advisorType(context));
65+
return KeyValues.of(springAiKind(), advisorType(context), advisorName(context));
6666
}
6767

6868
protected KeyValue advisorType(AdvisorObservationContext context) {
6969
return KeyValue.of(LowCardinalityKeyNames.ADVISOR_TYPE, context.getAdvisorType().name());
7070
}
7171

7272
protected KeyValue springAiKind() {
73-
return KeyValue.of(AdvisorObservationDocumentation.LowCardinalityKeyNames.SPRING_AI_KIND,
74-
SpringAiKind.ADVISOR.value());
73+
return KeyValue.of(LowCardinalityKeyNames.SPRING_AI_KIND, SpringAiKind.ADVISOR.value());
74+
}
75+
76+
protected KeyValue advisorName(AdvisorObservationContext context) {
77+
return KeyValue.of(LowCardinalityKeyNames.ADVISOR_NAME, context.getAdvisorName());
7578
}
7679

7780
// ------------------------
@@ -80,11 +83,7 @@ protected KeyValue springAiKind() {
8083

8184
@Override
8285
public KeyValues getHighCardinalityKeyValues(AdvisorObservationContext context) {
83-
return KeyValues.of(advisorName(context), advisorOrder(context));
84-
}
85-
86-
protected KeyValue advisorName(AdvisorObservationContext context) {
87-
return KeyValue.of(HighCardinalityKeyNames.ADVISOR_NAME, context.getAdvisorName());
86+
return KeyValues.of(advisorOrder(context));
8887
}
8988

9089
protected KeyValue advisorOrder(AdvisorObservationContext context) {

spring-ai-core/src/test/java/org/springframework/ai/chat/client/advisor/observation/DefaultAdvisorObservationConventionTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ void shouldHaveLowCardinalityKeyValuesWhenDefined() {
6969
assertThat(this.observationConvention.getLowCardinalityKeyValues(observationContext)).contains(
7070
KeyValue.of(LowCardinalityKeyNames.ADVISOR_TYPE.asString(),
7171
AdvisorObservationContext.Type.AROUND.name()),
72+
KeyValue.of(LowCardinalityKeyNames.ADVISOR_NAME.asString(), "MyName"),
7273
KeyValue.of(LowCardinalityKeyNames.SPRING_AI_KIND.asString(), SpringAiKind.ADVISOR.value()));
7374
}
7475

@@ -81,7 +82,6 @@ void shouldHaveKeyValuesWhenDefinedAndResponse() {
8182
.build();
8283

8384
assertThat(this.observationConvention.getHighCardinalityKeyValues(observationContext))
84-
.contains(KeyValue.of(HighCardinalityKeyNames.ADVISOR_NAME.asString(), "MyName"))
8585
.contains(KeyValue.of(HighCardinalityKeyNames.ADVISOR_ORDER.asString(), "678"));
8686
}
8787

0 commit comments

Comments
 (0)