이 저장소에는 애플리케이션에서 GPT 3/4를 사용하는 가장 쉬운 방법인 Java의 OpenAI API용 커뮤니티 유지 라이브러리가 포함되어 있습니다.
이 Java 라이브러리(커뮤니티에서 관리하는 라이브러리)는 조정 및 채팅 완료를 위해 OpenAI의 API와 상호 작용하는 편리한 방법을 제공합니다. 라이브러리는 필요한 세부 정보를 캡슐화하여 OpenAI의 강력한 모델을 Java 애플리케이션에 쉽게 통합할 수 있도록 해줍니다. 이 프로젝트는 OPENAI에서 관리하지 않으며 비공식 라이브러리입니다.
CONTRIBUTING.md를 참조하세요.
모든 "OPENAI_KEYS"는 여기에 정의된 readKeys() 함수를 통해 읽어야 합니다. 이 함수를 사용하면 동시에 여러 키를 읽을 수 있으며 멀티스레드 작업의 경우 속도 제한을 피하기 위해 여러 키를 사용하는 것이 좋습니다. 이 기능을 실행하려면 프로젝트 루트 폴더에 key.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를 비동기식으로 사용하려면 다음 단계를 따르세요.
AsyncDAOImpl
인스턴스를 사용하여 EasyopenaiAsyncService
객체를 초기화합니다.
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" );
AsyncDAOImpl
인스턴스를 사용하여 EasyopenaiAsyncService
객체를 초기화합니다.
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 래퍼를 사용하기 전에 필요한 종속성이 설치되어 있는지 확인하세요.
< 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'