Skip to content

Commit 89a35f9

Browse files
committed
Implements support for multimodal content in Agent messages.
(cherry picked from commit 175cc47)
1 parent 912c2a9 commit 89a35f9

File tree

3 files changed

+46
-16
lines changed

3 files changed

+46
-16
lines changed

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

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,7 @@ public StructuredContentItem() {}
164164

165165
private String type;
166166
private String text;
167-
private String image_url;
168-
private String filename;
169-
private String file_data;
167+
private ImageUrl image_url;
170168

171169
public String getType() {
172170
return type;
@@ -184,28 +182,36 @@ public void setText(String text) {
184182
this.text = text;
185183
}
186184

187-
public String getImage_url() {
185+
public ImageUrl getImage_url() {
188186
return image_url;
189187
}
190188

191-
public void setImage_url(String imageURL) {
189+
public void setImage_url(ImageUrl imageURL) {
192190
this.image_url = imageURL;
193191
}
194192

195-
public String getFilename() {
196-
return filename;
197-
}
193+
@JsonInclude(JsonInclude.Include.NON_NULL)
194+
public static class ImageUrl {
195+
public ImageUrl() {}
198196

199-
public void setFilename(String filename) {
200-
this.filename = filename;
201-
}
197+
private String url;
198+
private String detail;
202199

203-
public String getFile_data() {
204-
return file_data;
205-
}
200+
public String getUrl() {
201+
return url;
202+
}
203+
204+
public void setUrl(String url) {
205+
this.url = url;
206+
}
206207

207-
public void setFile_data(String file_data) {
208-
this.file_data = file_data;
208+
public String getDetail() {
209+
return detail;
210+
}
211+
212+
public void setDetail(String detail) {
213+
this.detail = detail;
214+
}
209215
}
210216
}
211217

java/src/test/java/com/genexus/agent/Agent.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,26 @@ protected void privateExecute( )
4949
messages.add(message);
5050
AV5OutputVariable = callAgent( "The weatherman", Gxproperties, messages, new CallResult()) ;
5151
}
52+
else if (AV3Parameter1.equals("eval_image")) {
53+
OpenAIResponse.StructuredContent content = new OpenAIResponse.StructuredContent();
54+
ArrayList<OpenAIResponse.StructuredContentItem> items = new ArrayList<>();
55+
OpenAIResponse.StructuredContentItem contentItem = new OpenAIResponse.StructuredContentItem();
56+
contentItem.setType("text");
57+
contentItem.setText("De que se trata esta imagen");
58+
items.add(contentItem);
59+
OpenAIResponse.StructuredContentItem contentItem1 = new OpenAIResponse.StructuredContentItem();
60+
contentItem1.setType("image_url");
61+
OpenAIResponse.StructuredContentItem.ImageUrl imageURL = new OpenAIResponse.StructuredContentItem.ImageUrl();
62+
imageURL.setUrl("https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg");
63+
contentItem1.setImage_url(imageURL);
64+
items.add(contentItem1);
65+
content.setItems(items);
66+
OpenAIResponse.Message message = new OpenAIResponse.Message();
67+
message.setRole("user");
68+
message.setStructuredContent(content);
69+
messages.add(message);
70+
AV5OutputVariable = callAgent( "The weatherman", Gxproperties, messages, new CallResult()) ;
71+
}
5272
else if (AV3Parameter1.equals("chat_stream")) {
5373
OpenAIResponse.Message message = new OpenAIResponse.Message();
5474
message.setRole("user");

java/src/test/java/com/genexus/agent/TestAgent.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ public void testAPICallAgent() {
2626
new Agent(-1).execute( "chat", "", GXv_char5) ;
2727
System.out.println(GXv_char5[0]);
2828

29+
String[] GXv_char9 = new String[1] ;
30+
new Agent(-1).execute( "eval_image", "", GXv_char9) ;
31+
System.out.println(GXv_char9[0]);
32+
2933
String[] GXv_char8 = new String[1] ;
3034
new Agent(-1).execute( "chat_stream", "", GXv_char8) ;
3135

0 commit comments

Comments
 (0)