Il s'agit de la bibliothèque client Reactive OpenAI.
Il a été écrit avec WebFlux et Spring Boot. La bibliothèque contient également un démarreur Spring Boot préconfiguré pour une utilisation plus facile.
La bibliothèque n'est pas officielle et est entretenue par la communauté. N'hésitez pas à rejoindre le développement.
Import de dépendances via Maven :
< dependency >
< groupId >io.github.reactiveclown</ groupId >
< artifactId >openai-webflux-client-spring-boot-starter</ artifactId >
< version >0.9.1</ version >
</ dependency >
Import de dépendances via Gradle :
implementation 'io.github.reactiveclown:openai-webflux-client-spring-boot-starter:0.9.1'
Après avoir ajouté la dépendance, n'oubliez pas d'ajouter votre clé API OpenAI au fichier application.properties.
com.github.reactiveclown.openai.apiKey =OPENAI_API_KEY
Vous pouvez également ajouter l'ID de l'organisation et modifier baseUrl en fournissant les variables de configuration suivantes. Mais cette étape n’est pas obligatoire.
com.github.reactiveclown.openai.organizationId =OPENAI_ORGANIZATION_ID
com.github.reactiveclown.openai.baseUrl =OPENAI_CUSTOM_BASE_URL
Vous trouverez ici quelques exemples d'utilisation. Veuillez également utiliser la documentation officielle afin d'obtenir plus d'informations sur les paramètres.
Documentation sur les modèles OpenAI
Le service Modèles est utilisé pour récupérer la liste des modèles ou des informations sur un modèle spécifique.
@ 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 );
}
}
Documents sur les achèvements OpenAI
Le service de complétion est utilisé pour compléter le texte. N'hésitez pas à jouer avec les paramètres du constructeur.
@ 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 ());
}
}
Documents de discussion OpenAI
Le service de chat est utilisé pour discuter avec les modèles de chat. N'hésitez pas à jouer avec les paramètres du constructeur.
@ 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 modifie la documentation
Le service de modifications est utilisé pour apporter des modifications à l’entrée fournie. N'hésitez pas à jouer avec les paramètres du constructeur.
@ 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 ());
}
}
Documents sur les images OpenAI
Le service d'imagerie est utilisé pour générer différentes images et leurs transformations.
️ Pour l’instant, les méthodes nécessitant des images bloquent. Dans un avenir proche, il est prévu d'ajouter l'implémentation asynchrone de 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 ());
}
}
Documentation sur les intégrations OpenAI
Le service d’intégration est utilisé pour créer des intégrations. N'hésitez pas à jouer avec les paramètres du constructeur.
@ 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 ());
}
}
Documents audio OpenAI
Le service audio est utilisé pour transformer l'audio en texte, ainsi que pour effectuer des traductions en anglais. N'hésitez pas à jouer avec les paramètres du constructeur.
️ Pour l’instant, les méthodes nécessitant des fichiers audio bloquent. Dans un avenir proche, il est prévu d'ajouter l'implémentation asynchrone de 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 ());
}
}
Documentation sur les fichiers OpenAI
Le service de fichiers est utilisé pour télécharger et travailler avec des fichiers. N'hésitez pas à jouer avec les paramètres du constructeur.
️ Pour l’instant, les méthodes nécessitant des fichiers bloquent. Dans un avenir proche, il est prévu d'ajouter l'implémentation asynchrone de 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 peaufine la documentation
Le service de réglage fin est utilisé pour travailler avec des fichiers et des modèles précis. N'hésitez pas à jouer avec les paramètres du constructeur.
@ 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" );
}
}
Documentation sur les modérations OpenAI
Le service de modération est utilisé pour vérifier les violations de modération. N'hésitez pas à jouer avec les paramètres du constructeur.
@ 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 ());
}
}
Il s'agit d'une bibliothèque open source, toute aide sera très appréciée. Si vous voyez qu'il existe un moyen d'améliorer le code ou la fonctionnalité, veuillez remplir le problème ou faire une pull request avec vos modifications. N'hésitez pas également à examiner les problèmes ouverts et à soumettre une pull request si vous avez votre solution.
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.