Это клиентская библиотека 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'
После добавления зависимости не забудьте добавить ключ API OpenAI в файл application.properties.
com.github.reactiveclown.openai.apiKey =OPENAI_API_KEY
Вы также можете добавить идентификатор организации и изменить 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.