mcp tool calling

发布于:2025-09-11 ⋅ 阅读:(20) ⋅ 点赞:(0)

获取所有tool的名称

  ToolCallback[] toolCallbacks = syncMcpToolCallbackProvider.getToolCallbacks();
        List<ToolCallback> list1 = Arrays.stream(toolCallbacks).toList();
        List<SyncMcpToolCallback> list = list1.stream().map(callback -> (SyncMcpToolCallback) callback).collect(Collectors.toList());
        List<String> names = new ArrayList<>();
        for (SyncMcpToolCallback a : list) {
            ToolDefinition toolDefinition = a.getToolDefinition();
            String name = toolDefinition.name();
            names.add(name);
        }
        String toolNamesString = String.join(", ", names);

完整例子:
想要控制tool的进程必须有用户控制
完整的例子

class DateTimeTools {

        @Tool(description = "Get the current date and time in the user's timezone")
        String getCurrentDateTime() {
            return LocalDateTime.now().atZone(LocaleContextHolder.getTimeZone().toZoneId()).toString();
        }

    }
    
    @PostMapping(value = "/sj2")
    public ChatResponse llmChatsdd( ) {
        ToolCallingManager toolCallingManager = DefaultToolCallingManager.builder().build();

        ChatOptions chatOptions = ToolCallingChatOptions.builder().model("qwen2.5").toolCallbacks(ToolCallbacks.from(new DateTimeTools())).internalToolExecutionEnabled(false).build();
        List<Advisor> advisors = new ArrayList<>();
        advisors.add(new SimpleLoggerAdvisor());
        ChatClient chatClient = ChatClient.builder(chatModel).defaultOptions(chatOptions).defaultAdvisors(advisors).build();


        Prompt prompt = new Prompt(List.of(new SystemMessage("You are a helpful assistant."), new UserMessage( "What day is tomorrow?")), chatOptions);

        ChatResponse chatResponse = chatClient.prompt(prompt).call().chatResponse();

        if (chatResponse != null) {
            while (chatResponse.hasToolCalls()) {
                ToolExecutionResult toolExecutionResult = toolCallingManager.executeToolCalls(prompt, chatResponse);
                //            toolExecutionResult.conversationHistory()
                Prompt prompt2 = new Prompt(toolExecutionResult.conversationHistory(), chatOptions);
                chatResponse = chatClient.prompt(prompt2).call().chatResponse();

            }
        }
        return chatResponse;

    }

网站公告

今日签到

点亮在社区的每一天
去签到