Skip to content

Commit 569e351

Browse files
Refactor error handling in streaming chat completion responses
1 parent 34cd687 commit 569e351

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/ibmwatsonx/IbmWatsonUnifiedChatCompletionResponseHandler.java

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
package org.elasticsearch.xpack.inference.services.ibmwatsonx;
99

10+
import org.elasticsearch.rest.RestStatus;
1011
import org.elasticsearch.xpack.core.inference.results.UnifiedChatCompletionException;
1112
import org.elasticsearch.xpack.inference.external.http.HttpResult;
1213
import org.elasticsearch.xpack.inference.external.http.retry.ErrorResponse;
@@ -30,22 +31,17 @@ public IbmWatsonUnifiedChatCompletionResponseHandler(String requestType, Respons
3031
}
3132

3233
@Override
33-
protected Exception buildError(String message, Request request, HttpResult result, ErrorResponse errorResponse) {
34-
assert request.isStreaming() : "Only streaming requests support this format";
35-
var responseStatusCode = result.response().getStatusLine().getStatusCode();
36-
if (request.isStreaming()) {
37-
var errorMessage = errorMessage(message, request, result, errorResponse, responseStatusCode);
38-
var restStatus = toRestStatus(responseStatusCode);
39-
return errorResponse instanceof IbmWatsonxErrorResponseEntity
40-
? new UnifiedChatCompletionException(restStatus, errorMessage, WATSONX_ERROR, restStatus.name().toLowerCase(Locale.ROOT))
41-
: new UnifiedChatCompletionException(
42-
restStatus,
43-
errorMessage,
44-
createErrorType(errorResponse),
45-
restStatus.name().toLowerCase(Locale.ROOT)
46-
);
47-
} else {
48-
return super.buildError(message, request, result, errorResponse);
49-
}
34+
protected UnifiedChatCompletionException buildError(String message, Request request, HttpResult result, ErrorResponse errorResponse) {
35+
return buildChatCompletionError(message, request, result, errorResponse, IbmWatsonxErrorResponseEntity.class);
5036
}
37+
38+
@Override
39+
protected UnifiedChatCompletionException buildProviderSpecificChatCompletionError(
40+
ErrorResponse errorResponse,
41+
String errorMessage,
42+
RestStatus restStatus
43+
) {
44+
return new UnifiedChatCompletionException(restStatus, errorMessage, WATSONX_ERROR, restStatus.name().toLowerCase(Locale.ROOT));
45+
}
46+
5147
}

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/sagemaker/schema/elastic/ElasticCompletionPayload.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,11 @@ public StreamingUnifiedChatCompletionResults.Results chatCompletionResponseBody(
102102
);
103103
return new StreamingUnifiedChatCompletionResults.Results(results);
104104
} catch (Exception e) {
105-
throw OpenAiUnifiedChatCompletionResponseHandler.buildMidStreamError(model.getInferenceEntityId(), responseData, e);
105+
throw new OpenAiUnifiedChatCompletionResponseHandler(null, null).buildMidStreamChatCompletionError(
106+
model.getInferenceEntityId(),
107+
responseData,
108+
e
109+
);
106110
}
107111
}
108112

0 commit comments

Comments
 (0)