Dieses Repository enthält die von der Community gepflegte Bibliothek für die OpenAI-API in Java, die einfachste Möglichkeit, GPT 3/4 in Ihren Anwendungen zu verwenden.
Diese Java-Bibliothek (von der Community verwaltete Bibliothek) bietet eine bequeme Möglichkeit, mit der OpenAI-API sowohl für die Moderation als auch für den Chat-Abschluss zu interagieren. Die Bibliothek kapselt die notwendigen Details und erleichtert so die Integration der leistungsstarken Modelle von OpenAI in Ihre Java-Anwendungen. Dieses Projekt wird nicht von OPENAI verwaltet, es handelt sich um eine inoffizielle Bibliothek.
Weitere Informationen finden Sie unter CONTRIBUTING.md
Alle „OPENAI_KEYS“ müssen über die hier definierte Funktion readKeys() gelesen werden. Mit dieser Funktion können Sie mehrere Schlüssel gleichzeitig lesen. Für Multithread-Aufgaben wird empfohlen, mehrere Schlüssel zu verwenden, um eine Ratenbegrenzung zu vermeiden. Um diese Funktion auszuführen, müssen Sie „keys.txt“ in Ihrem Projektstammordner haben (Sie können ihn jederzeit bearbeiten).
Um die Chat Completion API zu verwenden, führen Sie die folgenden Schritte aus:
Message message = Message . builder ()
. role ( "user" )
. content ( "what is the capital of Cambodia?" )
. build ();
List < Message > messages = new ArrayList <>();
messages . add ( message );
ChatCompletionRequest request = ChatCompletionRequest . builder ()
. model ( "gpt-3.5-turbo" )
. messages ( messages )
. build ();
ChatCompletionResponse response = new EasyopenaiService ( new DAOImpl ()). chatCompletion ( "OPENAI_KEY" , request );
Klicken Sie hier, um zum Codebeispiel zu springen.
Um die Moderations-API zu verwenden, führen Sie die folgenden Schritte aus:
ModerationAPIRequest request = ModerationAPIRequest . builder ()
. model ( "text-moderation-latest" )
. input ( "hello from the other side kill me now" )
. build ();
ModerationAPIResponse res = new EasyopenaiService ( new DAOImpl ()). getmoderation ( "OPENAI_KEY" , request );
Klicken Sie hier, um zum Codebeispiel zu springen.
Die Vision-API kann auf diese Weise verwendet werden. Sie können der Bilderliste gerne N Bilder hinzufügen.
VisionApiResponse responseobj = new EasyVisionService (). VisionAPI ( "OPENAI_KEY" , new EasyVisionRequest ()
. setModel ( "gpt-4-vision-preview" )
. setPrompt ( "What are the difference between these images?" )
. setImageUrls ( new ArrayList < String >() {{
add ( "https://images.pexels.com/photos/268533/pexels-photo-268533.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" );
add ( "https://images.pexels.com/photos/36717/amazing-animal-beautiful-beautifull.jpg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1" );
}}));
. setMaxtokens ( 1000 ) //Optional - for more tokens, defaults to 300
Klicken Sie hier, um zum Codebeispiel zu springen.
Gehen Sie folgendermaßen vor, um die Vision-API zu verwenden:
EasyopenaiService obj = new EasyopenaiService ( new DAOImpl ());
VisionApiRequest request = new VisionApiRequest ();
ImageUrl url = new ImageUrl ();
url . setUrl ( "https://images.pexels.com/photos/18907092/pexels-photo-18907092/free-photo-of-a-photo-of-the-golden-gate-bridge-in-the-sky.jpeg" );
url . setDetail ( "low" );
Content content1 = new Content ();
content1 . setText ( "What’s in this image?" );
content1 . setType ( "text" );
Content content2 = new Content ();
content2 . setImageUrl ( url );
content2 . setType ( "image_url" );
ArrayList < Content > listofContent = new ArrayList <>();
listofContent . add ( content1 );
listofContent . add ( content2 );
MessageList messageList = new MessageList ();
messageList . setRole ( "user" );
messageList . setContent ( listofContent );
ArrayList < MessageList > listofMessage = new ArrayList <>();
listofMessage . add ( messageList );
request . setModel ( "gpt-4-vision-preview" );
request . setMaxTokens ( 300 );
request . setMessages ( listofMessage );
VisionApiResponse res = obj . visionAPI ( OPENAI_KEY , request );
System . out . println ( "Vision API Response is:" + res );
Klicken Sie hier, um zum Codebeispiel zu springen.
Die Sprach-API kann auf diese Weise verwendet werden. Sie können sie jederzeit anpassen.
SpeechRequest request = SpeechRequest . builder ()
. model ( "tts-1" )
. input ( "Easy OpenAI is best solution." )
. voice ( "alloy" )
. build ();
ResponseBody response = new EasyopenaiService ( new DAOImpl ()). createSpeech ( "OPENAI_KEY" , request );
Klicken Sie hier, um zum Codebeispiel zu springen.
Die Transkriptions-API kann auf diese Weise verwendet werden. Sie können sie jederzeit anpassen.
EasyTranscriptionRequest request = EasyTranscriptionRequest . builder ()
. filepath ( "/Users/namankhurpia/Desktop/audio.mp3" )
. model ( "whisper-1" )
. build ();
ResponseBody response = new EasyTranscriptionService (). EasyTranscription ( "OPENAI_KEY" , request );
Klicken Sie hier, um zum Codebeispiel zu springen.
Die Transkriptions-API kann auf diese Weise verwendet werden. Sie können sie jederzeit anpassen.
File audioFile = new File ( "/Users/namankhurpia/Desktop/audio.mp3" );
MultipartBody . Part filePart = MultipartBody . Part . createFormData (
"file" ,
audioFile . getName (),
RequestBody . create ( MediaType . parse ( "audio/*" ), audioFile )
);
RequestBody model = RequestBody . create ( MediaType . parse ( "text/plain" ), "whisper-1" );
RequestBody language = RequestBody . create ( MediaType . parse ( "text/plain" ), "" );
RequestBody prompt = RequestBody . create ( MediaType . parse ( "text/plain" ), "" );
RequestBody response_format = RequestBody . create ( MediaType . parse ( "text/plain" ), "" );
RequestBody temperature = RequestBody . create ( MediaType . parse ( "text/plain" ), "" );
ResponseBody response = new EasyopenaiService ( new DAOImpl ()). createTranscriptions ( "OPENAI_KEY" , filePart , model , language , prompt , response_format , temperature );
Klicken Sie hier, um zum Codebeispiel zu springen.
Die Bildgenerierungs-API kann auf diese Weise verwendet werden. Sie können sie jederzeit anpassen.
ImageRequest imageRequest = ImageRequest . builder ()
. prompt ( "Generate a cute dog playing with frizbee" )
. model ( "dall-e-2" )
. build ();
ImageResponse response = new EasyopenaiService ( new DAOImpl ()). createImage ( "OPENAI_KEY" , imageRequest );
Klicken Sie hier, um zum Codebeispiel zu springen.
Um die Chat Completion API asynchron zu verwenden, führen Sie die folgenden Schritte aus:
Initialisieren Sie das EasyopenaiAsyncService
-Objekt mit einer Instanz von AsyncDAOImpl
:
EasyopenaiAsyncService obj = new EasyopenaiAsyncService ( new AsyncDAOImpl ());
Erstellen Sie eine Liste von ChatMessage
-Objekten, um die Konversation darzustellen:
ChatMessage message = new ChatMessage ();
message . setRole ( "user" );
message . setContent ( "what is the capital of Cambodia?" );
List < ChatMessage > messages = new ArrayList <>();
messages . add ( message );
Erstellen Sie ein ChatCompletionRequest
-Objekt:
ChatCompletionRequest request = new ChatCompletionRequest ();
request . setModel ( "gpt-3.5-turbo" );
request . setMessages ( messages ); // old conversations as well
Führen Sie den asynchronen API-Aufruf durch:
ChatCompletionResponse res = obj . getAsyncChatCompletion ( OPENAI_KEY , request );
Klicken Sie hier, um zum Codebeispiel zu springen.
Um die Moderations-API asynchron zu verwenden, führen Sie die folgenden Schritte aus:
Erstellen Sie ein ModerationAPIRequest
Objekt:
ModerationAPIRequest request = new ModerationAPIRequest ();
request . setInput ( "kill me now" );
request . setModel ( "text-moderation-latest" );
Initialisieren Sie das EasyopenaiAsyncService
-Objekt mit einer Instanz von AsyncDAOImpl
:
EasyopenaiAsyncService obj = new EasyopenaiAsyncService ( new AsyncDAOImpl ());
Führen Sie den asynchronen API-Aufruf durch:
ModerationAPIResponse res = obj . getASyncModeration ( OPENAI_KEY , request );
Klicken Sie hier, um zum Codebeispiel zu springen.
Führen Sie für Multithreading und gleichzeitige Aufrufe mit der Chat Completion API die folgenden Schritte aus:
Erstellen Sie ein ChatCompletionRequestList
-Objekt:
ChatCompletionRequestList list = new ChatCompletionRequestList ( new ArrayList < ChatCompletionRequest >());
Fügen Sie der Liste mehrere ChatCompletionRequest
Objekte hinzu:
// Example request 1
ChatCompletionRequest requestchat = new ChatCompletionRequest ();
requestchat . setModel ( "gpt-3.5-turbo" );
ChatMessage message = new ChatMessage ();
message . setRole ( "user" );
message . setContent ( "what is the capital of India?" );
List < ChatMessage > messages = new ArrayList <>();
messages . add ( message );
requestchat . setMessages ( messages );
list . add ( requestchat );
// Add more requests as needed (requestchat2, requestchat3, requestchat4, etc.)
Führen Sie den multiasynchronen API-Aufruf durch:
EasyopenaiConcurrentService concurrentCalls = new EasyopenaiConcurrentService ();
ChatCompletionResponseList responseList = concurrentCalls . CallMultipleChatCompletionAPI ( OPENAI_KEY , list );
System . out . println ( responseList );
Klicken Sie hier, um zum Codebeispiel zu springen.
Führen Sie für Multithreading und gleichzeitige Aufrufe mit der Moderations-API die folgenden Schritte aus:
Erstellen Sie ein ModerationRequestList
-Objekt:
ModerationRequestList requestList = new ModerationRequestList ( new ArrayList < ModerationAPIRequest >());
Fügen Sie der Liste mehrere ModerationAPIRequest
Objekte hinzu:
// Example request 1
ModerationAPIRequest request = new ModerationAPIRequest ();
request . setInput ( "kill me now" );
request . setModel ( "text-moderation-latest" );
requestList . add ( request );
// Add more requests as needed (request2, request3, request4, etc.)
Führen Sie den multiasynchronen API-Aufruf durch:
EasyopenaiConcurrentService concurrentCalls = new EasyopenaiConcurrentService ();
ModerationResponseList responseList = concurrentCalls . CallMultipleModerationAPI ( OPENAI_KEY , requestList );
System . out . println ( responseList );
Klicken Sie hier, um zum Codebeispiel zu springen.
Dadurch können Sie mehrere Chat-Abschlussanrufe mit mehreren Tasten tätigen. Alle API-Aufrufe werden parallel ausgeführt, aber die Antwort wird aktiv gesammelt und zurückgesendet, wenn alle Threads abgeschlossen sind.
Für die Implementierung wurde die Klasse CompletableFuture verwendet. Bitte beziehen Sie sich auf die Datei EasyopenaiConcurrentService.java, um die Quelle anzuzeigen.
Beispielverwendung:
public static void CallMultipleChatCompletionAPI_multikey_Test ()
{
//this function read multiple keys from keys.txt file
ArrayList < String > keyList = readKeys ();
EasyopenaiConcurrentService concurrentCalls = new EasyopenaiConcurrentService ();
ChatCompletionRequestList list = new ChatCompletionRequestList ( new ArrayList < ChatCompletionRequest >());
//First thread for
ChatCompletionRequest requestchat = new ChatCompletionRequest ();
requestchat . setModel ( "gpt-3.5-turbo" );
Message message = new Message ();
message . setRole ( "user" );
message . setContent ( "what is the capital of India?" );
List < Message > messages = new ArrayList <>();
messages . add ( message );
requestchat . setMessages ( messages );
list . add ( requestchat );
ChatCompletionRequest requestchat2 = new ChatCompletionRequest ();
requestchat2 . setModel ( "gpt-3.5-turbo" );
Message message2 = new Message ();
message2 . setRole ( "user" );
message2 . setContent ( "what is the capital of combodia?" );
List < Message > messages2 = new ArrayList <>();
messages2 . add ( message2 );
requestchat2 . setMessages ( messages2 );
list . add ( requestchat2 );
ChatCompletionRequest requestchat3 = new ChatCompletionRequest ();
requestchat3 . setModel ( "gpt-3.5-turbo" );
Message message3 = new Message ();
message3 . setRole ( "user" );
message3 . setContent ( "what is the capital of new zealand?" );
List < Message > messages3 = new ArrayList <>();
messages3 . add ( message3 );
requestchat3 . setMessages ( messages3 );
list . add ( requestchat3 );
ChatCompletionRequest requestchat4 = new ChatCompletionRequest ();
requestchat4 . setModel ( "gpt-3.5-turbo" );
Message message4 = new Message ();
message4 . setRole ( "user" );
message4 . setContent ( "what is the capital of hawaii? and what is 2+2?" );
List < Message > messages4 = new ArrayList <>();
messages4 . add ( message4 );
requestchat4 . setMessages ( messages4 );
list . add ( requestchat4 );
ChatCompletionResponseList responseList = concurrentCalls . CallMultipleChatCompletionAPI ( keyList , list );
System . out . println ( "response is" + responseList );
}
Stellen Sie sicher, dass Sie die erforderlichen Abhängigkeiten installiert haben, bevor Sie den OpenAI API-Wrapper verwenden.
< dependency >
< groupId >io.github.namankhurpia</ groupId >
< artifactId >easyopenai</ artifactId >
< version >x.x.x</ version >
</ dependency >
implementation group: 'io.github.namankhurpia', name: 'easyopenai', version: 'x.x.x'
implementation 'io.github.namankhurpia:easyopenai:x.x.x'
implementation("io.github.namankhurpia:easyopenai:x.x.x")
libraryDependencies += "io.github.namankhurpia" % "easyopenai" % "x.x.x"
<dependency org="io.github.namankhurpia" name="easyopenai" rev="x.x.x"/>
@Grapes(
@Grab(group='io.github.namankhurpia', module='easyopenai', version='x.x.x')
)
[io.github.namankhurpia/easyopenai "x.x.x"]
'io.github.namankhurpia:easyopenai:jar:x.x.x'