Skip to content

Commit a02abfb

Browse files
committed
- Add Assitant Object support in Java Generator
- Change Embedding implementation to use common util classes to call saia.
1 parent 0267992 commit a02abfb

File tree

12 files changed

+433
-114
lines changed

12 files changed

+433
-114
lines changed

common/src/main/java/com/genexus/util/GXProperties.java

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

3-
import java.util.LinkedHashMap;
3+
import java.util.*;
44

55
import com.genexus.internet.IGxJSONSerializable;
66

@@ -10,8 +10,6 @@
1010
import com.genexus.CommonUtil;
1111
import com.genexus.SdtMessages_Message;
1212
import com.genexus.GXBaseCollection;
13-
import java.util.Iterator;
14-
import java.util.Map;
1513

1614
public class GXProperties implements IGxJSONSerializable {
1715
private LinkedHashMap < String, GXProperty > properties = new LinkedHashMap < > ();
@@ -118,6 +116,16 @@ public String toJSonString() {
118116
return jObj.toString();
119117
}
120118

119+
public List<GXProperty> getList() {
120+
List<GXProperty> list = new ArrayList<>();
121+
int i = 0;
122+
while (count() > i) {
123+
list.add(item(i));
124+
i++;
125+
}
126+
return list;
127+
}
128+
121129
public boolean fromJSonString(String s) {
122130
return fromJSonString(s, null);
123131
}

gxembedding/pom.xml

Lines changed: 0 additions & 27 deletions
This file was deleted.

gxembedding/src/main/java/com/genexus/embedding/EmbeddingService.java

Lines changed: 0 additions & 77 deletions
This file was deleted.

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111
import com.genexus.mock.GXMockProvider;
1212
import com.genexus.performance.ProcedureInfo;
1313
import com.genexus.performance.ProceduresInfo;
14-
import com.genexus.util.ReorgSubmitThreadPool;
15-
import com.genexus.util.SubmitThreadPool;
14+
import com.genexus.util.*;
15+
import com.genexus.util.saia.OpenAIRequest;
16+
import com.genexus.util.saia.OpenAIResponse;
17+
import com.genexus.util.saia.SaiaService;
1618

1719
public abstract class GXProcedure implements IErrorHandler, ISubmitteable {
1820
public abstract void initialize();
@@ -257,4 +259,14 @@ protected void mockExecute() {
257259
}
258260
privateExecute( );
259261
}
262+
263+
protected String callAssistant(String assistant, GXProperties properties, Object response) {
264+
OpenAIRequest aiRequest = new OpenAIRequest();
265+
aiRequest.setModel(String.format("saia:agent:%s", assistant));
266+
aiRequest.setVariables(properties.getList());
267+
OpenAIResponse aiResponse = SaiaService.call(aiRequest);
268+
if (aiResponse != null)
269+
return aiResponse.getChoices().get(0).getMessage().getContent();
270+
return "";
271+
}
260272
}

gxembedding/src/main/java/com/genexus/db/GXEmbedding.java renamed to java/src/main/java/com/genexus/db/GXEmbedding.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import com.genexus.CommonUtil;
44
import com.genexus.GXBaseCollection;
55
import com.genexus.SdtMessages_Message;
6-
import com.genexus.embedding.EmbeddingService;
6+
import com.genexus.util.saia.OpenAIRequest;
7+
import com.genexus.util.saia.OpenAIResponse;
8+
import com.genexus.util.saia.SaiaService;
79

