From acc75bd6cc5a0cc14aa336993a5c0df8cbf9ca75 Mon Sep 17 00:00:00 2001 From: Ahmad Barqawi Date: Tue, 17 Jan 2023 23:17:49 +0000 Subject: [PATCH 1/7] update the config file add cohere links --- .../src/main/resources/config.properties | 6 +++++- core/com.intellijava.core/target/classes/config.properties | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/core/com.intellijava.core/src/main/resources/config.properties b/core/com.intellijava.core/src/main/resources/config.properties index 74d398c..1006966 100644 --- a/core/com.intellijava.core/src/main/resources/config.properties +++ b/core/com.intellijava.core/src/main/resources/config.properties @@ -1,4 +1,8 @@ url.openai.base=https://api.openai.com url.openai.completions=/v1/completions url.openai.imagegenerate=/v1/images/generations -url.openai.testkey= \ No newline at end of file +url.openai.testkey= +url.cohere.base=https://api.cohere.ai +url.cohere.completions=/generate +url.cohere.version=2022-12-06 +url.cohere.testkey=SWcvjpq7tCetHIuNaQL35CWXBOr4WIkaOR7EfmZ8 \ No newline at end of file diff --git a/core/com.intellijava.core/target/classes/config.properties b/core/com.intellijava.core/target/classes/config.properties index 74d398c..1006966 100644 --- a/core/com.intellijava.core/target/classes/config.properties +++ b/core/com.intellijava.core/target/classes/config.properties @@ -1,4 +1,8 @@ url.openai.base=https://api.openai.com url.openai.completions=/v1/completions url.openai.imagegenerate=/v1/images/generations -url.openai.testkey= \ No newline at end of file +url.openai.testkey= +url.cohere.base=https://api.cohere.ai +url.cohere.completions=/generate +url.cohere.version=2022-12-06 +url.cohere.testkey=SWcvjpq7tCetHIuNaQL35CWXBOr4WIkaOR7EfmZ8 \ No newline at end of file From cd8baf5a89486228fca9b64ab5c50b4165f35d6b Mon Sep 17 00:00:00 2001 From: Ahmad Barqawi Date: Tue, 17 Jan 2023 23:25:46 +0000 Subject: [PATCH 2/7] Create CohereTextResponse.java Add the response model for Cohere generate API. --- .../core/model/CohereTextResponse.java | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereTextResponse.java diff --git a/core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereTextResponse.java b/core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereTextResponse.java new file mode 100644 index 0000000..052233c --- /dev/null +++ b/core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereTextResponse.java @@ -0,0 +1,114 @@ +package com.intellijava.core.model; + +import java.util.List; + +/** + * + * CohereTextResponse is a model class used to parse the response from the Cohere text API. + * + * @author github.com/Barqawiz + * + */ +public class CohereTextResponse { + + /** A unique identifier for the response.*/ + private String id; + private List generations; + private String prompt; + + public static class Generation { + private String id; + private String text; + + /** + * Get the unique identifier for the generation. + * + * @return the unique identifier for the generation. + */ + public String getId() { + return id; + } + + /** + * Sets the unique identifier for the generation. + * + * @param id the unique identifier for the generation. + */ + public void setId(String id) { + this.id = id; + } + + /** + * Get the model generated text. + * + * @return the generated text. + */ + public String getText() { + return text; + } + + /** + * Sets the model generated text. + * + * @param text the generated text. + */ + public void setText(String text) { + this.text = text; + } + } + + /** + * Get the unique identifier for the response. + * + * @return the unique identifier for the response. + */ + public String getId() { + return id; + } + + /** + * Sets the unique identifier for the response. + * + * @param id the unique identifier for the response. + */ + public void setId(String id) { + this.id = id; + } + + /** + * Get the list of generated texts. + * + * @return the list of generated texts. + */ + public List getGenerations() { + return generations; + } + + /** + * Sets the list of generated texts. + * + * @param generations the list of generated texts. + */ + public void setGenerations(List generations) { + this.generations = generations; + } + + /** + * + * Get the user prompt. + * + * @return prompt the user input. + */ + public String getPrompt() { + return prompt; + } + + /** + * Sets the user prompt. + * + * @param prompt the user input. + */ + public void setPrompt(String prompt) { + this.prompt = prompt; + } +} From 3c2a6ebd37776f164e6d12116aef3e8e2d91133f Mon Sep 17 00:00:00 2001 From: Ahmad Barqawi Date: Wed, 18 Jan 2023 20:39:43 +0000 Subject: [PATCH 3/7] add support Cohere API wrapper - implement CohereAIWrapper. - update the configurations to support Cohere requirements. - implement supporting classes like unit testing and response handler. - Rename old files to become more flexible with multi model vision. - clean API string. --- ...ponse.java => CohereLanguageResponse.java} | 21 +---- .../core/model/input/LanguageModelInput.java | 10 ++- .../core/wrappers/CohereAIWrapper.java | 77 +++++++++++++++++ .../src/main/resources/config.properties | 2 +- .../core/CohereModelConnectionTest.java | 85 +++++++++++++++++++ ...st.java => OpenaiModelConnectionTest.java} | 2 +- .../target/classes/config.properties | 2 +- 7 files changed, 175 insertions(+), 24 deletions(-) rename core/com.intellijava.core/src/main/java/com/intellijava/core/model/{CohereTextResponse.java => CohereLanguageResponse.java} (82%) create mode 100644 core/com.intellijava.core/src/main/java/com/intellijava/core/wrappers/CohereAIWrapper.java create mode 100644 core/com.intellijava.core/src/test/java/com/intellijava/core/CohereModelConnectionTest.java rename core/com.intellijava.core/src/test/java/com/intellijava/core/{RemoteModelConnectionTest.java => OpenaiModelConnectionTest.java} (99%) diff --git a/core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereTextResponse.java b/core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereLanguageResponse.java similarity index 82% rename from core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereTextResponse.java rename to core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereLanguageResponse.java index 052233c..3b05cb5 100644 --- a/core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereTextResponse.java +++ b/core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereLanguageResponse.java @@ -9,10 +9,9 @@ * @author github.com/Barqawiz * */ -public class CohereTextResponse { +public class CohereLanguageResponse extends BaseRemoteModel{ /** A unique identifier for the response.*/ - private String id; private List generations; private String prompt; @@ -57,24 +56,6 @@ public void setText(String text) { } } - /** - * Get the unique identifier for the response. - * - * @return the unique identifier for the response. - */ - public String getId() { - return id; - } - - /** - * Sets the unique identifier for the response. - * - * @param id the unique identifier for the response. - */ - public void setId(String id) { - this.id = id; - } - /** * Get the list of generated texts. * diff --git a/core/com.intellijava.core/src/main/java/com/intellijava/core/model/input/LanguageModelInput.java b/core/com.intellijava.core/src/main/java/com/intellijava/core/model/input/LanguageModelInput.java index 831ff5d..2c7834f 100644 --- a/core/com.intellijava.core/src/main/java/com/intellijava/core/model/input/LanguageModelInput.java +++ b/core/com.intellijava.core/src/main/java/com/intellijava/core/model/input/LanguageModelInput.java @@ -4,6 +4,10 @@ * * LanguageModelInput handle the input parameters for the majority of the remote language models. * + * Language models documentations: + * - Openai : https://beta.openai.com/docs/api-reference/completions. + * - Cohere : https://docs.cohere.ai/reference/generate + * * @author github.com/Barqawiz * */ @@ -45,7 +49,11 @@ public Builder(String prompt) { /** * Setter for model. - * @param model the model name. The largest OpenAI model is text-davinci-002. + * @param model the model name. + * + * The largest OpenAI model is text-davinci-003. + * The largest cohere model is xlarge. + * * @return instance of Builder */ public Builder setModel(String model) { diff --git a/core/com.intellijava.core/src/main/java/com/intellijava/core/wrappers/CohereAIWrapper.java b/core/com.intellijava.core/src/main/java/com/intellijava/core/wrappers/CohereAIWrapper.java new file mode 100644 index 0000000..9ca36fb --- /dev/null +++ b/core/com.intellijava.core/src/main/java/com/intellijava/core/wrappers/CohereAIWrapper.java @@ -0,0 +1,77 @@ +package com.intellijava.core.wrappers; + +import java.io.IOException; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.Map; + +import com.intellijava.core.model.BaseRemoteModel; +import com.intellijava.core.model.CohereLanguageResponse; +import com.intellijava.core.model.OpenaiLanguageResponse; +import com.intellijava.core.utils.Config2; +import com.intellijava.core.utils.ConnHelper; + +/** + * + * + * @author github.com/Barqawiz + * + */ +public class CohereAIWrapper implements LanguageModelInterface{ + + private final String API_BASE_URL = Config2.getInstance().getProperty("url.cohere.base"); + private final String COHERE_VERSION = Config2.getInstance().getProperty("url.cohere.version"); + private String API_KEY; + + /** + * CohereAIWrapper constructor with the API key + * + * @param apiKey cohere API key, generate if from your account. + */ + public CohereAIWrapper(String apiKey) { + this.API_KEY = apiKey; + } + + /** + * + * Generate text from remote large language model based on the received prompt. + * + * @param params key and value for the API parameters + * model the model name, either medium or xlarge. + * prompt text of the required action or the question. + * temperature higher values means more risks and creativity. + * max_tokens maximum size of the model input and output. + * @return BaseRemoteModel for model response + * @throws IOException if there is an error when connecting to the OpenAI API. + */ + @Override + public BaseRemoteModel generateText(Map params) throws IOException { + + String url = API_BASE_URL + Config2.getInstance().getProperty("url.cohere.completions"); + + String json = ConnHelper.convertMaptToJson(params); + + HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setRequestProperty("Authorization", "Bearer " + API_KEY); + connection.setRequestProperty("Cohere-Version", COHERE_VERSION); + connection.setDoOutput(true); + + try (OutputStream outputStream = connection.getOutputStream()) { + outputStream.write(json.getBytes(StandardCharsets.UTF_8)); + } + + if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) { + String errorMessage = ConnHelper.getErrorMessage(connection); + throw new IOException(errorMessage); + } + + // get the response and convert to model + CohereLanguageResponse resModel = ConnHelper.convertSteamToModel(connection.getInputStream(), CohereLanguageResponse.class); + return resModel; + } + +} diff --git a/core/com.intellijava.core/src/main/resources/config.properties b/core/com.intellijava.core/src/main/resources/config.properties index 1006966..5e0ff7f 100644 --- a/core/com.intellijava.core/src/main/resources/config.properties +++ b/core/com.intellijava.core/src/main/resources/config.properties @@ -5,4 +5,4 @@ url.openai.testkey= url.cohere.base=https://api.cohere.ai url.cohere.completions=/generate url.cohere.version=2022-12-06 -url.cohere.testkey=SWcvjpq7tCetHIuNaQL35CWXBOr4WIkaOR7EfmZ8 \ No newline at end of file +url.cohere.testkey= \ No newline at end of file diff --git a/core/com.intellijava.core/src/test/java/com/intellijava/core/CohereModelConnectionTest.java b/core/com.intellijava.core/src/test/java/com/intellijava/core/CohereModelConnectionTest.java new file mode 100644 index 0000000..33eb165 --- /dev/null +++ b/core/com.intellijava.core/src/test/java/com/intellijava/core/CohereModelConnectionTest.java @@ -0,0 +1,85 @@ +package com.intellijava.core; + +import static org.junit.Assert.fail; + +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.Test; +import com.intellijava.core.model.CohereLanguageResponse; +import com.intellijava.core.model.CohereLanguageResponse.Generation; +import com.intellijava.core.utils.Config2; +import com.intellijava.core.wrappers.CohereAIWrapper; + +public class CohereModelConnectionTest { + + /** + * coherKey - change the coherKey + */ + private final String coherKey = Config2.getInstance().getProperty("url.cohere.testkey"); + + + @Test + public void testLanguageWrapper() { + + // prepare the object + CohereAIWrapper cohereWrapper = new CohereAIWrapper(coherKey); + + // prepare the prompt with training data + String targetIndustryIdea = "electric cars"; + String prompt = "This program generates startup idea and name given the industry." + + "\n\nIndustry: Workplace" + + "\nStartup Idea: A platform that generates slide deck contents automatically based on a given outline" + + "\nStartup Name: Deckerize" + + "\n--" + + "\nIndustry: Home Decor" + + "\nStartup Idea: An app that calculates the best position of your indoor plants for your apartment" + + "\nStartup Name: Planteasy" + + "\n--" + + "\nIndustry: Healthcare" + + "\nStartup Idea: A hearing aid for the elderly that automatically adjusts its levels and with a battery lasting a whole week" + + "\nStartup Name: Hearspan" + + "\n\n--" + + "\nIndustry: Education" + + "\nStartup Idea: An online school that lets students mix and match their own curriculum based on their interests and goals" + + "\nStartup Name: Prime Age" + + "\n\n--" + + "\nIndustry: {industry}".replace("{industry}", targetIndustryIdea); + + // prepare the input parameters + Map params = new HashMap<>(); + params.put("prompt", prompt); + params.put("model", "xlarge"); + params.put("max_tokens", 40); + params.put("truncate", "END"); + params.put("return_likelihoods", "NONE"); + + + + // call the API + try { + if (coherKey.isBlank()) return; + + CohereLanguageResponse resModel = (CohereLanguageResponse) cohereWrapper.generateText(params); + + List responses = resModel.getGenerations(); + + + assert responses.size() > 0; + + for (Generation data: responses) { + System.out.println(data.getText().toString()); + } + + + } catch (IOException e) { + if (coherKey.isBlank()) { + System.out.print("testLanguageWrapper: set the API key to run the test case."); + } else { + fail("testLanguageWrapper failed with exception: " + e.getMessage()); + } + } + } + +} diff --git a/core/com.intellijava.core/src/test/java/com/intellijava/core/RemoteModelConnectionTest.java b/core/com.intellijava.core/src/test/java/com/intellijava/core/OpenaiModelConnectionTest.java similarity index 99% rename from core/com.intellijava.core/src/test/java/com/intellijava/core/RemoteModelConnectionTest.java rename to core/com.intellijava.core/src/test/java/com/intellijava/core/OpenaiModelConnectionTest.java index b5cf7e5..e18743b 100644 --- a/core/com.intellijava.core/src/test/java/com/intellijava/core/RemoteModelConnectionTest.java +++ b/core/com.intellijava.core/src/test/java/com/intellijava/core/OpenaiModelConnectionTest.java @@ -36,7 +36,7 @@ /** * Unit test for Remote Language Model */ -public class RemoteModelConnectionTest { +public class OpenaiModelConnectionTest { /** * openaiKey - change the openaiKey diff --git a/core/com.intellijava.core/target/classes/config.properties b/core/com.intellijava.core/target/classes/config.properties index 1006966..5e0ff7f 100644 --- a/core/com.intellijava.core/target/classes/config.properties +++ b/core/com.intellijava.core/target/classes/config.properties @@ -5,4 +5,4 @@ url.openai.testkey= url.cohere.base=https://api.cohere.ai url.cohere.completions=/generate url.cohere.version=2022-12-06 -url.cohere.testkey=SWcvjpq7tCetHIuNaQL35CWXBOr4WIkaOR7EfmZ8 \ No newline at end of file +url.cohere.testkey= \ No newline at end of file From 6007021f6711e64598d564fc944fc3311fe2f9b8 Mon Sep 17 00:00:00 2001 From: Ahmad Barqawi Date: Wed, 18 Jan 2023 22:36:50 +0000 Subject: [PATCH 4/7] update RemoteLanguageModel to support cohere and enhance the design - Update the model names to be more flexible. - Update RemoteLanguageModel to support CohereLanguageResponse. - Implement unit testing cases. - Update the library version. --- core/com.intellijava.core/pom.xml | 2 +- .../core/controller/RemoteLanguageModel.java | 208 +++++++++++++----- .../core/model/SupportedLangModels.java | 5 + .../core/CohereModelConnectionTest.java | 132 ++++++----- 4 files changed, 244 insertions(+), 103 deletions(-) create mode 100644 core/com.intellijava.core/src/main/java/com/intellijava/core/model/SupportedLangModels.java diff --git a/core/com.intellijava.core/pom.xml b/core/com.intellijava.core/pom.xml index 624725c..4ae96f6 100644 --- a/core/com.intellijava.core/pom.xml +++ b/core/com.intellijava.core/pom.xml @@ -6,7 +6,7 @@ io.github.barqawiz intellijava.core - 0.5.5 + 0.6.0 Intellijava IntelliJava allows java developers to easily integrate with the latest language models, image generation, and deep learning frameworks. diff --git a/core/com.intellijava.core/src/main/java/com/intellijava/core/controller/RemoteLanguageModel.java b/core/com.intellijava.core/src/main/java/com/intellijava/core/controller/RemoteLanguageModel.java index d507fca..55d4b6a 100644 --- a/core/com.intellijava.core/src/main/java/com/intellijava/core/controller/RemoteLanguageModel.java +++ b/core/com.intellijava.core/src/main/java/com/intellijava/core/controller/RemoteLanguageModel.java @@ -16,93 +16,195 @@ package com.intellijava.core.controller; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; - +import com.intellijava.core.model.CohereLanguageResponse; import com.intellijava.core.model.OpenaiLanguageResponse; +import com.intellijava.core.model.SupportedLangModels; import com.intellijava.core.model.input.LanguageModelInput; +import com.intellijava.core.wrappers.CohereAIWrapper; import com.intellijava.core.wrappers.OpenAIWrapper; /** - * A class to call the most sophisticated remote language models. - * - * This class provides an API for interacting with OpenAI's GPT-3 language model. It is designed to be easily extensible - * to support other models in the future. + * RemoteLanguageModel class to call the most sophisticated remote language + * models. + * + * This class support: - Openai: - url: openai.com - description: provides an + * API for interacting with OpenAI's GPT-3 language model. - model names : + * text-davinci-003, text-curie-001, text-babbage-001, more. + * + * - cohere: - url: cohere.ai - description: provides an API for interacting + * with generate language model. - it is recommended to fine tune your model or + * add example of the response in the prompt when calling cohere models. - model + * names : medium or xlarge * * @author github.com/Barqawiz * */ public class RemoteLanguageModel { - - private String keyType; + + private SupportedLangModels keyType; private OpenAIWrapper openaiWrapper; - + private CohereAIWrapper cohereWrapper; + /** - * Constructor for the RemoteLanguageModel class. - * - * Creates an instance of the class and sets up the API key and the key type. - * Currently, only the "openai" key type is supported. - * - * @param keyValue the API key. - * @param keyType support openai only. - * - * @throws IllegalArgumentException if the keyType passed is not "openai". - * - */ - public RemoteLanguageModel(String keyValue, String keyType) { - - if (keyType.isEmpty() || keyType.equals("openai")) { - this.keyType = "openai"; - openaiWrapper = new OpenAIWrapper(keyValue); + * Constructor for the RemoteLanguageModel class. + * + * Creates an instance of the class and sets up the key and the API type. + * + * @param keyValue the API key. + * @param keyType either openai (default) or cohere or send empty string for + * default value. + * + * @throws IllegalArgumentException if the keyType passed is not "openai". + * + */ + public RemoteLanguageModel(String keyValue, String keyTypeString) { + + if (keyTypeString.isEmpty()) { + keyTypeString = SupportedLangModels.openai.toString(); + } + + List supportedModels = this.getSupportedModels(); + + if (supportedModels.contains(keyTypeString)) { + this.initiate(keyValue, SupportedLangModels.valueOf(keyTypeString)); } else { - throw new IllegalArgumentException("This version support openai keyType only"); + String models = String.join(" - ", supportedModels); + throw new IllegalArgumentException("The received keyValue not supported. Send any model from: " + models); } } + + /** + * Get the supported models names as array of string + * + * @return supportedModels + */ + public List getSupportedModels() { + SupportedLangModels[] values = SupportedLangModels.values(); + List enumValues = new ArrayList<>(); + + for (int i = 0; i < values.length; i++) { + enumValues.add(values[i].name()); + } + + return enumValues; + } - + /** + * Constructor for the RemoteLanguageModel class. + * + * Creates an instance of the class and sets up the API key and the enum key + * type. + * + * @param keyValue the API key. + * @param keyType enum version from the key type (SupportedModels). + * + * @throws IllegalArgumentException if the keyType passed is not "openai". + * + */ + public RemoteLanguageModel(String keyValue, SupportedLangModels keyType) { + this.initiate(keyValue, keyType); + } + + private void initiate(String keyValue, SupportedLangModels keyType) { + // set the model type + this.keyType = keyType; + + // generate the related model + if (keyType.equals(SupportedLangModels.openai)) { + this.openaiWrapper = new OpenAIWrapper(keyValue); + } else if (keyType.equals(SupportedLangModels.cohere)) { + this.cohereWrapper = new CohereAIWrapper(keyValue); + } + } + /** * * Call a remote large model to generate any text based on the received prompt. * * @param langInput flexible builder for language model parameters. + * * @return string for the model response. - * @throws IOException if there is an error when connecting to the OpenAI API. - * @throws IllegalArgumentException if the keyType passed in the constructor is not "openai". + * @throws IOException if there is an error when connecting to the + * OpenAI API. + * @throws IllegalArgumentException if the keyType passed in the constructor is + * not "openai". * */ - public String generateText(LanguageModelInput langInput) throws IOException { - - if (this.keyType.equals("openai")) { - return this.generateOpenaiText(langInput.getModel(), langInput.getPrompt(), - langInput.getTemperature(), langInput.getMaxTokens()); + public String generateText(LanguageModelInput langInput) throws IOException { + + if (this.keyType.equals(SupportedLangModels.openai)) { + return this.generateOpenaiText(langInput.getModel(), langInput.getPrompt(), langInput.getTemperature(), + langInput.getMaxTokens()); + } else if (this.keyType.equals(SupportedLangModels.cohere)) { + return this.generateCohereText(langInput.getModel(), langInput.getPrompt(), langInput.getTemperature(), + langInput.getMaxTokens()); } else { throw new IllegalArgumentException("This version support openai keyType only"); } - + } /** - * Private helper method for generating text from OpenAI GPT-3 model. - * - * @param model the model name, example: text-davinci-002. For more details about GPT-3 models, see: https://beta.openai.com/docs/models/gpt-3 - * @param prompt text of the required action or the question. - * @param temperature higher values means more risks and creativity. - * @param maxTokens maximum size of the model input and output. - * @return string model response. - * @throws IOException if there is an error when connecting to the OpenAI API. - * - */ - private String generateOpenaiText(String model, String prompt, float temperature, int maxTokens) throws IOException { - + * Private helper method for generating text from OpenAI GPT-3 model. + * + * @param model the model name, example: text-davinci-003. For more + * details about GPT-3 models, see: + * https://beta.openai.com/docs/models/gpt-3 + * @param prompt text of the required action or the question. + * @param temperature higher values means more risks and creativity. + * @param maxTokens maximum size of the model input and output. + * @return string model response. + * @throws IOException if there is an error when connecting to the OpenAI API. + * + */ + private String generateOpenaiText(String model, String prompt, float temperature, int maxTokens) + throws IOException { + + if (model.equals("")) + model = "text-davinci-003"; + Map params = new HashMap<>(); - params.put("model", model); - params.put("prompt", prompt); - params.put("temperature", temperature); - params.put("max_tokens", maxTokens); - + params.put("model", model); + params.put("prompt", prompt); + params.put("temperature", temperature); + params.put("max_tokens", maxTokens); + OpenaiLanguageResponse resModel = (OpenaiLanguageResponse) openaiWrapper.generateText(params); - + return resModel.getChoices().get(0).getText(); - + + } + + /** + * Private helper method for generating text from Cohere model. + * + * @param model the model name, either medium or xlarge. + * @param prompt text of the required action or the question. + * @param temperature higher values means more risks and creativity. + * @param maxTokens maximum size of the model input and output. + * @return string model response. + * @throws IOException if there is an error when connecting to the API. + * + */ + private String generateCohereText(String model, String prompt, float temperature, int maxTokens) + throws IOException { + + if (model.equals("")) + model = "xlarge"; + + Map params = new HashMap<>(); + params.put("model", model); + params.put("prompt", prompt); + params.put("temperature", temperature); + params.put("max_tokens", maxTokens); + + CohereLanguageResponse resModel = (CohereLanguageResponse) cohereWrapper.generateText(params); + + return resModel.getGenerations().get(0).getText(); + } } diff --git a/core/com.intellijava.core/src/main/java/com/intellijava/core/model/SupportedLangModels.java b/core/com.intellijava.core/src/main/java/com/intellijava/core/model/SupportedLangModels.java new file mode 100644 index 0000000..ff876f3 --- /dev/null +++ b/core/com.intellijava.core/src/main/java/com/intellijava/core/model/SupportedLangModels.java @@ -0,0 +1,5 @@ +package com.intellijava.core.model; + +public enum SupportedLangModels { + openai, cohere; +} diff --git a/core/com.intellijava.core/src/test/java/com/intellijava/core/CohereModelConnectionTest.java b/core/com.intellijava.core/src/test/java/com/intellijava/core/CohereModelConnectionTest.java index 33eb165..e1bbeb4 100644 --- a/core/com.intellijava.core/src/test/java/com/intellijava/core/CohereModelConnectionTest.java +++ b/core/com.intellijava.core/src/test/java/com/intellijava/core/CohereModelConnectionTest.java @@ -7,72 +7,63 @@ import java.util.List; import java.util.Map; import org.junit.Test; + +import com.intellijava.core.controller.RemoteLanguageModel; import com.intellijava.core.model.CohereLanguageResponse; import com.intellijava.core.model.CohereLanguageResponse.Generation; +import com.intellijava.core.model.input.LanguageModelInput; import com.intellijava.core.utils.Config2; import com.intellijava.core.wrappers.CohereAIWrapper; public class CohereModelConnectionTest { - + /** - * coherKey - change the coherKey + * coherKey - change the coherKey */ private final String coherKey = Config2.getInstance().getProperty("url.cohere.testkey"); - @Test public void testLanguageWrapper() { - + // prepare the object CohereAIWrapper cohereWrapper = new CohereAIWrapper(coherKey); - + // prepare the prompt with training data String targetIndustryIdea = "electric cars"; - String prompt = "This program generates startup idea and name given the industry." + - "\n\nIndustry: Workplace" + - "\nStartup Idea: A platform that generates slide deck contents automatically based on a given outline" + - "\nStartup Name: Deckerize" + - "\n--" + - "\nIndustry: Home Decor" + - "\nStartup Idea: An app that calculates the best position of your indoor plants for your apartment" + - "\nStartup Name: Planteasy" + - "\n--" + - "\nIndustry: Healthcare" + - "\nStartup Idea: A hearing aid for the elderly that automatically adjusts its levels and with a battery lasting a whole week" + - "\nStartup Name: Hearspan" + - "\n\n--" + - "\nIndustry: Education" + - "\nStartup Idea: An online school that lets students mix and match their own curriculum based on their interests and goals" + - "\nStartup Name: Prime Age" + - "\n\n--" + - "\nIndustry: {industry}".replace("{industry}", targetIndustryIdea); - + String prompt = "This program generates startup idea and name given the industry." + "\n\nIndustry: Workplace" + + "\nStartup Idea: A platform that generates slide deck contents automatically based on a given outline" + + "\nStartup Name: Deckerize" + "\n--" + "\nIndustry: Home Decor" + + "\nStartup Idea: An app that calculates the best position of your indoor plants for your apartment" + + "\nStartup Name: Planteasy" + "\n--" + "\nIndustry: Healthcare" + + "\nStartup Idea: A hearing aid for the elderly that automatically adjusts its levels and with a battery lasting a whole week" + + "\nStartup Name: Hearspan" + "\n\n--" + "\nIndustry: Education" + + "\nStartup Idea: An online school that lets students mix and match their own curriculum based on their interests and goals" + + "\nStartup Name: Prime Age" + "\n\n--" + + "\nIndustry: {industry}".replace("{industry}", targetIndustryIdea); + // prepare the input parameters Map params = new HashMap<>(); - params.put("prompt", prompt); - params.put("model", "xlarge"); - params.put("max_tokens", 40); - params.put("truncate", "END"); - params.put("return_likelihoods", "NONE"); - - - - // call the API - try { - if (coherKey.isBlank()) return; - - CohereLanguageResponse resModel = (CohereLanguageResponse) cohereWrapper.generateText(params); - - List responses = resModel.getGenerations(); - - - assert responses.size() > 0; - - for (Generation data: responses) { - System.out.println(data.getText().toString()); - } - - + params.put("prompt", prompt); + params.put("model", "xlarge"); + params.put("max_tokens", 40); + params.put("truncate", "END"); + params.put("return_likelihoods", "NONE"); + + // call the API + try { + if (coherKey.isBlank()) + return; + + CohereLanguageResponse resModel = (CohereLanguageResponse) cohereWrapper.generateText(params); + + List responses = resModel.getGenerations(); + + assert responses.size() > 0; + + for (Generation data : responses) { + System.out.println(data.getText().toString()); + } + } catch (IOException e) { if (coherKey.isBlank()) { System.out.print("testLanguageWrapper: set the API key to run the test case."); @@ -81,5 +72,48 @@ public void testLanguageWrapper() { } } } - + + @Test + public void testCohereCompletionRemoteModel() { + + try { + + // prepare the prompt with training data + String targetIndustryIdea = "electric cars"; + String prompt = "This program generates startup idea and name given the industry." + "\n\nIndustry: Workplace" + + "\nStartup Idea: A platform that generates slide deck contents automatically based on a given outline" + + "\nStartup Name: Deckerize" + "\n--" + "\nIndustry: Home Decor" + + "\nStartup Idea: An app that calculates the best position of your indoor plants for your apartment" + + "\nStartup Name: Planteasy" + "\n--" + "\nIndustry: Healthcare" + + "\nStartup Idea: A hearing aid for the elderly that automatically adjusts its levels and with a battery lasting a whole week" + + "\nStartup Name: Hearspan" + "\n\n--" + "\nIndustry: Education" + + "\nStartup Idea: An online school that lets students mix and match their own curriculum based on their interests and goals" + + "\nStartup Name: Prime Age" + "\n\n--" + + "\nIndustry: {industry}".replace("{industry}", targetIndustryIdea); + + RemoteLanguageModel wrapper = new RemoteLanguageModel(coherKey, "cohere"); + + LanguageModelInput input = new LanguageModelInput.Builder(prompt) + .setModel("xlarge").setTemperature(0.7f).setMaxTokens(50).build(); + + if (coherKey.isBlank()) + return; + + String resValue = wrapper.generateText(input); + + System.out.print(resValue); + + assert resValue.length() > 0; + assert resValue.toLowerCase().contains("startup name"); + + } catch (IOException e) { + if (coherKey.isBlank()) { + System.out.print("testLanguageWrapper: set the API key to run the test case."); + } else { + fail("Test case failed with exception: " + e.getMessage()); + } + + } + } + } From 7cb9d59c11aa90d2f47df91cde953a3949e78604 Mon Sep 17 00:00:00 2001 From: Ahmad Barqawi Date: Wed, 18 Jan 2023 22:46:57 +0000 Subject: [PATCH 5/7] fix the java doc comments --- .../core/controller/RemoteLanguageModel.java | 42 +++++++++++-------- .../core/model/CohereLanguageResponse.java | 7 ++++ .../core/model/SupportedLangModels.java | 8 +++- 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/core/com.intellijava.core/src/main/java/com/intellijava/core/controller/RemoteLanguageModel.java b/core/com.intellijava.core/src/main/java/com/intellijava/core/controller/RemoteLanguageModel.java index 55d4b6a..f2d8573 100644 --- a/core/com.intellijava.core/src/main/java/com/intellijava/core/controller/RemoteLanguageModel.java +++ b/core/com.intellijava.core/src/main/java/com/intellijava/core/controller/RemoteLanguageModel.java @@ -54,9 +54,9 @@ public class RemoteLanguageModel { * * Creates an instance of the class and sets up the key and the API type. * - * @param keyValue the API key. - * @param keyType either openai (default) or cohere or send empty string for - * default value. + * @param keyValue the API key. + * @param keyTypeString either openai (default) or cohere or send empty string + * for default value. * * @throws IllegalArgumentException if the keyType passed is not "openai". * @@ -77,6 +77,22 @@ public RemoteLanguageModel(String keyValue, String keyTypeString) { } } + /** + * Constructor for the RemoteLanguageModel class. + * + * Creates an instance of the class and sets up the API key and the enum key + * type. + * + * @param keyValue the API key. + * @param keyType enum version from the key type (SupportedModels). + * + * @throws IllegalArgumentException if the keyType passed is not "openai". + * + */ + public RemoteLanguageModel(String keyValue, SupportedLangModels keyType) { + this.initiate(keyValue, keyType); + } + /** * Get the supported models names as array of string * @@ -85,30 +101,20 @@ public RemoteLanguageModel(String keyValue, String keyTypeString) { public List getSupportedModels() { SupportedLangModels[] values = SupportedLangModels.values(); List enumValues = new ArrayList<>(); - + for (int i = 0; i < values.length; i++) { enumValues.add(values[i].name()); } - + return enumValues; } /** - * Constructor for the RemoteLanguageModel class. - * - * Creates an instance of the class and sets up the API key and the enum key - * type. - * - * @param keyValue the API key. - * @param keyType enum version from the key type (SupportedModels). - * - * @throws IllegalArgumentException if the keyType passed is not "openai". + * Common function to initiate the class from any constructor. * + * @param keyValue the API key. + * @param keyType enum version from the key type (SupportedModels). */ - public RemoteLanguageModel(String keyValue, SupportedLangModels keyType) { - this.initiate(keyValue, keyType); - } - private void initiate(String keyValue, SupportedLangModels keyType) { // set the model type this.keyType = keyType; diff --git a/core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereLanguageResponse.java b/core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereLanguageResponse.java index 3b05cb5..da84320 100644 --- a/core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereLanguageResponse.java +++ b/core/com.intellijava.core/src/main/java/com/intellijava/core/model/CohereLanguageResponse.java @@ -15,6 +15,13 @@ public class CohereLanguageResponse extends BaseRemoteModel{ private List generations; private String prompt; + /** + * + * Generation is wrapper for the response + * + * @author github.com/Barqawiz + * + */ public static class Generation { private String id; private String text; diff --git a/core/com.intellijava.core/src/main/java/com/intellijava/core/model/SupportedLangModels.java b/core/com.intellijava.core/src/main/java/com/intellijava/core/model/SupportedLangModels.java index ff876f3..6b70686 100644 --- a/core/com.intellijava.core/src/main/java/com/intellijava/core/model/SupportedLangModels.java +++ b/core/com.intellijava.core/src/main/java/com/intellijava/core/model/SupportedLangModels.java @@ -1,5 +1,11 @@ package com.intellijava.core.model; +/** + * Supported language models. + * + * @author github.com/Barqawiz + * + */ public enum SupportedLangModels { - openai, cohere; + /** openai model */openai, /** cohere model */cohere; } From 75608141094cfdf47be7216374c3644ba77bb44c Mon Sep 17 00:00:00 2001 From: Ahmad Barqawi Date: Wed, 18 Jan 2023 22:56:13 +0000 Subject: [PATCH 6/7] update the sample to support the library V0.6.0 Main change in V0.6.0 is the support of Cohere ai generate model and flexible constructor for the remote language model. --- sample_code/.classpath | 2 +- sample_code/.gitignore | 1 + .../jars/com.intellijava.core-0.4.0.jar | Bin 19879 -> 0 bytes sample_code/jars/intellijava.core-0.6.0.jar | Bin 0 -> 132983 bytes .../src/com/intelliJava/test/CohereApp.java | 46 ++++++++++++++++++ .../test/{App.java => OpenaiApp.java} | 2 +- 6 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 sample_code/.gitignore delete mode 100644 sample_code/jars/com.intellijava.core-0.4.0.jar create mode 100644 sample_code/jars/intellijava.core-0.6.0.jar create mode 100644 sample_code/src/com/intelliJava/test/CohereApp.java rename sample_code/src/com/intelliJava/test/{App.java => OpenaiApp.java} (99%) diff --git a/sample_code/.classpath b/sample_code/.classpath index 080298a..1ff9255 100644 --- a/sample_code/.classpath +++ b/sample_code/.classpath @@ -7,7 +7,7 @@ - + diff --git a/sample_code/.gitignore b/sample_code/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/sample_code/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/sample_code/jars/com.intellijava.core-0.4.0.jar b/sample_code/jars/com.intellijava.core-0.4.0.jar deleted file mode 100644 index b2514b6c6f5de2bb966dd60c9d28ded810a48cf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19879 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

