|
|
@ -26,19 +26,20 @@ import java.util.function.Consumer;
|
|
|
|
public class Base_Tool_Example {
|
|
|
|
public class Base_Tool_Example {
|
|
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
|
|
|
// 初始化消息列表
|
|
|
|
List<ChatMessage> chatMessages = new ArrayList<>();
|
|
|
|
List<ChatMessage> chatMessages = new ArrayList<>();
|
|
|
|
chatMessages.add(UserMessage.from("请问,泰州市的天气怎么样?"));
|
|
|
|
chatMessages.add(UserMessage.from("请问,泰州市的天气怎么样?"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 定义工具
|
|
|
|
Object weatherTools = new Object() {
|
|
|
|
Object weatherTools = new Object() {
|
|
|
|
@Tool("返回某一城市的天气情况")
|
|
|
|
@Tool("返回某一城市的天气情况")
|
|
|
|
public String getWeather(@P("应返回天气预报的城市") String city) {
|
|
|
|
public String getWeather(@P("应返回天气预报的城市") String city) {
|
|
|
|
System.out.println(city);
|
|
|
|
|
|
|
|
return "天气阴转多云,1~6℃";
|
|
|
|
return "天气阴转多云,1~6℃";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
List<ToolSpecification> toolSpecifications = ToolSpecifications.toolSpecificationsFrom(weatherTools);
|
|
|
|
List<ToolSpecification> toolSpecifications = ToolSpecifications.toolSpecificationsFrom(weatherTools);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 构建请求
|
|
|
|
ChatRequest chatRequest = ChatRequest.builder()
|
|
|
|
ChatRequest chatRequest = ChatRequest.builder()
|
|
|
|
.messages(chatMessages)
|
|
|
|
.messages(chatMessages)
|
|
|
|
.parameters(ChatRequestParameters.builder()
|
|
|
|
.parameters(ChatRequestParameters.builder()
|
|
|
@ -46,10 +47,11 @@ public class Base_Tool_Example {
|
|
|
|
.build())
|
|
|
|
.build())
|
|
|
|
.build();
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 调用LLM
|
|
|
|
ChatResponse chatResponse = Helper.getToolChatModel().chat(chatRequest);
|
|
|
|
ChatResponse chatResponse = Helper.getToolChatModel().chat(chatRequest);
|
|
|
|
AiMessage aiMessage = chatResponse.aiMessage();
|
|
|
|
AiMessage aiMessage = chatResponse.aiMessage();
|
|
|
|
chatMessages.add(aiMessage);
|
|
|
|
chatMessages.add(aiMessage);
|
|
|
|
|
|
|
|
// 判断是否需要调用工具
|
|
|
|
if (aiMessage.hasToolExecutionRequests()) {
|
|
|
|
if (aiMessage.hasToolExecutionRequests()) {
|
|
|
|
System.out.println("LLM决定调用工具");
|
|
|
|
System.out.println("LLM决定调用工具");
|
|
|
|
System.out.println(chatResponse.aiMessage());
|
|
|
|
System.out.println(chatResponse.aiMessage());
|
|
|
@ -65,12 +67,15 @@ public class Base_Tool_Example {
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 再次调用LLM
|
|
|
|
ChatRequest chatRequest2 = ChatRequest.builder()
|
|
|
|
ChatRequest chatRequest2 = ChatRequest.builder()
|
|
|
|
.messages(chatMessages)
|
|
|
|
.messages(chatMessages)
|
|
|
|
.parameters(ChatRequestParameters.builder()
|
|
|
|
.parameters(ChatRequestParameters.builder()
|
|
|
|
.toolSpecifications(toolSpecifications)
|
|
|
|
.toolSpecifications(toolSpecifications)
|
|
|
|
.build())
|
|
|
|
.build())
|
|
|
|
.build();
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 返回最终回答
|
|
|
|
ChatResponse finalChatResponse = Helper.getToolChatModel().chat(chatRequest2);
|
|
|
|
ChatResponse finalChatResponse = Helper.getToolChatModel().chat(chatRequest2);
|
|
|
|
System.out.println(finalChatResponse.aiMessage().text());
|
|
|
|
System.out.println(finalChatResponse.aiMessage().text());
|
|
|
|
}
|
|
|
|
}
|
|
|
|