Skip to content

Commit 3784ed4

Browse files
committed
made the output of the image results as a list of strings & removed dependency on .properties file
1 parent 189ba84 commit 3784ed4

File tree

6 files changed

+42
-150
lines changed

6 files changed

+42
-150
lines changed

src/main/java/io/github/artemnefedov/javaai/service/OpenAI.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,16 @@ public interface OpenAI {
4040
* @param prompt parameters for text generation.
4141
* @return the response from the API as a string
4242
*/
43-
public String generateText(String prompt);
43+
String generateText(String prompt);
4444

4545
/**
4646
* The method that generates the image interacts with the
4747
* <a href="https://platform.openai.com/docs/api-reference/images/create">Create image</a>.
4848
*
4949
* @param prompt parameters for image generation.
50-
* @return the response from the API as a string
50+
* @return the response from the API as a List of strings
5151
*/
52-
public String generateImage(String prompt);
52+
List<String> generateImage(String prompt);
5353

5454
/**
5555
* The method that generates text, taking into account chat messages,
@@ -58,40 +58,40 @@ public interface OpenAI {
5858
* @param messages List of {@link ChatMessage} containing your chat by role.
5959
* @return the response from the API as a string
6060
*/
61-
public String chat(List<ChatMessage> messages);
61+
String chat(List<ChatMessage> messages);
6262

6363
/**
6464
* Sets your dto to work with the API
6565
* @param completions dto with your options.
6666
*/
67-
public void customCompetitionsConfig(Completions completions);
67+
void customCompetitionsConfig(Completions completions);
6868

6969
/**
7070
* Sets your dto to work with the API
7171
*
7272
* @param imageBuilder dto with your options.
7373
*/
74-
public void customImageBuilderConfig(ImageBuilder imageBuilder);
74+
void customImageBuilderConfig(ImageBuilder imageBuilder);
7575

7676
/**
7777
* Sets your dto to work with the API
7878
*
7979
* @param chat dto with your options.
8080
*/
81-
public void customChatConfig(Chat chat);
81+
void customChatConfig(Chat chat);
8282

8383
/**
8484
* Sets default options for dto, usually this should be enough to get the job done.
8585
*/
86-
public void defaultCompetitionsConfig();
86+
void defaultCompetitionsConfig();
8787

8888
/**
8989
* Sets default options for dto, usually this should be enough to get the job done.
9090
*/
91-
public void defaultImageBuilderConfig();
91+
void defaultImageBuilderConfig();
9292

9393
/**
9494
* Sets default options for dto, usually this should be enough to get the job done.
9595
*/
96-
public void defaultChatConfig();
96+
void defaultChatConfig();
9797
}

src/main/java/io/github/artemnefedov/javaai/service/impl/OpenAIImplementation.java

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
package io.github.artemnefedov.javaai.service.impl;
2626

27+
import io.github.artemnefedov.javaai.dto.image.ImageData;
2728
import io.github.artemnefedov.javaai.dto.image.request.ImageBuilder;
2829
import io.github.artemnefedov.javaai.dto.image.response.ImageModelResponse;
2930
import io.github.artemnefedov.javaai.dto.language.request.Chat;
@@ -33,10 +34,10 @@
3334
import io.github.artemnefedov.javaai.dto.language.request.Completions;
3435
import io.github.artemnefedov.javaai.dto.language.response.LanguageModelResponse;
3536
import io.github.artemnefedov.javaai.service.OpenAI;
36-
import io.github.artemnefedov.javaai.util.Config;
3737
import lombok.Getter;
3838
import lombok.Setter;
3939

40+
import java.util.ArrayList;
4041
import java.util.List;
4142

4243
/**
@@ -46,16 +47,10 @@
4647
@Setter
4748
public class OpenAIImplementation implements OpenAI {
4849

49-
private String baseURL = Config.getInstance()
50-
.getProperties("url.openai.base");
51-
private String compURL = baseURL + Config.getInstance()
52-
.getProperties("url.openai.completions");
53-
private String imgBuilderURL = baseURL + Config.getInstance()
54-
.getProperties("url.openai.image_generator");
55-
private String chatURL = baseURL + Config.getInstance()
56-
.getProperties("url.openai.chat");
57-
58-
50+
private String baseURL = "https://api.openai.com";
51+
private String compURL = baseURL + "/v1/completions";
52+
private String imgBuilderURL = baseURL + "/v1/images/generations";
53+
private String chatURL = baseURL + "/v1/chat/completions";
5954

6055
protected Completions completions;
6156
protected ImageBuilder imageBuilder;
@@ -84,10 +79,12 @@ public String generateText(String prompt) {
8479
}
8580

8681
@Override
87-
public String generateImage(String prompt) {
82+
public List<String> generateImage(String prompt) {
8883

84+
List<String> images = new ArrayList<>();
8985

9086
if (this.imageBuilder == null) {
87+
9188
defaultImageBuilderConfig();
9289
}
9390

@@ -96,19 +93,30 @@ public String generateImage(String prompt) {
9693
ImageModelResponse imageResponse = connections
9794
.postStream(imageBuilder, imgBuilderURL, ImageModelResponse.class);
9895

99-
if (imageBuilder.getResponse_format().equals("url")) {
10096

101-
return imageResponse.getData().get(0).getUrl();
102-
} else {
97+
if (imageBuilder.getResponse_format().equals("url")) {
10398

104-
return imageResponse.getData().get(0).getB64Json();
105-
}
99+
for (ImageData data : imageResponse.getData()) {
100+
101+
images.add(data.getUrl());
102+
}
103+
} else {
104+
105+
for (ImageData data : imageResponse.getData()) {
106+
107+
images.add(data.getB64Json());
108+
}
109+
}
110+
111+
return images;
106112
}
107113

114+
108115
@Override
109116
public String chat(List<ChatMessage> messages) {
110117

111118
if (this.chat == null) {
119+
112120
defaultChatConfig();
113121
}
114122

src/main/java/io/github/artemnefedov/javaai/util/Config.java

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

src/main/resources/config.properties

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

src/test/java/io/github/artemnefedov/javaai/service/OpenAITest.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@
2727
import io.github.artemnefedov.javaai.dto.language.ChatMessage;
2828
import io.github.artemnefedov.javaai.dto.language.request.Completions;
2929
import io.github.artemnefedov.javaai.service.impl.OpenAIImplementation;
30-
import io.github.artemnefedov.javaai.util.Config;
3130
import org.junit.jupiter.api.AfterEach;
32-
import org.junit.jupiter.api.BeforeEach;
3331
import org.junit.jupiter.api.Test;
3432

3533
import java.util.ArrayList;
@@ -41,14 +39,7 @@
4139

4240
class OpenAITest {
4341

44-
OpenAI openAI = new OpenAIImplementation(null);
45-
46-
47-
@BeforeEach
48-
void newOpenAI() {
49-
50-
OpenAI openAI = new OpenAIImplementation(Config.getInstance().getProperties("api_key.openai"));
51-
}
42+
OpenAI openAI = new OpenAIImplementation("API_KEY");
5243

5344
@Test
5445
void generateTextTest() {
@@ -59,8 +50,12 @@ void generateTextTest() {
5950
@Test
6051
void generateImageTest() {
6152

62-
String response = openAI.generateImage("A cute baby sea otter");
63-
assertTrue( response != null && response.matches("^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"));
53+
List<String> response = openAI.generateImage("A cute baby sea otter");
54+
55+
for (String url: response) {
56+
assertTrue( url != null && url.matches("^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"));
57+
}
58+
6459
}
6560

6661
@Test

src/test/resources/config.properties

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

0 commit comments

Comments
 (0)