Skip to content

Commit 20b7949

Browse files
iroquetaBeta Bot
authored andcommitted
Cherry pick branch 'genexuslabs:fix/saia-error-handling' into beta
1 parent 2621d8e commit 20b7949

2 files changed

Lines changed: 48 additions & 4 deletions

File tree

java/src/main/java/com/genexus/util/saia/OpenAIResponse.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,15 @@ public class OpenAIResponse {
3232

3333
@JsonProperty("data")
3434
private ArrayList<DataItem> data;
35+
36+
@JsonProperty("error")
37+
private Error error;
38+
39+
@JsonProperty("success")
40+
private Boolean success = true;
41+
42+
@JsonProperty("status")
43+
private String status;
3544

3645
public String getId() { return id; }
3746
public void setId(String id) { this.id = id; }
@@ -53,6 +62,15 @@ public class OpenAIResponse {
5362

5463
public ArrayList<DataItem> getData() { return data; }
5564
public void setData(ArrayList<DataItem> data) { this.data = data; }
65+
66+
public Error getError() { return error; }
67+
public void setError(Error error) { this.error = error; }
68+
69+
public Boolean getSuccess() { return success; }
70+
public void setSuccess(Boolean success) { this.success = success; }
71+
72+
public String getStatus() { return status; }
73+
public void setStatus(String status) { this.status = status; }
5674

5775
@JsonIgnoreProperties(ignoreUnknown = true)
5876
public static class Choice {
@@ -301,4 +319,22 @@ public static class DataItem {
301319
public ArrayList<Double> getEmbedding() { return embedding; }
302320
public void setEmbedding(ArrayList<Double> embedding) { this.embedding = embedding; }
303321
}
322+
323+
@JsonIgnoreProperties(ignoreUnknown = true)
324+
public static class Error {
325+
326+
@JsonProperty("code")
327+
private int code;
328+
329+
@JsonProperty("message")
330+
private String message;
331+
332+
public Error() {}
333+
334+
public int getCode() { return code; }
335+
public void setCode(int code) { this.code = code; }
336+
337+
public String getMessage() { return message; }
338+
public void setMessage(String message) { this.message = message; }
339+
}
304340
}

java/src/main/java/com/genexus/util/saia/SaiaService.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,17 @@ public static OpenAIResponse call(GXProcedure proc, OpenAIRequest request, boole
5959

6060
logger.debug("Agent response: " + saiaResponse);
6161
JSONObject jsonResponse = new JSONObject(saiaResponse);
62-
return new ObjectMapper().readValue(jsonResponse.toString(), OpenAIResponse.class);
62+
OpenAIResponse aiResponse = new ObjectMapper().readValue(jsonResponse.toString(), OpenAIResponse.class);
63+
if (!aiResponse.getSuccess()) {
64+
setError(String.valueOf(aiResponse.getError().getCode()), aiResponse.getError().getMessage(), client, result);
65+
}
66+
return aiResponse;
6367
}
6468
else {
6569
String errorDescription = String.format("Error calling Enterprise AI API, StatusCode: %d, ReasonLine: %s",
6670
client.getStatusCode(),
6771
client.getReasonLine());
68-
addResultMessage("SAIA_ERROR_CALL", (byte)1, errorDescription, result);
69-
logger.error(errorDescription);
70-
logger.debug("Agent error response: " + client.getString());
72+
setError("SAIA_ERROR_CALL", errorDescription, client, result);
7173
}
7274
}
7375
catch (Exception e) {
@@ -116,6 +118,12 @@ private static void getChunkedSaiaResponse(GXProcedure proc, HttpClient client,
116118
}
117119
}
118120

121+
private static void setError(String errorCode, String errorDescription, HttpClient client, CallResult result) {
122+
addResultMessage(errorCode, (byte)1, errorDescription, result);
123+
logger.error(errorDescription);
124+
logger.debug("Agent error response: " + client.getString());
125+
}
126+
119127
private static void addResultMessage(String id, byte type, String description, CallResult result){
120128
if (type == 1)
121129
result.setFail();

0 commit comments

Comments
 (0)