diff --git a/java/src/main/java/com/genexus/util/saia/OpenAIResponse.java b/java/src/main/java/com/genexus/util/saia/OpenAIResponse.java index 4b966e773..cbdf49e53 100644 --- a/java/src/main/java/com/genexus/util/saia/OpenAIResponse.java +++ b/java/src/main/java/com/genexus/util/saia/OpenAIResponse.java @@ -32,6 +32,15 @@ public class OpenAIResponse { @JsonProperty("data") private ArrayList data; + + @JsonProperty("error") + private Error error; + + @JsonProperty("success") + private Boolean success = true; + + @JsonProperty("status") + private String status; public String getId() { return id; } public void setId(String id) { this.id = id; } @@ -53,6 +62,15 @@ public class OpenAIResponse { public ArrayList getData() { return data; } public void setData(ArrayList data) { this.data = data; } + + public Error getError() { return error; } + public void setError(Error error) { this.error = error; } + + public Boolean getSuccess() { return success; } + public void setSuccess(Boolean success) { this.success = success; } + + public String getStatus() { return status; } + public void setStatus(String status) { this.status = status; } @JsonIgnoreProperties(ignoreUnknown = true) public static class Choice { @@ -301,4 +319,22 @@ public static class DataItem { public ArrayList getEmbedding() { return embedding; } public void setEmbedding(ArrayList embedding) { this.embedding = embedding; } } + + @JsonIgnoreProperties(ignoreUnknown = true) + public static class Error { + + @JsonProperty("code") + private int code; + + @JsonProperty("message") + private String message; + + public Error() {} + + public int getCode() { return code; } + public void setCode(int code) { this.code = code; } + + public String getMessage() { return message; } + public void setMessage(String message) { this.message = message; } + } } diff --git a/java/src/main/java/com/genexus/util/saia/SaiaService.java b/java/src/main/java/com/genexus/util/saia/SaiaService.java index db6c0cb3a..b3eefb7fc 100644 --- a/java/src/main/java/com/genexus/util/saia/SaiaService.java +++ b/java/src/main/java/com/genexus/util/saia/SaiaService.java @@ -59,15 +59,17 @@ public static OpenAIResponse call(GXProcedure proc, OpenAIRequest request, boole logger.debug("Agent response: " + saiaResponse); JSONObject jsonResponse = new JSONObject(saiaResponse); - return new ObjectMapper().readValue(jsonResponse.toString(), OpenAIResponse.class); + OpenAIResponse aiResponse = new ObjectMapper().readValue(jsonResponse.toString(), OpenAIResponse.class); + if (!aiResponse.getSuccess()) { + setError(String.valueOf(aiResponse.getError().getCode()), aiResponse.getError().getMessage(), client, result); + } + return aiResponse; } else { String errorDescription = String.format("Error calling Enterprise AI API, StatusCode: %d, ReasonLine: %s", client.getStatusCode(), client.getReasonLine()); - addResultMessage("SAIA_ERROR_CALL", (byte)1, errorDescription, result); - logger.error(errorDescription); - logger.debug("Agent error response: " + client.getString()); + setError("SAIA_ERROR_CALL", errorDescription, client, result); } } catch (Exception e) { @@ -116,6 +118,12 @@ private static void getChunkedSaiaResponse(GXProcedure proc, HttpClient client, } } + private static void setError(String errorCode, String errorDescription, HttpClient client, CallResult result) { + addResultMessage(errorCode, (byte)1, errorDescription, result); + logger.error(errorDescription); + logger.debug("Agent error response: " + client.getString()); + } + private static void addResultMessage(String id, byte type, String description, CallResult result){ if (type == 1) result.setFail();