810
import java.util.ArrayList;
911
import java.util.Arrays;
@@ -53,7 +55,7 @@ public Float[] getFloatArray() {
5355

5456
public static GXEmbedding generateEmbedding(GXEmbedding embeddingInfo, String text, GXBaseCollection<SdtMessages_Message> Messages) {
5557
try {
56-
List<Float> embedding = EmbeddingService.getInstance().getEmbedding(embeddingInfo.getModel(), embeddingInfo.getDimensions(), text);
58+
List<Float> embedding = getEmbedding(embeddingInfo.getModel(), embeddingInfo.getDimensions(), text);
5759
embeddingInfo.setEmbedding(embedding);
5860
}
5961
catch (Exception ex) {
@@ -62,6 +64,26 @@ public static GXEmbedding generateEmbedding(GXEmbedding embeddingInfo, String te
6264
return embeddingInfo;
6365
}
6466

67+
public static List<Float> getEmbedding(String model, int dimensions, String input) {
68+
List<String> inputList = new ArrayList<>();
69+
inputList.add(input);
70+
return getEmbedding(model, dimensions, inputList);
71+
}
72+
73+
public static List<Float> getEmbedding(String model, int dimensions, List<String> inputList) {
74+
OpenAIRequest aiRequest = new OpenAIRequest();
75+
aiRequest.setModel(model);
76+
aiRequest.setInput(inputList);
77+
aiRequest.setDimension(dimensions);
78+
OpenAIResponse aiResponse = SaiaService.call(aiRequest, true);
79+
if (aiResponse != null)
80+
return aiResponse.getData().get(0).getEmbedding().stream()
81+
.map(Double::floatValue)
82+
.collect(Collectors.toList());
83+
84+
return new ArrayList<>();
85+
}
86+
6587
public String toString()
6688
{
6789
return embedding.stream()
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package com.genexus.util.saia;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import com.fasterxml.jackson.annotation.JsonInclude;
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import com.genexus.util.GXProperty;
7+
8+
import java.util.List;
9+
10+
@JsonIgnoreProperties(ignoreUnknown = true)
11+
@JsonInclude(JsonInclude.Include.NON_NULL)
12+
public class OpenAIRequest {
13+
14+
@JsonProperty("model")
15+
private String model;
16+
17+
@JsonProperty("prompt")
18+
private String prompt;
19+
20+
@JsonProperty("input")
21+
private List<String> input;
22+
23+
@JsonProperty("max_tokens")
24+
private Integer maxTokens;
25+
26+
@JsonProperty("temperature")
27+
private Double temperature;
28+
29+
@JsonProperty("stream")
30+
private Boolean stream;
31+
32+
@JsonProperty("stop")
33+
private List<String> stop;
34+
35+
@JsonProperty("presence_penalty")
36+
private Double presencePenalty;
37+
38+
@JsonProperty("frequency_penalty")
39+
private Double frequencyPenalty;
40+
41+
@JsonProperty("user")
42+
private String user;
43+
44+
@JsonProperty("variables")
45+
private List<GXProperty> variables;
46+
47+
@JsonProperty("dimensions")
48+
private int dimension;
49+
50+
public String getModel() { return model; }
51+
public void setModel(String model) { this.model = model; }
52+
53+
public String getPrompt() { return prompt; }
54+
public void setPrompt(String prompt) { this.prompt = prompt; }
55+
56+
public List<String> getInput() { return input; }
57+
public void setInput(List<String> input) { this.input = input; }
58+
59+
public Integer getMaxTokens() { return maxTokens; }
60+
public void setMaxTokens(Integer maxTokens) { this.maxTokens = maxTokens; }
61+
62+
public Double getTemperature() { return temperature; }
63+
public void setTemperature(Double temperature) { this.temperature = temperature; }
64+
65+
public Boolean getStream() { return stream; }
66+
public void setStream(Boolean stream) { this.stream = stream; }
67+
68+
public List<String> getStop() { return stop; }
69+
public void setStop(List<String> stop) { this.stop = stop; }
70+
71+
public Double getPresencePenalty() { return presencePenalty; }
72+
public void setPresencePenalty(Double presencePenalty) { this.presencePenalty = presencePenalty; }
73+
74+
public Double getFrequencyPenalty() { return frequencyPenalty; }
75+
public void setFrequencyPenalty(Double frequencyPenalty) { this.frequencyPenalty = frequencyPenalty; }
76+
77+
public String getUser() { return user; }
78+
public void setUser(String user) { this.user = user; }
79+
80+
public List<GXProperty> getVariables() { return variables; }
81+
public void setVariables(List<GXProperty> variables) { this.variables = variables; }
82+
83+
public int getDimension() { return dimension; }
84+
public void setDimension(int dimension) { this.dimension = dimension; }
85+
}

0 commit comments

Comments
 (0)