Skip to content

Commit aeaf35a

Browse files
committed
Fix EmbeddingModelInterceptor
1 parent a453e4e commit aeaf35a

2 files changed

Lines changed: 19 additions & 21 deletions

File tree

apm-sniffer/apm-sdk-plugin/spring-plugins/spring-ai-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/ai/v1/EmbeddingModelInterceptor.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,39 +18,39 @@
1818

1919
package org.apache.skywalking.apm.plugin.spring.ai.v1;
2020

21-
import java.lang.reflect.Method;
22-
2321
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance;
2422
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
2523
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult;
26-
import org.springframework.ai.embedding.EmbeddingOptions;
24+
import org.springframework.ai.embedding.EmbeddingResponse;
25+
import org.springframework.ai.embedding.EmbeddingResponseMetadata;
2726
import org.springframework.util.StringUtils;
2827

28+
import java.lang.reflect.Method;
29+
2930
public class EmbeddingModelInterceptor implements InstanceMethodsAroundInterceptor {
3031

3132
@Override
32-
public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes,
33-
MethodInterceptResult result) {
34-
if (allArguments == null || allArguments.length < 2 || !(allArguments[1] instanceof EmbeddingOptions)) {
35-
return;
33+
public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes, MethodInterceptResult result) {
34+
35+
}
36+
37+
@Override
38+
public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes, Object ret) {
39+
EmbeddingResponseMetadata metadata = ((EmbeddingResponse) ret).getMetadata();
40+
if (metadata == null) {
41+
return ret;
3642
}
37-
String model = ((EmbeddingOptions) allArguments[1]).getModel();
43+
String model = metadata.getModel();
3844
if (!StringUtils.hasText(model)) {
39-
return;
45+
return ret;
4046
}
4147
EmbeddingModelEnhanceContext context = getOrCreateContext(objInst);
4248
context.setEmbeddingModelNameIfAbsent(model);
43-
}
44-
45-
@Override
46-
public Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes,
47-
Object ret) {
4849
return ret;
4950
}
5051

5152
@Override
52-
public void handleMethodException(EnhancedInstance objInst, Method method, Object[] allArguments,
53-
Class<?>[] argumentsTypes, Throwable t) {
53+
public void handleMethodException(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes, Throwable t) {
5454
}
5555

5656
private EmbeddingModelEnhanceContext getOrCreateContext(EnhancedInstance objInst) {

apm-sniffer/apm-sdk-plugin/spring-plugins/spring-ai-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/ai/v1/define/EmbeddingModelInstrumentation.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class EmbeddingModelInstrumentation extends ClassInstanceMethodsEnhancePl
3434

3535
private static final String ENHANCE_CLASS = "org.springframework.ai.embedding.EmbeddingModel";
3636

37-
private static final String INTERCEPT_METHOD = "embed";
37+
private static final String INTERCEPT_METHOD = "call";
3838

3939
private static final String INTERCEPTOR_CLASS =
4040
"org.apache.skywalking.apm.plugin.spring.ai.v1.EmbeddingModelInterceptor";
@@ -56,10 +56,8 @@ public InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() {
5656
@Override
5757
public ElementMatcher<MethodDescription> getMethodsMatcher() {
5858
return named(INTERCEPT_METHOD)
59-
.and(takesArguments(3))
60-
.and(takesArgumentWithType(0, "java.util.List"))
61-
.and(takesArgumentWithType(1, "org.springframework.ai.embedding.EmbeddingOptions"))
62-
.and(takesArgumentWithType(2, "org.springframework.ai.embedding.BatchingStrategy"));
59+
.and(takesArguments(1))
60+
.and(takesArgumentWithType(0, "org.springframework.ai.embedding.EmbeddingRequest"));
6361
}
6462

6563
@Override

0 commit comments

Comments
 (0)