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; } } }