From d15dc718c2b5599583f80af1b097f1388410d588 Mon Sep 17 00:00:00 2001 From: Theo Kanning Date: Mon, 5 Oct 2020 17:41:16 -0500 Subject: [PATCH] Add builders to request objects This is so much nicer --- README.md | 11 ++++++----- .../java/openai/completion/CompletionRequest.java | 7 +++++++ .../main/java/openai/search/SearchRequest.java | 7 +++++++ .../src/main/java/example/OpenAiApiExample.java | 15 +++++++++------ 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 950e285..751b304 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ Java libraries for using OpenAI's GPT-3 api. Includes the following artifacts: -- api : request/response POJOs for the GPT-3 engine, completion, and search APIs. -- client : a basic retrofit client for the GPT-3 endpoints +- `api` : request/response POJOs for the GPT-3 engine, completion, and search APIs. +- `client` : a basic retrofit client for the GPT-3 endpoints as well as an example project using the client. @@ -12,9 +12,10 @@ as well as an example project using the client. If you're looking for the fastest solution, import the `client` and use [OpenAiService](client/src/main/java/openai/OpenAiService.java). ``` OpenAiService service = new OpenAiService(your_token) -CompletionRequest completionRequest = new CompletionRequest(); -completionRequest.setPrompt("Somebody once told me the world is gonna roll me"); -completionRequest.setEcho(true); +CompletionRequest completionRequest = CompletionRequest.builder() + .prompt("Somebody once told me the world is gonna roll me") + .echo(true) + .build(); service.createCompletion("ada", completionRequest).getChoices().forEach(System.out::println); ``` diff --git a/api/src/main/java/openai/completion/CompletionRequest.java b/api/src/main/java/openai/completion/CompletionRequest.java index b791e59..eb98447 100644 --- a/api/src/main/java/openai/completion/CompletionRequest.java +++ b/api/src/main/java/openai/completion/CompletionRequest.java @@ -1,6 +1,9 @@ package openai.completion; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.List; @@ -11,8 +14,12 @@ import java.util.List; * Documentation taken from * https://beta.openai.com/docs/api-reference/create-completion */ +@Builder +@NoArgsConstructor +@AllArgsConstructor @Data public class CompletionRequest { + /** * An optional prompt to complete from */ diff --git a/api/src/main/java/openai/search/SearchRequest.java b/api/src/main/java/openai/search/SearchRequest.java index 8e913f0..8d5c853 100644 --- a/api/src/main/java/openai/search/SearchRequest.java +++ b/api/src/main/java/openai/search/SearchRequest.java @@ -1,6 +1,9 @@ package openai.search; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.List; @@ -11,8 +14,12 @@ import java.util.List; * * https://beta.openai.com/docs/api-reference/search */ +@Builder +@NoArgsConstructor +@AllArgsConstructor @Data public class SearchRequest { + /** * Documents to search over */ diff --git a/example/src/main/java/example/OpenAiApiExample.java b/example/src/main/java/example/OpenAiApiExample.java index 3f13b7e..c8a1c9a 100644 --- a/example/src/main/java/example/OpenAiApiExample.java +++ b/example/src/main/java/example/OpenAiApiExample.java @@ -20,15 +20,18 @@ class OpenAiApiExample { System.out.println(ada); System.out.println("\nCreating completion..."); - CompletionRequest completionRequest = new CompletionRequest(); - completionRequest.setPrompt("Somebody once told me the world is gonna roll me"); - completionRequest.setEcho(true); + + CompletionRequest completionRequest = CompletionRequest.builder() + .prompt("Somebody once told me the world is gonna roll me") + .echo(true) + .build(); service.createCompletion("ada", completionRequest).getChoices().forEach(System.out::println); System.out.println("\nSearching documents..."); - SearchRequest searchRequest = new SearchRequest(); - searchRequest.setDocuments(Arrays.asList("Water", "Earth", "Electricity", "Fire")); - searchRequest.setQuery("Pikachu"); + SearchRequest searchRequest = SearchRequest.builder() + .documents(Arrays.asList("Water", "Earth", "Electricity", "Fire")) + .query("Pikachu") + .build(); service.search("ada", searchRequest).forEach(System.out::println); } } \ No newline at end of file