Bug description Caused by: com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id 'thinking' as a subtype of org.springframework.ai.anthropic.api.AnthropicApi$ContentBlockStartEvent$ContentBlockBody: known type ids = [text, tool_use] (for POJO property 'content_block') at [Source: REDACTED (StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION disabled); line: 1, column: 65] (through reference chain: org.springframework.ai.anthropic.api.AnthropicApi$ContentBlockStartEvent["content_block"])

Environment spring-ai: 1.0.0
java: 23

Steps to reproduce

       AnthropicApi.Builder builder = AnthropicApi.builder();
        builder.webClientBuilder(WebClient.builder());
        builder.restClientBuilder(RestClient.builder());
        builder.anthropicBetaFeatures("max-tokens-3-5-sonnet-2024-07-15");
        builder.baseUrl("https://api.anthropic.com");
        builder.apiKey("sk-xxxxxxxxxx");

        AnthropicChatOptions.Builder optionBuilder = AnthropicChatOptions.builder();
        optionBuilder.model( AnthropicApi.ChatModel.CLAUDE_3_7_SONNET.getValue());
        optionBuilder.temperature(1.0);
        optionBuilder.maxTokens(1024 * 16);
        optionBuilder.thinking(AnthropicApi.ThinkingType.ENABLED,10000);

        AnthropicChatModel.Builder modelBuilder = AnthropicChatModel.builder();
        modelBuilder.anthropicApi(builder.build());
        modelBuilder.observationRegistry(observationRegistry);
        modelBuilder.defaultOptions(optionBuilder.build());
        modelBuilder.toolCallingManager(toolCallingManager);
        modelBuilder.retryTemplate(retryTemplate);
        var chatModel = modelBuilder.build();
        chatModel.stream(new Prompt("what's the weather about tomorrow")).filter(response -> response.getResult() != null).doOnNext(response -> {
            Generation result = response.getResult();
            AssistantMessage assistantMessage = result.getOutput();
            if (assistantMessage != null) {
                System.out.println(assistantMessage);
                System.out.println(assistantMessage.getText());
            }
        }).blockLast();

Comment From: apappascs

Thank you for the input @walle1027 . this seems dublicate of this one https://github.com/spring-projects/spring-ai/issues/2793 to be honest AnthropicApi.ThinkingType.ENABLED was not delivered for chatModel.stream but for blocking calls only. It should have been communicated better on the documentation. Here is the PR to resolve the issue https://github.com/spring-projects/spring-ai/pull/2800

Comment From: markpollack

This can now be closed, merged in 12f19dbfe091a3e65690926d5fa08afafc7c2a1e