The package org.springframework.ai.model
is annotated with @NonNullApi
@NonNullApi
@NonNullFields
package org.springframework.ai.model;
import org.springframework.lang.NonNullApi;
import org.springframework.lang.NonNullFields;
So all methods of interface org.springframework.ai.model.ModelResponse
are annotated with @NonNull
implicitly.
But in ChatResponse
implementation, the getResult
method could return null
:
public Generation getResult() {
if (CollectionUtils.isEmpty(this.generations)) {
return null;
}
return this.generations.get(0);
}
It breaks IntelliJ IDEA and Kotlin nullability check.
Comment From: Khalil-Elemam
Hi, I was able to reproduce this issue.
In ChatResponse#getResult()
, the method currently returns null
when generations
is empty, which conflicts with the package’s @NonNullApi
contract.
I noticed that EmbeddingResponse#getResult()
handles the same scenario by throwing an exception, and there was a similar fix applied to ImageResponse#getResult()
. I implemented the same approach locally for ChatResponse
(and also applied it consistently to ImageResponse
) and it resolves the issue.
I have a branch ready — please let me know if you’d like me to open a PR once this is triaged.