Bug description org.springframework.web.client.RestClientException: Error while extracting response for type [org.springframework.ai.openai.api.OpenAiApi$ChatCompletion] and content type [text/html;charset=UTF-8]
Environment Java 17 spring-ai 1.0.0-M1 model gpt-4o
Steps to reproduce Simply, write a controller like this:
@GetMapping("/chat")
public String chat(String query) {
String answer = this.chatClient.prompt().user(query).call().content();
return answer;
}
Expected behavior
when use PostMan send a GET request like localhost:8080/chat?query=你好, Error occurred.
I implement a class, convert response body to ChatCompletion.
@Bean
public HttpMessageConverter
final ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return new AbstractHttpMessageConverter<OpenAiApi.ChatCompletion>(MediaType.TEXT_HTML) {
@Override
protected boolean supports(@SuppressWarnings("null") Class<?> clazz) {
return ChatCompletion.class == clazz;
}
@SuppressWarnings("null")
@Override
protected ChatCompletion readInternal(Class<? extends ChatCompletion> clazz, HttpInputMessage inputMessage)
throws IOException, HttpMessageNotReadableException {
byte[] contentBytes = FileCopyUtils.copyToByteArray(inputMessage.getBody());
ChatCompletion cc = mapper.readValue(contentBytes, clazz);
return cc;
}
@SuppressWarnings("null")
@Override
protected void writeInternal(ChatCompletion t, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
throw new UnsupportedOperationException("Unimplemented method 'writeInternal'");
}
};
}
Comment From: markpollack
when use PostMan send a GET request like localhost:8080/chat?query=你好, Error occurred.
It is not clear what error you are seeing. Can you provide an example project of the issue or some more details of the error please.