最近几个月AI跟着OpenAI的火爆而火爆,这段时间终于抽空写了一个OpenAI API java版本的SDK,已经推送到Maven Central。
<dependency>
<groupId>xyz.felh</groupId>
<artifactId>openai-service</artifactId>
<version>0.9.2</version>
</dependency>
API列表
- 获取所有Models
List<Model> models = openAiService.listModels();
System.out.println("model size: " + models.size());
- 获取单个Model详情
Model model = openAiService.getModel("gpt-3.5-turbo");
System.out.println("model gpt-3.5-turbo: " + toJSONString(model));
- 创建一个Completion
CreateCompletionRequest completionRequest = CreateCompletionRequest.builder()
.prompt("Somebody once told me the world is gonna roll me")
.echo(true)
.model("ada")
.build();
Completion completion = openAiService.createCompletion(completionRequest);
System.out.println("completion: " + toJSONString(completion));
- 创建一个ChatCompletion
CreateChatCompletionRequest chatCompletionRequest = CreateChatCompletionRequest.builder()
.messages(Arrays.asList(new ChatMessage(ChatMessageRole.USER, "Hello")))
.model("gpt-3.5-turbo")
.build();
ChatCompletion chatCompletion = openAiService.createChatCompletion(chatCompletionRequest);
System.out.println("chatCompletion: " + toJSONString(chatCompletion));
- 创建一个Edit
CreateEditRequest editRequest = CreateEditRequest.builder()
.model("text-davinci-edit-001")
.input("What day of the wek is it?")
.instruction("Fix the spelling mistakes")
.build();
Edit edit = openAiService.createEdit(editRequest);
System.out.println("edit: " + toJSONString(edit));
- 创建一个Image
CreateImageRequest createImageRequest = CreateImageRequest.builder()
.prompt("A cute baby dea otter")
.n(1)
// .responseFormat("b64_json") // or url
.build();
ImageResponse imageResponse = openAiService.createImage(createImageRequest);
System.out.println("imageResponse: " + toJSONString(imageResponse));
- 创建一个Image Edit
CreateImageEditRequest createImageEditRequest = CreateImageEditRequest.builder()
.prompt("A cute baby sea otter wearing a beret")
.image("/Users/forest/image_edit_original.png")
.mask("/Users/forest/image_edit_mask.png")
// .responseFormat("b64_json") // or url
.build();
ImageResponse imageEditResponse = openAiService.createImageEdit(createImageEditRequest);
System.out.println("imageEditResponse: " + toJSONString(imageEditResponse));
- 创建一个Image Variation
CreateImageVariationRequest createImageVariationRequest = CreateImageVariationRequest.builder()
.image("/Users/forest/image_edit_original.png")
.n(2)
.size("256x256")
.build();
ImageResponse imageVariationResponse = openAiService.createImageVariation(createImageVariationRequest);
System.out.println("imageVariationResponse: " + toJSONString(imageVariationResponse));
- 创建一个Embedding
CreateEmbeddingRequest createEmbeddingRequest = CreateEmbeddingRequest.builder()
.input("The food was delicious and the waiter...")
.model("text-embedding-ada-002")
.build();
CreateEmbeddingResponse createEmbeddingResponse = openAiService.createEmbeddings(createEmbeddingRequest);
System.out.println("createEmbeddingResponse: " + toJSONString(createEmbeddingResponse));
- 创建一个Moderation
CreateModerationRequest createModerationRequest = CreateModerationRequest.builder()
.input("I want to kill them.")
.build();
CreateModerationResponse createModerationResponse = openAiService.createModeration(createModerationRequest);
System.out.println("createModerationResponse: " + toJSONString(createModerationResponse));
- Audio的翻译相关
CreateAudioTranscriptionRequest createAudioTranscriptionRequest = CreateAudioTranscriptionRequest.builder()
.model("whisper-1")
.file("/Users/forest/OpenAI.Playground_SampleData_micro-machines.mp3")
.build();
AudioResponse audioResponse = openAiService.createAudioTranscription(createAudioTranscriptionRequest);
System.out.println("audioResponse: " + toJSONString(audioResponse));
CreateAudioTranslationRequest createAudioTranslationRequest = CreateAudioTranslationRequest.builder()
.model("whisper-1")
.file("/Users/forest/OpenAI.Playground_SampleData_micro-machines.mp3")
.build();
AudioResponse audioResponse2 = openAiService.createAudioTranslation(createAudioTranslationRequest);
System.out.println("audioResponse2: " + toJSONString(audioResponse2));
- File相关
File file = openAiService.uploadFile("/Users/forest/fineTuningSample.jsonl", "fine-tune");
System.out.println("update file: " + toJSONString(file));
DeleteResponse deleteFileResponse = openAiService.deleteFile("file-lq7ubCONViIIP0S2AAE2JIYW");
System.out.println("delete file: " + toJSONString(deleteFileResponse));
List<File> files = openAiService.listFiles();
System.out.println("list files: " + toJSONString(files));
File retrieveFile = openAiService.retrieveFile("file-eloVljhERlCO2qWNFeTlA0Az");
System.out.println("retrieve file: " + toJSONString(retrieveFile));
// not for free account
// String fileContent = openAiService.retrieveFileContent("file-eloVljhERlCO2qWNFeTlA0Az");
// System.out.println(fileContent);
- FineTune相关
CreateFineTuneRequest createFineTuneRequest = CreateFineTuneRequest.builder()
.trainingFile("file-eloVljhERlCO2qWNFeTlA0Az")
.build();
FineTune fineTune = openAiService.createFineTune(createFineTuneRequest);
System.out.println("createFineTune: " + toJSONString(fineTune));
List<FineTune> fineTunes = openAiService.listFineTunes();
System.out.println("list fine tunes: " + toJSONString(fineTunes));
FineTune fineTune1 = openAiService.retrieveFineTune("ft-4jF2VK5hYHFdwTRKsJe1PX9y");
System.out.println("retrieveFineTune: " + toJSONString(fineTune1));
FineTune cancelFineTune = openAiService.cancelFineTune("ft-4jF2VK5hYHFdwTRKsJe1PX9y");
System.out.println("cancelFineTune: " + toJSONString(cancelFineTune));
DeleteResponse deleteFineTuneResponse = openAiService.deleteFineTune("curie", "ft-4jF2VK5hYHFdwTRKsJe1PX9y");
System.out.println("deleteFineTune: " + toJSONString(deleteFineTuneResponse));
List<FineTuneEvent> fineTuneEvents = openAiService.listFineTuneEvents("ft-4jF2VK5hYHFdwTRKsJe1PX9y");
System.out.println("listFineTuneEvents: " + toJSONString(fineTuneEvents));