Reactive OpenAI 클라이언트 라이브러리입니다.
WebFlux와 Spring Boot를 사용하여 작성되었습니다. 라이브러리에는 더 쉽게 사용할 수 있도록 사전 구성된 Spring Boot 스타터도 포함되어 있습니다.
도서관은 비공식적이고 커뮤니티가 관리합니다. 개발에 자유롭게 참여해 보세요.
Maven을 통한 종속성 가져오기:
< dependency >
< groupId >io.github.reactiveclown</ groupId >
< artifactId >openai-webflux-client-spring-boot-starter</ artifactId >
< version >0.9.1</ version >
</ dependency >
Gradle을 통한 종속성 가져오기:
implementation 'io.github.reactiveclown:openai-webflux-client-spring-boot-starter:0.9.1'
종속성을 추가한 후에는 OpenAI API 키를 application.properties에 추가해야 합니다.
com.github.reactiveclown.openai.apiKey =OPENAI_API_KEY
다음 구성 변수를 제공하여 조직 ID를 추가하고 baseUrl을 변경할 수도 있습니다. 하지만 이 단계는 필수 단계는 아닙니다.
com.github.reactiveclown.openai.organizationId =OPENAI_ORGANIZATION_ID
com.github.reactiveclown.openai.baseUrl =OPENAI_CUSTOM_BASE_URL
여기에서 몇 가지 사용 예를 찾을 수 있습니다. 또한 매개변수에 대한 자세한 정보를 얻으려면 공식 문서를 사용하시기 바랍니다.
OpenAI 모델 문서
모델 서비스는 모델 목록이나 특정 모델에 대한 정보를 검색하는 데 사용됩니다.
@ Service
public class ExampleService {
private final ModelsService service ;
public ExampleService ( ModelsService service ) {
this . service = service ;
}
public Mono < ListModelsResponse > listModels () {
return service . listModels ();
}
public Mono < RetrieveModelResponse > retrieveModel ( String modelName ) {
return service . retrieveModel ( modelName );
}
}
OpenAI 완성 문서
완성 서비스는 텍스트를 완성하는 데 사용됩니다. 빌더 매개변수를 자유롭게 사용해 보세요.
@ Service
public class ExampleService {
private final CompletionsService service ;
public ExampleService ( CompletionsService service ) {
this . service = service ;
}
public Mono < CreateCompletionResponse > createCompletion () {
return service . createCompletion (
CreateCompletionRequest
. builder ( "babbage" )
. n ( 2 )
. bestOf ( 1 )
. build ());
}
}
OpenAI 채팅 문서
채팅 서비스는 채팅 모델과 채팅하는 데 사용됩니다. 빌더 매개변수를 자유롭게 사용해 보세요.
@ Service
public class ExampleService {
private final ChatService service ;
public ExampleService ( ChatService service ) {
this . service = service ;
}
public Mono < CreateChatCompletionResponse > createChatCompletion () {
return service . createChatCompletion (
CreateChatCompletionRequest
. builder ( "gpt-3.5-turbo" , List . of ( new MessageData ( "user" , "do something" )))
. n ( 3 )
. build ());
}
}
OpenAI는 문서를 편집합니다
편집 서비스는 제공된 입력을 편집하는 데 사용됩니다. 빌더 매개변수를 자유롭게 사용해 보세요.
@ Service
public class ExampleService {
private final EditsService service ;
public ExampleService ( EditsService service ) {
this . service = service ;
}
public Mono < CreateEditResponse > createEdit () {
return service . createEdit (
CreateEditRequest
. builder ( "babbage" , "Add one digit after every word" )
. input ( "One Two Three" )
. build ());
}
}
OpenAI 이미지 문서
이미지 서비스는 다양한 이미지와 해당 변환을 생성하는 데 사용됩니다.
️ 현재로서는 이미지가 필요한 메서드가 차단됩니다. 가까운 시일 내에 비동기 FilePart 구현을 추가할 계획입니다.
@ Service
public class ExampleService {
private final ImagesService service ;
public ExampleService ( ImagesService service ) {
this . service = service ;
}
//Non-blocking
public Mono < CreateImageResponse > createImage () {
return service . createImage (
CreateImageRequest
. builder ( "Generate a digital art of Ukraine" )
. build ());
}
//Blocking
public Mono < CreateImageVariationResponse > createImageVariation () {
return service . createImageVariation (
CreateImageVariationRequest
. builder ( "src/main/resources/exampleImage.png" )
. size ( "512x512" )
. build ());
}
//Blocking
public Mono < CreateImageEditResponse > createImageEdit () {
return service . createImageEdit (
CreateImageEditRequest
. builder ( "src/main/resources/exampleImage.png" , "Generate a green fields" )
. mask ( "src/main/resources/exampleMask.png" )
. build ());
}
}
OpenAI 임베딩 문서
임베딩 서비스는 임베딩을 생성하는 데 사용됩니다. 빌더 매개변수를 자유롭게 사용해 보세요.
@ Service
public class ExampleService {
private final EmbeddingsService service ;
public ExampleService ( EmbeddingsService service ) {
this . service = service ;
}
public Mono < CreateEmbeddingsResponse > createEmbeddings (){
return service . createEmbeddings (
CreateEmbeddingsRequest
. builder ( "babbage" , "example input" )
. build ());
}
}
OpenAI 오디오 문서
오디오 서비스는 오디오를 텍스트로 변환하고 영어로 번역하는 데 사용됩니다. 빌더 매개변수를 자유롭게 사용해 보세요.
️ 현재로서는 오디오 파일이 필요한 메서드가 차단되고 있습니다. 가까운 시일 내에 비동기 FilePart 구현을 추가할 계획입니다.
@ Service
public class ExampleService {
private final AudioService service ;
public ExampleService ( AudioService service ) {
this . service = service ;
}
//Blocking
public Mono < CreateTranscriptionResponse > createTranscription () {
return service . createTranscription (
CreateTranscriptionRequest
. builder ( "src/main/resources/exampleAudio.mp3" , "whisper-1" )
. build ());
}
//Blocking
public Mono < CreateTranslationResponse > createTranslation (){
return service . createTranslation ( CreateTranslationRequest
. builder ( "src/main/resources/exampleAudio.mp3" , "whisper-1" )
. build ());
}
}
OpenAI 파일 문서
파일 서비스는 파일을 업로드하고 작업하는 데 사용됩니다. 빌더 매개변수를 자유롭게 사용해 보세요.
️ 현재로서는 파일이 필요한 메서드가 차단됩니다. 가까운 시일 내에 비동기 FilePart 구현을 추가할 계획입니다.
@ Service
public class ExampleService {
private final FilesService service ;
public ExampleService ( FilesService service ) {
this . service = service ;
}
public Mono < ListFilesResponse > listFilesResponse () {
return service . listFiles ();
}
//Blocking
public Mono < UploadFileResponse > uploadFile () {
return service . uploadFile (
UploadFileRequest
. builder ( "src/main/resources/exampleFile.jsonl" , "finetune" )
. build ());
}
public Mono < DeleteFileResponse > deleteFile () {
return service . deleteFile ( "fileId" );
}
public Mono < RetrieveFileResponse > retrieveFile () {
return service . retrieveFile ( "fileId" );
}
public Mono < String > retrieveFileContent () {
return service . retrieveFileContent ( "fileId" );
}
}
OpenAI, 문서 미세 조정
미세 조정 서비스는 파일 및 모델을 미세 조정하는 데 사용됩니다. 빌더 매개변수를 자유롭게 사용해 보세요.
@ Service
public class ExampleService {
private final FineTunesService service ;
public ExampleService ( FineTunesService service ) {
this . service = service ;
}
public Mono < CreateFineTuneResponse > createFineTune (){
return service . createFineTune (
CreateFineTuneRequest
. builder ( "trainingFileId" )
. build ());
}
public Mono < ListFineTunesResponse > listFineTunes (){
return service . listFineTunes ();
}
public Mono < RetrieveFineTuneResponse > retrieveFineTune (){
return service . retrieveFineTunes ( "fineTuneId" );
}
public Mono < CancelFineTuneResponse > cancelFineTune (){
return service . cancelFineTune ( "fineTuneId" );
}
public Mono < ListFineTuneEventsResponse > listFineTuneEvents (){
return service . listFineTuneEvents ( "fineTuneId" );
}
public Mono < DeleteFineTuneModelResponse > deleteFineTuneModel (){
return service . deleteFineTuneModel ( "modelId" );
}
}
OpenAI 중재 문서
중재 서비스는 중재 위반을 확인하는 데 사용됩니다. 빌더 매개변수를 자유롭게 사용해 보세요.
@ Service
public class ExampleService {
private final ModerationsService service ;
public ExampleService ( ModerationsService service ) {
this . service = service ;
}
public Mono < CreateModerationResponse > createModeration () {
return service . createModeration (
CreateModerationRequest . builder ( "violating input" ). build ());
}
}
이것은 오픈 소스 라이브러리이므로 도움을 주시면 감사하겠습니다. 코드나 기능을 개선할 수 있는 방법이 있다고 판단되면 친절하게 문제를 작성하거나 변경 사항을 적용하여 끌어오기 요청을 보내주세요. 또한 열린 문제를 자유롭게 살펴보고 해결책이 있는 경우 끌어오기 요청을 제출하세요.
MIT License
Copyright (c) 2023 Maksym Volkov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.