Bug description
on call of AnthropicChatModel.stream (method signature: org.springframework.ai.anthropic.AnthropicChatModel#stream(Lorg/springframework/ai/chat/prompt/Prompt;)Lreactor/core/publisher/Flux;), thrown exception's response body is not displaying correctly.
At the AnthropicApi#110, ClientResponse#bodyToMono is never used as Publisher. I don't think it's intentional. It should display the body of error request, instead of Mono<T>#toString().
Environment
Amazon Corretto 17 (OpenJDK 17) Spring Boot - 3.3.0 Spring AI - 1.0.0-M3
Minimal Complete Reproducible example
Here is simple java code to reproduce:
AnthropicApi api = new AnthropicApi("LEAVING_IT_EMPTY");
StreamingChatModel model = new AnthropicChatModel(api, new AnthropicChatOptions());
model.stream(new Prompt("Hello, world!"))
.doOnEach((res) -> System.out.println(res.get()))
.blockLast();
Expected behavior
It can be displayed by passing WebClient builder in constructor of AnthropicApi, but it should display at default.
Await the mono variable. we can get body as String properly.
changing Mono.just~~ to below code:
resp
.bodyToMono(java.lang.String.class)
.map((body) -> new RuntimeException("Response exception, Status: [" + resp.statusCode() +
"], Body:[" + body + "]"))
Will work as expected.
Comment From: DHKIM-0511
Fix PR https://github.com/spring-projects/spring-ai/pull/1721
Comment From: markpollack
Sorry, we should have closed this issue last Friday, the fix already in main and was part of this commit 9fa89a2fd65dba03bd27b26ac49fd32a9fab558a
Comment From: jombidev
I have confirmed that the issue has been resolved, but written commit log is not correct. here is the fixed commit: https://github.com/spring-projects/spring-ai/commit/fb2e7528d0b74ae4adcb4aa6e18436bff2e808e5