พื้นที่เก็บข้อมูลนี้มีไลบรารีที่ดูแลโดยชุมชนสำหรับ API ของ OpenAI ใน java ซึ่งเป็นวิธีที่ง่ายที่สุดในการใช้ GPT 3/4 ในแอปพลิเคชันของคุณ
ไลบรารี Java นี้ (ไลบรารีที่ดูแลโดยชุมชน) มอบวิธีที่สะดวกในการโต้ตอบกับ API ของ OpenAI สำหรับทั้งการกลั่นกรองและการแชทให้เสร็จสิ้น ไลบรารีสรุปรายละเอียดที่จำเป็น ทำให้ง่ายต่อการรวมโมเดลอันทรงพลังของ OpenAI เข้ากับแอปพลิเคชัน Java ของคุณ โครงการนี้ไม่ได้รับการดูแลโดย OPENAI นี่เป็นห้องสมุดที่ไม่เป็นทางการ
โปรดดูที่ CONTRIBUTING.md
"OPENAI_KEYS" ทั้งหมดจะต้องอ่านผ่านฟังก์ชัน readKeys() ที่กำหนดไว้ที่นี่ ฟังก์ชันนี้ช่วยให้คุณสามารถอ่านหลายคีย์พร้อมกันได้ และสำหรับงานแบบมัลติเธรด ขอแนะนำให้ใช้หลายคีย์เพื่อหลีกเลี่ยงการจำกัดอัตรา หากต้องการเรียกใช้ฟังก์ชันนี้ คุณต้องมีkeys.txtในโฟลเดอร์รูทโปรเจ็กต์ของคุณ (แก้ไขได้ตามใจชอบ)
หากต้องการใช้ Chat Completion API ให้ทำตามขั้นตอนเหล่านี้:
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 );
คลิกที่นี่เพื่อข้ามไปยังตัวอย่างโค้ด
หากต้องการใช้ Moderation API ให้ทำตามขั้นตอนเหล่านี้:
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 );
คลิกที่นี่เพื่อข้ามไปยังตัวอย่างโค้ด
Vision API สามารถใช้เช่นนี้ได้ คุณสามารถเพิ่มรูปภาพจำนวน N จำนวนในรายการรูปภาพได้ตามต้องการ
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
คลิกที่นี่เพื่อข้ามไปยังตัวอย่างโค้ด
หากต้องการใช้ Vision API ให้ทำตามขั้นตอนเหล่านี้:
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 );
คลิกที่นี่เพื่อข้ามไปยังตัวอย่างโค้ด
Speech API สามารถใช้เช่นนี้ได้ ปรับแต่งได้ตามใจชอบ
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 );
คลิกที่นี่เพื่อข้ามไปยังตัวอย่างโค้ด
Transcription API สามารถใช้เช่นนี้ได้ ปรับแต่งได้ตามใจชอบ
EasyTranscriptionRequest request = EasyTranscriptionRequest . builder ()
. filepath ( "/Users/namankhurpia/Desktop/audio.mp3" )
. model ( "whisper-1" )
. build ();
ResponseBody response = new EasyTranscriptionService (). EasyTranscription ( "OPENAI_KEY" , request );
คลิกที่นี่เพื่อข้ามไปยังตัวอย่างโค้ด
Transcription API สามารถใช้เช่นนี้ได้ ปรับแต่งได้ตามใจชอบ
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 );
คลิกที่นี่เพื่อข้ามไปยังตัวอย่างโค้ด
Image Generation API สามารถใช้เช่นนี้ได้ ปรับแต่งได้ตามใจชอบ
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 );
คลิกที่นี่เพื่อข้ามไปยังตัวอย่างโค้ด
หากต้องการใช้ Chat Completion API แบบอะซิงโครนัส ให้ทำตามขั้นตอนเหล่านี้:
เริ่มต้นวัตถุ EasyopenaiAsyncService
ด้วยอินสแตนซ์ของ AsyncDAOImpl
:
EasyopenaiAsyncService obj = new EasyopenaiAsyncService ( new AsyncDAOImpl ());
สร้างรายการวัตถุ ChatMessage
เพื่อแสดงการสนทนา:
ChatMessage message = new ChatMessage ();
message . setRole ( "user" );
message . setContent ( "what is the capital of Cambodia?" );
List < ChatMessage > messages = new ArrayList <>();
messages . add ( message );
สร้างวัตถุ ChatCompletionRequest
:
ChatCompletionRequest request = new ChatCompletionRequest ();
request . setModel ( "gpt-3.5-turbo" );
request . setMessages ( messages ); // old conversations as well
ทำการเรียก API แบบอะซิงโครนัส:
ChatCompletionResponse res = obj . getAsyncChatCompletion ( OPENAI_KEY , request );
คลิกที่นี่เพื่อข้ามไปยังตัวอย่างโค้ด
หากต้องการใช้ Moderation API แบบอะซิงโครนัส ให้ทำตามขั้นตอนเหล่านี้:
สร้างวัตถุ ModerationAPIRequest
:
ModerationAPIRequest request = new ModerationAPIRequest ();
request . setInput ( "kill me now" );
request . setModel ( "text-moderation-latest" );
เริ่มต้นวัตถุ EasyopenaiAsyncService
ด้วยอินสแตนซ์ของ AsyncDAOImpl
:
EasyopenaiAsyncService obj = new EasyopenaiAsyncService ( new AsyncDAOImpl ());
ทำการเรียก API แบบอะซิงโครนัส:
ModerationAPIResponse res = obj . getASyncModeration ( OPENAI_KEY , request );
คลิกที่นี่เพื่อข้ามไปยังตัวอย่างโค้ด
สำหรับการโทรแบบมัลติเธรดและการโทรพร้อมกันด้วย Chat Completion API ให้ทำตามขั้นตอนเหล่านี้:
สร้างวัตถุ ChatCompletionRequestList
:
ChatCompletionRequestList list = new ChatCompletionRequestList ( new ArrayList < ChatCompletionRequest >());
เพิ่มออบเจ็กต์ ChatCompletionRequest
หลายรายการลงในรายการ:
// 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.)
ทำการเรียก API แบบอะซิงโครนัสหลายรายการ:
EasyopenaiConcurrentService concurrentCalls = new EasyopenaiConcurrentService ();
ChatCompletionResponseList responseList = concurrentCalls . CallMultipleChatCompletionAPI ( OPENAI_KEY , list );
System . out . println ( responseList );
คลิกที่นี่เพื่อข้ามไปยังตัวอย่างโค้ด
สำหรับการเรียกแบบมัลติเธรดและการเรียกใช้พร้อมกันด้วย Moderation API ให้ทำตามขั้นตอนเหล่านี้:
สร้างวัตถุ ModerationRequestList
:
ModerationRequestList requestList = new ModerationRequestList ( new ArrayList < ModerationAPIRequest >());
เพิ่มออบเจ็กต์ ModerationAPIRequest
หลายรายการลงในรายการ:
// 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.)
ทำการเรียก API แบบอะซิงโครนัสหลายรายการ:
EasyopenaiConcurrentService concurrentCalls = new EasyopenaiConcurrentService ();
ModerationResponseList responseList = concurrentCalls . CallMultipleModerationAPI ( OPENAI_KEY , requestList );
System . out . println ( responseList );
คลิกที่นี่เพื่อข้ามไปยังตัวอย่างโค้ด
ซึ่งจะทำให้คุณสามารถโทรเสร็จสิ้นการแชทได้หลายครั้งโดยใช้หลายปุ่ม การเรียก API ทั้งหมดจะดำเนินการแบบคู่ขนาน แต่การตอบสนองจะถูกรวบรวมและส่งกลับเมื่อเธรดทั้งหมดเสร็จสิ้น
มีการใช้คลาส CompletableFuture เพื่อนำไปใช้งาน กรุณาอ้างอิงไฟล์ EasyopenaiConcurrentService.java เพื่อดูแหล่งที่มา
ตัวอย่างการใช้งาน-
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 );
}
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งการขึ้นต่อกันที่จำเป็นก่อนที่จะใช้ OpenAI API Wrapper
< 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'