a?xxye?HWLFZ6SQVA?SjP}s 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 diff --git a/sample_code/jars/intellijava.core-0.6.0.jar b/sample_code/jars/intellijava.core-0.6.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..2525d3c785380261d98a545f05540d0b89c7ada3 GIT binary patch literal 132983 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–j~YJM-pnS&b+&0C_*- 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 AjsO4v literal 0 HcmV?d00001 diff --git a/sample_code/src/com/intelliJava/test/CohereApp.java b/sample_code/src/com/intelliJava/test/CohereApp.java new file mode 100644 index 0000000..2edca7c --- /dev/null +++ b/sample_code/src/com/intelliJava/test/CohereApp.java @@ -0,0 +1,46 @@ +package com.intelliJava.test; + +import java.io.IOException; + +import com.intellijava.core.controller.RemoteLanguageModel; +import com.intellijava.core.model.input.LanguageModelInput; + +public class CohereApp { + + public static void main(String[] args) { + + System.out.println("Start calling the API!"); + + try { + + // get the api key from https://dashboard.cohere.ai/ + // TODO: replace with your API key. + String apiKey = ""; + + /********************************/ + /** 1- Call the language model **/ + /********************************/ + tryTheLanguageModel(apiKey); + + } catch (IOException e) { + e.printStackTrace(); + } + + } + + private static void tryTheLanguageModel(String apiKey) throws IOException { + // initiate the remote language model wrapper with cohere details + RemoteLanguageModel langModel = new RemoteLanguageModel(apiKey, "cohere"); + + // prepare the input parameters - change the prompt to any text like "write a + // funny short story" + LanguageModelInput langInput = new LanguageModelInput.Builder("Once upon a time in a magical land called") + .setModel("xlarge").setTemperature(0.7f).setMaxTokens(50).build(); + + String resValue = langModel.generateText(langInput); + + // print language model output + System.out.println("Language model output:\n" + resValue); + } + +} diff --git a/sample_code/src/com/intelliJava/test/App.java b/sample_code/src/com/intelliJava/test/OpenaiApp.java similarity index 99% rename from sample_code/src/com/intelliJava/test/App.java rename to sample_code/src/com/intelliJava/test/OpenaiApp.java index b31200b..966d805 100644 --- a/sample_code/src/com/intelliJava/test/App.java +++ b/sample_code/src/com/intelliJava/test/OpenaiApp.java @@ -28,7 +28,7 @@ * * */ -public class App { +public class OpenaiApp { public static void main(String[] args) { From 12499417131f533df6650f83b71aac9606c6a506 Mon Sep 17 00:00:00 2001 From: Ahmad Barqawi Date: Thu, 19 Jan 2023 00:27:52 +0000 Subject: [PATCH 7/7] update readme to add details for 0.6.0 version --- README.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 2449d38..e33cd03 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,43 @@ # IntelliJava-OpenaiAPI -*IntelliJava V0.5.5* +*IntelliJava V0.6.0* -IntelliJava allows java developers to easily integrate with the latest language models and deep learning frameworks using few lines of java code. -The first version supports only Openai APIs. It provides a simple and intuitive API with convenient methods for sending text input to models like (GPT-3 and DALL·E) and receiving generated text or images in return. +IntelliJava is the ultimate tool for Java developers looking to integrate with the latest language models and deep learning frameworks. The library provides a simple and intuitive API with convenient methods for sending text input to models like GPT-3 and DALL·E, and receiving generated text or images in return. With just a few lines of code, you can easily access the power of cutting-edge AI models to enhance your projects. + +The supported models in this version: +- OpenAI: Access GPT-3 to generate text and DALL·E to generate images. OpenAI is preferred when you want quality results without tuning. +- Cohere.ai: generate text; Cohere allows you to generate your language model to suit your specific needs. # How to use 1. Import the core jar file to your project or add the maven package (check Integration section). 2. Add gson dependency using maven or the jar file (check dependencies section). -3. Call the ``RemoteLanguageModel`` for the language model and ``RemoateImageModel`` for image generation. +3. Call the ``RemoteLanguageModel`` for the language models and ``RemoateImageModel`` for image generation. ## Integration -The package released to [Maven Central Repository](https://central.sonatype.dev/artifact/io.github.barqawiz/intellijava.core/0.5.5). +The package released to [Maven Central Repository](https://central.sonatype.dev/artifact/io.github.barqawiz/intellijava.core/0.6.0). Maven: ```xml io.github.barqawiz intellijava.core - 0.5.5 + 0.6.0 ``` Gradle: ``` -implementation group: 'io.github.barqawiz', name: 'intellijava.core', version: '0.5.5' +implementation group: 'io.github.barqawiz', name: 'intellijava.core', version: '0.6.0' ``` Gradle(Kotlin): ``` -implementation("io.github.barqawiz:intellijava.core:0.5.5") +implementation("io.github.barqawiz:intellijava.core:0.6.0") ``` Jar download: -[intellijava.jar](https://insta-answer-public.s3.amazonaws.com/opensource/IntelliJava/version0.5.5/intellijava.core-0.5.5.jar). +[intellijava.jar](https://repo1.maven.org/maven2/io/github/barqawiz/intellijava.core/0.6.0/intellijava.core-0.6.0.jar). For ready integration: try the sample_code. @@ -95,7 +98,7 @@ Call for contributors: - [x] Add support to OpenAI Completion API. - [x] Add support to OpenAI DALL·E 2. - [ ] Add support to other OpenAI functions. -- [ ] Add support to cohere generate API. +- [x] Add support to cohere generate API. - [ ] Add support to Google language models. - [ ] Add support to Amazon language models. - [ ] Add support to Midjourney image generation.