diff --git a/java/src/main/java/com/genexus/db/GXEmbedding.java b/java/src/main/java/com/genexus/db/GXEmbedding.java index 0565f37c5..cbff59261 100644 --- a/java/src/main/java/com/genexus/db/GXEmbedding.java +++ b/java/src/main/java/com/genexus/db/GXEmbedding.java @@ -60,31 +60,44 @@ public Float[] getFloatArray() { return embedding.toArray(new Float[0]); } - public static GXEmbedding generateEmbedding(GXEmbedding embeddingInfo, String text, GXBaseCollection Messages) { + public static GXEmbedding generateEmbedding(GXEmbedding embeddingInfo, String text, GXBaseCollection messages) { try { - List embedding = getEmbedding(embeddingInfo.getModel(), embeddingInfo.getDimensions(), text); + List embedding = getEmbedding(embeddingInfo.getModel(), embeddingInfo.getDimensions(), text, messages); embeddingInfo.setEmbedding(embedding); } catch (Exception ex) { - CommonUtil.ErrorToMessages("GenerateEmbedding Error", ex.getMessage(), Messages); + CommonUtil.ErrorToMessages("GenerateEmbedding Error", ex.getMessage(), messages); } return embeddingInfo; } - public static List getEmbedding(String model, int dimensions, String input) { + public static List getEmbedding(String model, int dimensions, String input, GXBaseCollection messages) { if (input.isEmpty()) return new ArrayList<>(); ArrayList inputList = new ArrayList<>(); inputList.add(input); - return getEmbedding(model, dimensions, inputList); + return getEmbedding(model, dimensions, inputList, messages); } - public static List getEmbedding(String model, int dimensions, ArrayList inputList) { + public static List getEmbedding(String model, int dimensions, ArrayList inputList, GXBaseCollection messages) { OpenAIRequest aiRequest = new OpenAIRequest(); aiRequest.setModel(model); aiRequest.setInput(inputList); aiRequest.setDimension(dimensions); - OpenAIResponse aiResponse = SaiaService.call(aiRequest, true, new CallResult()); + CallResult callResult = new CallResult(); + OpenAIResponse aiResponse = SaiaService.call(aiRequest, true, callResult); + + int i = 0 ; + while ( i < callResult.getMessages().size() ) + { + SdtMessages_Message message = new SdtMessages_Message(); + message.setgxTv_SdtMessages_Message_Id(callResult.getMessages().elementAt(i).getgxTv_SdtMessages_Message_Id()); + message.setgxTv_SdtMessages_Message_Type(callResult.getMessages().elementAt(i).getgxTv_SdtMessages_Message_Type()); + message.setgxTv_SdtMessages_Message_Description(callResult.getMessages().elementAt(i).getgxTv_SdtMessages_Message_Description()); + messages.add(message); + i++ ; + } + if (aiResponse != null) return aiResponse.getData().get(0).getEmbedding().stream() .map(Double::floatValue) diff --git a/java/src/test/java/com/genexus/embedding/GXEmbeddingTest.java b/java/src/test/java/com/genexus/embedding/GXEmbeddingTest.java index d4af124e3..b2950b018 100644 --- a/java/src/test/java/com/genexus/embedding/GXEmbeddingTest.java +++ b/java/src/test/java/com/genexus/embedding/GXEmbeddingTest.java @@ -19,7 +19,8 @@ public void EmbeddingTest(){ Connect.init(); LogManager.initialize("."); Application.init(GXcfg.class); - List embedding = GXEmbedding.getEmbedding("openai/text-embedding-3-small", 512, "Hello World"); + GXBaseCollection AV7Messages = new GXBaseCollection<>(); + List embedding = GXEmbedding.getEmbedding("openai/text-embedding-3-small", 512, "Hello World", AV7Messages); String result = embedding.stream() .map(String::valueOf) .collect(Collectors.joining(","));