Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions java/src/main/java/com/genexus/util/saia/OpenAIResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,15 @@ public class OpenAIResponse {

@JsonProperty("data")
private ArrayList<DataItem> 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; }
Expand All @@ -53,6 +62,15 @@ public class OpenAIResponse {

public ArrayList<DataItem> getData() { return data; }
public void setData(ArrayList<DataItem> 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 {
Expand Down Expand Up @@ -301,4 +319,22 @@ public static class DataItem {
public ArrayList<Double> getEmbedding() { return embedding; }
public void setEmbedding(ArrayList<Double> 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; }
}
}
16 changes: 12 additions & 4 deletions java/src/main/java/com/genexus/util/saia/SaiaService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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();
Expand Down
Loading