From 1f3d450d783dd0cf8596558d5dafdb9535cf1a61 Mon Sep 17 00:00:00 2001 From: 0007 <0007@qq.com> Date: Wed, 27 Aug 2025 19:58:22 +0800 Subject: [PATCH] Add File --- .../llm/functions/JavaNativeFunctions.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 agents-flex-core/src/main/java/com/agentsflex/core/llm/functions/JavaNativeFunctions.java diff --git a/agents-flex-core/src/main/java/com/agentsflex/core/llm/functions/JavaNativeFunctions.java b/agents-flex-core/src/main/java/com/agentsflex/core/llm/functions/JavaNativeFunctions.java new file mode 100644 index 0000000..32824fb --- /dev/null +++ b/agents-flex-core/src/main/java/com/agentsflex/core/llm/functions/JavaNativeFunctions.java @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2023-2025, Agents-Flex (fuhai999@gmail.com). + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.agentsflex.core.llm.functions; + +import com.agentsflex.core.llm.functions.annotation.FunctionDef; +import com.agentsflex.core.util.ArrayUtil; +import com.agentsflex.core.util.ClassUtil; + +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.List; + +public class JavaNativeFunctions extends ArrayList { + + public static JavaNativeFunctions from(Object object, String... methodNames) { + return from(object.getClass(), object, methodNames); + } + + public static JavaNativeFunctions from(Class clazz, String... methodNames) { + return from(clazz, null, methodNames); + } + + private static JavaNativeFunctions from(Class clazz, Object object, String... methodNames) { + clazz = ClassUtil.getUsefulClass(clazz); + List methodList = ClassUtil.getAllMethods(clazz, method -> { + if (object == null && !Modifier.isStatic(method.getModifiers())) { + return false; + } + if (method.getAnnotation(FunctionDef.class) == null) { + return false; + } + if (methodNames.length > 0) { + return ArrayUtil.contains(methodNames, method.getName()); + } + return true; + }); + + JavaNativeFunctions javaNativeFunctions = new JavaNativeFunctions(); + + for (Method method : methodList) { + JavaNativeFunction function = new JavaNativeFunction(); + function.setClazz(clazz); + function.setMethod(method); + + if (!Modifier.isStatic(method.getModifiers())) { + function.setObject(object); + } + + javaNativeFunctions.add(function); + } + + return javaNativeFunctions; + } + + +}