Dies ist die Reactive OpenAI-Clientbibliothek.
Es wurde mit WebFlux und Spring Boot geschrieben. Die Bibliothek enthält außerdem vorkonfigurierte Spring Boot-Starter zur einfacheren Verwendung.
Die Bibliothek ist inoffiziell und wird von der Gemeinschaft gepflegt. Nehmen Sie gerne an der Entwicklung teil.
Abhängigkeitsimport über Maven :
< dependency >
< groupId >io.github.reactiveclown</ groupId >
< artifactId >openai-webflux-client-spring-boot-starter</ artifactId >
< version >0.9.1</ version >
</ dependency >
Abhängigkeitsimport über Gradle :
implementation 'io.github.reactiveclown:openai-webflux-client-spring-boot-starter:0.9.1'
Denken Sie nach dem Hinzufügen der Abhängigkeit daran, Ihren OpenAI-API-Schlüssel zur application.properties hinzuzufügen.
com.github.reactiveclown.openai.apiKey =OPENAI_API_KEY
Sie können auch die Organisations-ID hinzufügen und baseUrl ändern, indem Sie die nächsten Konfigurationsvariablen bereitstellen. Dieser Schritt ist jedoch nicht zwingend erforderlich.
com.github.reactiveclown.openai.organizationId =OPENAI_ORGANIZATION_ID
com.github.reactiveclown.openai.baseUrl =OPENAI_CUSTOM_BASE_URL
Hier finden Sie einige Anwendungsbeispiele. Bitte nutzen Sie auch die offizielle Dokumentation, um weitere Informationen zu Parametern zu erhalten.
OpenAI-Modelldokumente
Der Modelldienst wird verwendet, um die Liste der Modelle oder Informationen zu einem bestimmten Modell abzurufen.
@ 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 Completions-Dokumente
Der Vervollständigungsdienst wird zum Vervollständigen des Textes verwendet. Fühlen Sie sich frei, mit den Builder-Parametern herumzuspielen.
@ 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-Chat-Dokumente
Der Chat-Dienst dient zum Chatten mit den Chat-Models. Fühlen Sie sich frei, mit den Builder-Parametern herumzuspielen.
@ 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 bearbeitet Dokumente
Der Bearbeitungsdienst wird verwendet, um Änderungen an der bereitgestellten Eingabe vorzunehmen. Fühlen Sie sich frei, mit den Builder-Parametern herumzuspielen.
@ 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-Bilderdokumente
Der Bilddienst wird verwendet, um verschiedene Bilder und deren Transformationen zu generieren.
️ Derzeit blockieren Methoden, die Bilder erfordern. In naher Zukunft ist geplant, eine asynchrone FilePart-Implementierung hinzuzufügen.
@ 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 Embeddings-Dokumente
Der Einbettungsdienst wird zum Erstellen von Einbettungen verwendet. Fühlen Sie sich frei, mit den Builder-Parametern herumzuspielen.
@ 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-Audiodokumente
Der Audiodienst wird verwendet, um Audio in Text umzuwandeln und auch Übersetzungen ins Englische anzufertigen. Fühlen Sie sich frei, mit den Builder-Parametern herumzuspielen.
️ Derzeit blockieren Methoden, die Audiodateien erfordern. In naher Zukunft ist geplant, eine asynchrone FilePart-Implementierung hinzuzufügen.
@ 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 ());
}
}
Dokumente zu OpenAI-Dateien
Der Dateidienst wird zum Hochladen und Bearbeiten von Dateien verwendet. Fühlen Sie sich frei, mit den Builder-Parametern herumzuspielen.
️ Derzeit werden Methoden blockiert, die Dateien erfordern. In naher Zukunft ist geplant, eine asynchrone FilePart-Implementierung hinzuzufügen.
@ 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 optimiert die Dokumentation
Der Feinabstimmungsdienst wird für die Arbeit mit Feinabstimmungsdateien und -modellen verwendet. Fühlen Sie sich frei, mit den Builder-Parametern herumzuspielen.
@ 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-Moderationsdokumente
Der Moderationsdienst dient zur Überprüfung auf Moderationsverstöße. Fühlen Sie sich frei, mit den Builder-Parametern herumzuspielen.
@ 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 ());
}
}
Dies ist die Open-Source-Bibliothek, jede Hilfe wird sehr geschätzt. Wenn Sie sehen, dass es eine Möglichkeit gibt, den Code oder die Funktionalität zu verbessern, füllen Sie bitte das Problem aus oder stellen Sie eine Pull-Anfrage mit Ihren Änderungen. Schauen Sie sich auch gerne offene Probleme an und senden Sie eine Pull-Anfrage, wenn Sie eine Lösung haben.
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.