Skip to content

Commit c560d5d

Browse files
committed
Implement CallResult External Object to use in Agent Object
1 parent f1e678e commit c560d5d

File tree

5 files changed

+57
-9
lines changed

5 files changed

+57
-9
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.genexus.util;
2+
3+
import com.genexus.GXBaseCollection;
4+
import com.genexus.SdtMessages_Message;
5+
6+
public class CallResult {
7+
private boolean success = true;
8+
private boolean fail;
9+
private final GXBaseCollection<SdtMessages_Message> messages = new GXBaseCollection<>();
10+
11+
public boolean success() {
12+
return success;
13+
}
14+
15+
public void setFail() {
16+
fail = true;
17+
success =false;
18+
}
19+
20+
public boolean fail() {
21+
return fail;
22+
}
23+
24+
public void addMessage(SdtMessages_Message message) {
25+
messages.add(message);
26+
}
27+
public GXBaseCollection<SdtMessages_Message> getmessages() {
28+
return messages;
29+
}
30+
}

java/src/main/java/com/genexus/GXProcedure.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,11 +260,11 @@ protected void mockExecute() {
260260
privateExecute( );
261261
}
262262

263-
protected String callAssistant(String assistant, GXProperties properties, Object response) {
263+
protected String callAssistant(String assistant, GXProperties properties, CallResult result) {
264264
OpenAIRequest aiRequest = new OpenAIRequest();
265265
aiRequest.setModel(String.format("saia:agent:%s", assistant));
266266
aiRequest.setVariables(properties.getList());
267-
OpenAIResponse aiResponse = SaiaService.call(aiRequest);
267+
OpenAIResponse aiResponse = SaiaService.call(aiRequest, result);
268268
if (aiResponse != null)
269269
return aiResponse.getChoices().get(0).getMessage().getContent();
270270
return "";

java/src/main/java/com/genexus/db/GXEmbedding.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.genexus.CommonUtil;
44
import com.genexus.GXBaseCollection;
55
import com.genexus.SdtMessages_Message;
6+
import com.genexus.util.CallResult;
67
import com.genexus.util.saia.OpenAIRequest;
78
import com.genexus.util.saia.OpenAIResponse;
89
import com.genexus.util.saia.SaiaService;
@@ -75,7 +76,7 @@ public static List<Float> getEmbedding(String model, int dimensions, List<String
7576
aiRequest.setModel(model);
7677
aiRequest.setInput(inputList);
7778
aiRequest.setDimension(dimensions);
78-
OpenAIResponse aiResponse = SaiaService.call(aiRequest, true);
79+
OpenAIResponse aiResponse = SaiaService.call(aiRequest, true, new CallResult());
7980
if (aiResponse != null)
8081
return aiResponse.getData().get(0).getEmbedding().stream()
8182
.map(Double::floatValue)

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

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
11
package com.genexus.util.saia;
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import com.genexus.SdtMessages_Message;
45
import com.genexus.common.interfaces.SpecificImplementation;
56
import com.genexus.diagnostics.core.ILogger;
67
import com.genexus.diagnostics.core.LogManager;
78
import com.genexus.internet.HttpClient;
89
import org.json.JSONObject;
10+
import com.genexus.util.CallResult;
911

1012
public class SaiaService {
1113
private static final ILogger logger = LogManager.getLogger(SaiaService.class);
1214
private static final String apiKey = (String) SpecificImplementation.Application.getProperty("AI_PROVIDER_API_KEY", "");;
1315
private static final String aiProvider = (String) SpecificImplementation.Application.getProperty("AI_PROVIDER", "");
1416

15-
public static OpenAIResponse call(OpenAIRequest request) {
16-
return call(request, false);
17+
public static OpenAIResponse call(OpenAIRequest request, CallResult result) {
18+
return call(request, false, result);
1719
}
1820

19-
public static OpenAIResponse call(OpenAIRequest request, boolean isEmbedding) {
21+
public static OpenAIResponse call(OpenAIRequest request, boolean isEmbedding, CallResult result) {
2022
try {
2123
String jsonRequest = new ObjectMapper().writeValueAsString(request);
2224

@@ -33,14 +35,28 @@ public static OpenAIResponse call(OpenAIRequest request, boolean isEmbedding) {
3335
return new ObjectMapper().readValue(jsonResponse.toString(), OpenAIResponse.class);
3436
}
3537
else {
36-
logger.error(String.format("Error calling Enterprise AI API, StatusCode: %d, ReasonLine: %s",
38+
String errorDescription = String.format("Error calling Enterprise AI API, StatusCode: %d, ReasonLine: %s",
3739
client.getStatusCode(),
38-
client.getReasonLine()));
40+
client.getReasonLine());
41+
addResultMessage("SAIA_ERROR_CALL", (byte)1, errorDescription, result);
42+
logger.error(errorDescription);
3943
}
4044
}
4145
catch (Exception e) {
46+
addResultMessage("SAIA_EXCEPTION", (byte)1, e.getMessage(), result);
4247
logger.error("Calling Enterprise AI API Error", e);
4348
}
4449
return null;
4550
}
51+
52+
53+
private static void addResultMessage(String id, byte type, String description, CallResult result){
54+
if (type == 1)
55+
result.setFail();
56+
SdtMessages_Message msg = new SdtMessages_Message();
57+
msg.setgxTv_SdtMessages_Message_Id(id);
58+
msg.setgxTv_SdtMessages_Message_Type(type);
59+
msg.setgxTv_SdtMessages_Message_Description(description);
60+
61+
}
4662
}

java/src/test/java/com/genexus/assistant/Assistant.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.genexus.assistant;
22

33
import com.genexus.*;
4+
import com.genexus.util.CallResult;
45

56
public final class Assistant extends GXProcedure
67
{
@@ -32,7 +33,7 @@ protected void privateExecute( )
3233
Gxproperties.set("&Parameter1", AV3Parameter1);
3334
Gxproperties.set("&Parameter2", AV4Parameter2);
3435
Gxproperties.set("$context", "Los Angeles");
35-
AV5OutputVariable = callAssistant( "The weatherman", Gxproperties, null) ;
36+
AV5OutputVariable = callAssistant( "The weatherman", Gxproperties, new CallResult()) ;
3637
cleanup();
3738
}
3839

0 commit comments

Comments
 (0)