これは、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 モデルのドキュメント
Models サービスは、モデルのリストまたは特定のモデルに関する情報を取得するために使用されます。
@ 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 サービスはテキストを補完するために使用されます。ビルダーのパラメータを自由にいじってみてください。
@ 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 微調整ドキュメント
Fine-tunes サービスは、ファイルとモデルを微調整するために使用されます。ビルダーのパラメータを自由にいじってみてください。
@ 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.