يحتوي هذا المستودع على المكتبة التي يديرها المجتمع لواجهة برمجة تطبيقات OpenAI في جافا، وهي أسهل طريقة لاستخدام GPT 3/4 في تطبيقاتك.
توفر مكتبة Java هذه (المكتبة التي يديرها المجتمع) طريقة ملائمة للتفاعل مع واجهة برمجة تطبيقات OpenAI لكل من الإشراف وإكمال الدردشة. تحتوي المكتبة على التفاصيل الضرورية، مما يجعل من السهل دمج نماذج OpenAI القوية في تطبيقات Java الخاصة بك. لا تتم صيانة هذا المشروع بواسطة OPENAI، فهذه مكتبة غير رسمية.
يرجى الرجوع إلى CONTRIBUTING.md
يجب قراءة جميع "OPENAI_KEYS" من خلال وظيفة readKeys() المحددة هنا، وتسمح لك هذه الوظيفة بقراءة مفاتيح متعددة في نفس الوقت، وبالنسبة للمهام متعددة الخيوط، يُنصح باستخدام مفاتيح متعددة لتجنب تحديد المعدل. لتشغيل هذه الوظيفة، يجب أن يكون لديك ملف files.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 );
انقر هنا للانتقال إلى مثال التعليمات البرمجية.
لاستخدام واجهة برمجة تطبيقات الإشراف، اتبع الخطوات التالية:
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 );
انقر هنا للانتقال إلى مثال التعليمات البرمجية.
يمكن استخدام واجهة برمجة تطبيقات الكلام على هذا النحو، فلا تتردد في التعديل-
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 );
انقر هنا للانتقال إلى مثال التعليمات البرمجية.
يمكن استخدام واجهة برمجة تطبيقات النسخ على هذا النحو، فلا تتردد في التعديل-
EasyTranscriptionRequest request = EasyTranscriptionRequest . builder ()
. filepath ( "/Users/namankhurpia/Desktop/audio.mp3" )
. model ( "whisper-1" )
. build ();
ResponseBody response = new EasyTranscriptionService (). EasyTranscription ( "OPENAI_KEY" , request );
انقر هنا للانتقال إلى مثال التعليمات البرمجية.
يمكن استخدام واجهة برمجة تطبيقات النسخ على هذا النحو، فلا تتردد في التعديل-
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 );
انقر هنا للانتقال إلى مثال التعليمات البرمجية.
يمكن استخدام واجهة برمجة تطبيقات إنشاء الصور بهذه الطريقة، فلا تتردد في التعديل-
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 );
انقر هنا للانتقال إلى مثال التعليمات البرمجية.
لاستخدام واجهة 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 );
انقر هنا للانتقال إلى مثال التعليمات البرمجية.
بالنسبة للمكالمات متعددة الخيوط والمتزامنة باستخدام واجهة برمجة تطبيقات الإشراف، اتبع الخطوات التالية:
قم بإنشاء كائن 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) بالتوازي ولكن يتم جمع الاستجابة بشكل نشط وإرسالها مرة أخرى عند الانتهاء من جميع سلاسل الرسائل.
تم استخدام فئة CompleteableFuture للتنفيذ. يرجى الرجوع إلى ملف 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.
< 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'