1、pom依赖
<properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <langchain4j.version>0.35.0</langchain4j.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.1</version> </parent> <dependencies> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j</artifactId> <version>${langchain4j.version}</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-open-ai</artifactId> <version>${langchain4j.version}</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-dashscope</artifactId> <version>${langchain4j.version}</version> <exclusions> <exclusion> <artifactId>slf4j-simple</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-dashscope-spring-boot-starter</artifactId> <version>0.35.0</version> </dependency> </dependencies>
2、代码
import dev.langchain4j.agent.tool.Tool; import dev.langchain4j.agent.tool.ToolExecutionRequest; import dev.langchain4j.agent.tool.ToolSpecification; import dev.langchain4j.agent.tool.ToolSpecifications; import dev.langchain4j.data.message.AiMessage; import dev.langchain4j.data.message.ToolExecutionResultMessage; import dev.langchain4j.data.message.UserMessage; import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.dashscope.QwenChatModel; import dev.langchain4j.model.output.Response; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.time.LocalDateTime; import java.util.Collections; public class ToolDemo { @Tool("获取当前日期") public static String getTime() { return LocalDateTime.now().toString(); } public static void main(String [] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { ChatLanguageModel model = QwenChatModel.builder() .apiKey("sk-3bfe0dfa79b94aa9b2d2da0a9286b9b1") .build(); ToolSpecification specification = ToolSpecifications.toolSpecificationFrom(ToolDemo.class.getMethod("getTime")); UserMessage userMessage = UserMessage.from("今天是几月几日?"); Response<AiMessage> aiMessageResponse = model.generate(Collections.singletonList(userMessage), specification); AiMessage aiMessage = aiMessageResponse.content(); if (aiMessage.hasToolExecutionRequests()) { for (ToolExecutionRequest request : aiMessage.toolExecutionRequests()) { String name = request.name(); Method method = ToolDemo.class.getMethod(name); String result = (String)method.invoke(null); ToolExecutionResultMessage message = ToolExecutionResultMessage.from(request.id(), request.name(), result); Response<AiMessage> response = model.generate(userMessage, aiMessage, message); System.out.println(response.content().text()); } } } }
3、测试结果
今天是2025年7月2日。