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日。
909

被折叠的 条评论
为什么被折叠?



