8 小时以前 8f3bf7050e65fdbe55eaad74fde307c57dab960e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package org.springframework.ai.model.tool;
 
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.ChatOptions;
 
import java.lang.reflect.Method;
 
/**
 * TODO 芋艿:spring-ai-alibaba 2.0.0-M1.1 仍依赖旧的 Spring AI ToolExecutionEligibilityPredicate,
 * 临时补齐;升级到兼容 Spring AI 2.0.0 的 spring-ai-alibaba 版本后,删除本包下的 shim。
 */
public class DefaultToolExecutionEligibilityPredicate implements ToolExecutionEligibilityPredicate {
 
    @Override
    public boolean test(ChatOptions promptOptions, ChatResponse chatResponse) {
        return isInternalToolExecutionEnabled(promptOptions) && chatResponse != null && chatResponse.hasToolCalls();
    }
 
    private static boolean isInternalToolExecutionEnabled(ChatOptions promptOptions) {
        try {
            Method method = promptOptions.getClass().getMethod("getInternalToolExecutionEnabled");
            Object result = method.invoke(promptOptions);
            return result == null || Boolean.TRUE.equals(result);
        } catch (ReflectiveOperationException | SecurityException ignored) {
            return true;
        }
    }
 
}