Repositori ini berisi perpustakaan yang dikelola komunitas untuk API OpenAI di java, cara termudah untuk menggunakan GPT 3/4 di aplikasi Anda.
Pustaka Java ini (Perpustakaan yang dikelola komunitas) menyediakan cara mudah untuk berinteraksi dengan API OpenAI untuk Moderasi dan Penyelesaian Obrolan. Pustaka merangkum detail yang diperlukan, sehingga memudahkan untuk mengintegrasikan model OpenAI yang canggih ke dalam aplikasi Java Anda. Proyek ini tidak dikelola oleh OPENAI, ini adalah perpustakaan tidak resmi.
Silakan lihat CONTRIBUTING.md
Semua "OPENAI_KEYS" harus dibaca melalui fungsi readKeys() yang ditentukan di sini, fungsi ini memungkinkan Anda membaca beberapa kunci secara bersamaan, dan untuk tugas multithread disarankan menggunakan beberapa kunci untuk menghindari pembatasan kecepatan. Untuk menjalankan fungsi ini Anda harus memiliki key.txt di folder root proyek Anda (silakan mengeditnya).
Untuk menggunakan API Penyelesaian Obrolan, ikuti langkah-langkah berikut:
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 );
Klik di sini untuk melompat ke contoh kode.
Untuk menggunakan API Moderasi, ikuti langkah-langkah berikut:
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 );
Klik di sini untuk melompat ke contoh kode.
Vision API dapat digunakan seperti ini, silakan menambahkan N jumlah gambar dalam daftar Gambar-
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
Klik di sini untuk melompat ke contoh kode.
Untuk menggunakan Vision API, ikuti langkah-langkah berikut:
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 );
Klik di sini untuk melompat ke contoh kode.
Speech API dapat digunakan seperti ini, silakan ubah-
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 );
Klik di sini untuk melompat ke contoh kode.
API Transkripsi dapat digunakan seperti ini, silakan mengubahnya-
EasyTranscriptionRequest request = EasyTranscriptionRequest . builder ()
. filepath ( "/Users/namankhurpia/Desktop/audio.mp3" )
. model ( "whisper-1" )
. build ();
ResponseBody response = new EasyTranscriptionService (). EasyTranscription ( "OPENAI_KEY" , request );
Klik di sini untuk melompat ke contoh kode.
API Transkripsi dapat digunakan seperti ini, silakan mengubahnya-
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 );
Klik di sini untuk melompat ke contoh kode.
API Pembuatan Gambar dapat digunakan seperti ini, silakan mengubahnya-
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 );
Klik di sini untuk melompat ke contoh kode.
Untuk menggunakan API Penyelesaian Obrolan secara asinkron, ikuti langkah-langkah berikut:
Inisialisasi objek EasyopenaiAsyncService
dengan instance AsyncDAOImpl
:
EasyopenaiAsyncService obj = new EasyopenaiAsyncService ( new AsyncDAOImpl ());
Buat daftar objek ChatMessage
untuk mewakili percakapan:
ChatMessage message = new ChatMessage ();
message . setRole ( "user" );
message . setContent ( "what is the capital of Cambodia?" );
List < ChatMessage > messages = new ArrayList <>();
messages . add ( message );
Buat objek ChatCompletionRequest
:
ChatCompletionRequest request = new ChatCompletionRequest ();
request . setModel ( "gpt-3.5-turbo" );
request . setMessages ( messages ); // old conversations as well
Lakukan panggilan API asinkron:
ChatCompletionResponse res = obj . getAsyncChatCompletion ( OPENAI_KEY , request );
Klik di sini untuk melompat ke contoh kode.
Untuk menggunakan API Moderasi secara asinkron, ikuti langkah-langkah berikut:
Buat objek ModerationAPIRequest
:
ModerationAPIRequest request = new ModerationAPIRequest ();
request . setInput ( "kill me now" );
request . setModel ( "text-moderation-latest" );
Inisialisasi objek EasyopenaiAsyncService
dengan instance AsyncDAOImpl
:
EasyopenaiAsyncService obj = new EasyopenaiAsyncService ( new AsyncDAOImpl ());
Lakukan panggilan API asinkron:
ModerationAPIResponse res = obj . getASyncModeration ( OPENAI_KEY , request );
Klik di sini untuk melompat ke contoh kode.
Untuk panggilan multi-threading dan bersamaan dengan Chat Completion API, ikuti langkah-langkah berikut:
Buat objek ChatCompletionRequestList
:
ChatCompletionRequestList list = new ChatCompletionRequestList ( new ArrayList < ChatCompletionRequest >());
Tambahkan beberapa objek ChatCompletionRequest
ke daftar:
// 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.)
Lakukan panggilan API multi-asinkron:
EasyopenaiConcurrentService concurrentCalls = new EasyopenaiConcurrentService ();
ChatCompletionResponseList responseList = concurrentCalls . CallMultipleChatCompletionAPI ( OPENAI_KEY , list );
System . out . println ( responseList );
Klik di sini untuk melompat ke contoh kode.
Untuk panggilan multi-threading dan bersamaan dengan API Moderasi, ikuti langkah-langkah berikut:
Buat objek ModerationRequestList
:
ModerationRequestList requestList = new ModerationRequestList ( new ArrayList < ModerationAPIRequest >());
Tambahkan beberapa objek ModerationAPIRequest
ke daftar:
// 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.)
Lakukan panggilan API multi-asinkron:
EasyopenaiConcurrentService concurrentCalls = new EasyopenaiConcurrentService ();
ModerationResponseList responseList = concurrentCalls . CallMultipleModerationAPI ( OPENAI_KEY , requestList );
System . out . println ( responseList );
Klik di sini untuk melompat ke contoh kode.
Ini memungkinkan Anda melakukan beberapa panggilan penyelesaian Obrolan dengan banyak tombol. Semua panggilan API dieksekusi secara paralel tetapi respons dikumpulkan secara aktif dan dikirim kembali ketika semua thread selesai.
Kelas CompletableFuture telah digunakan untuk implementasi. Silakan lihat file EasyopenaiConcurrentService.java untuk melihat sumbernya.
Contoh Penggunaan-
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 );
}
Pastikan Anda telah menginstal dependensi yang diperlukan sebelum menggunakan wrapper OpenAI API.
< 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'