Skip to content

Commit

Permalink
adding Concurrent Chat completion API
Browse files Browse the repository at this point in the history
  • Loading branch information
namankhurpia committed Nov 26, 2023
1 parent 534a4f8 commit 950ab5a
Show file tree
Hide file tree
Showing 10 changed files with 281 additions and 29 deletions.
Binary file modified .DS_Store
Binary file not shown.
8 changes: 8 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,14 @@
<version>2.0.9</version>
</dependency>

<!-- https://mvnrepository.com/artifact/concurrent/concurrent -->
<dependency>
<groupId>concurrent</groupId>
<artifactId>concurrent</artifactId>
<version>1.3.4</version>
</dependency>





Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package io.github.namankhurpia.Interfaces;

import io.github.namankhurpia.Pojo.MyModels.ChatCompletionRequestList;
import io.github.namankhurpia.Pojo.MyModels.ChatCompletionResponseList;
import io.github.namankhurpia.Pojo.MyModels.ModerationRequestList;
import io.github.namankhurpia.Pojo.MyModels.ModerationResponseList;

public interface ConcurrentApiInterface {

ModerationResponseList CallMultipleModerationAPI(String key,ModerationRequestList requestList);

ChatCompletionResponseList CallMultipleChatCompletionAPI(String key, ChatCompletionRequestList requestList);

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
public interface EndPoints {

static final String BASE_URL = "https://api.openai.com/";
static final String OPENAI_KEY = "";
static final String OPENAI_KEY = "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";
}

This file was deleted.

9 changes: 3 additions & 6 deletions src/main/java/io/github/namankhurpia/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,13 @@
import io.github.namankhurpia.DAO.AsyncDAOImpl;
import io.github.namankhurpia.DAO.DAOImpl;
import io.github.namankhurpia.Pojo.Moderations.ModerationAPIRequest;
import io.github.namankhurpia.Pojo.Moderations.ModerationAPIResponse;
import io.github.namankhurpia.Pojo.MyModels.ModerationRequestList;
import io.github.namankhurpia.Pojo.MyModels.ModerationResponseList;
import io.github.namankhurpia.Service.AsyncModerationAPIServiceImpl;
import io.github.namankhurpia.Service.ModerationAPIServiceImpl;
import io.github.namankhurpia.Service.MultipleCalls.ConcurrentCalls;
import io.github.namankhurpia.Service.ConcurrentAPIServiceImpl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

import static io.github.namankhurpia.Interfaces.EndPoints.OPENAI_KEY;
Expand Down Expand Up @@ -52,8 +49,8 @@ public static void main(String[] args) throws IOException, ExecutionException, I

//ModerationAPIResponse res = obj2.getASyncmoderation(OPENAI_KEY,request);

ConcurrentCalls concurrentCalls = new ConcurrentCalls();
concurrentCalls.CallMultipleModerationAPI(OPENAI_KEY,requestList);
ConcurrentAPIServiceImpl concurrentCalls = new ConcurrentAPIServiceImpl();
System.out.println(concurrentCalls.CallMultipleModerationAPI(OPENAI_KEY,requestList));



Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package io.github.namankhurpia.Pojo.MyModels;

import io.github.namankhurpia.Pojo.ChatCompletion.ChatCompletionRequest;


import java.util.ArrayList;
import java.util.Collection;

/**
* contains all functionality of an arraylist
*/
public class ChatCompletionRequestList {

/**
* Min Size = 1;
*/

ArrayList<ChatCompletionRequest> requestList;

public ChatCompletionRequestList(ArrayList<ChatCompletionRequest> requestList)
{
this.requestList = requestList;
}

public void add(ChatCompletionRequest obj)
{
requestList.add(obj);
}

public void remove(int index)
{
requestList.remove(index);
}

public void remove(ChatCompletionRequest obj)
{
requestList.remove(obj);
}

public int size()
{
return requestList.size();
}

public void add(int index, ChatCompletionRequest element)
{
requestList.add(index, element);
}

public void addAll(Collection collection)
{
requestList.addAll(collection);
}

public void addAll(int index,Collection collection)
{
requestList.addAll(index,collection);
}

public void clear()
{
requestList.clear();
}

public boolean contains(ChatCompletionRequest request)
{
return requestList.contains(request);
}

public ChatCompletionRequest get(int index)
{
return requestList.get(index);
}

public int indexOf(ChatCompletionRequest obj)
{
return requestList.indexOf(obj);
}

public boolean isEmpty()
{
return requestList.isEmpty();
}



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package io.github.namankhurpia.Pojo.MyModels;


import io.github.namankhurpia.Pojo.ChatCompletion.ChatCompletionResponse;


import java.util.ArrayList;
import java.util.Collection;

/**
* contains all functionality of an arraylist
*/
public class ChatCompletionResponseList {

/**
* Min Size = 1;
*/
ArrayList<ChatCompletionResponse> responseList;

public ChatCompletionResponseList(ArrayList<ChatCompletionResponse> requestList)
{
this.responseList = requestList;
}

public void add(ChatCompletionResponse obj)
{
responseList.add(obj);
}

public void remove(int index)
{
responseList.remove(index);
}

public void remove(ChatCompletionResponse obj)
{
responseList.remove(obj);
}

public int size()
{
return responseList.size();
}

public void add(int index, ChatCompletionResponse element)
{
responseList.add(index, element);
}

public void addAll(Collection collection)
{
responseList.addAll(collection);
}

public void addAll(int index,Collection collection)
{
responseList.addAll(index,collection);
}

public void clear()
{
responseList.clear();
}

public boolean contains(ChatCompletionResponse request)
{
return responseList.contains(request);
}

public ChatCompletionResponse get(int index)
{
return responseList.get(index);
}

public int indexOf(ChatCompletionResponse obj)
{
return responseList.indexOf(obj);
}

public boolean isEmpty()
{
return responseList.isEmpty();
}

}
Original file line number Diff line number Diff line change
@@ -1,18 +1,87 @@
package io.github.namankhurpia.Pojo.MyModels;

import io.github.namankhurpia.Pojo.Moderations.ModerationAPIRequest;
import io.github.namankhurpia.Pojo.Moderations.ModerationAPIResponse;
import lombok.Data;

import java.util.ArrayList;
import java.util.Collection;

/**
* contains all functionality of an arraylist
*/
@Data
public class ModerationResponseList {

/**
* Min Size = 1;
*/
ArrayList<ModerationAPIResponse> responseList;

ModerationResponseList()
public ModerationResponseList(ArrayList<ModerationAPIResponse> requestList)
{
this.responseList = requestList;
}

public void add(ModerationAPIResponse obj)
{
responseList.add(obj);
}

public void remove(int index)
{
responseList.remove(index);
}

public void remove(ModerationAPIResponse obj)
{
responseList.remove(obj);
}

public int size()
{
return responseList.size();
}

public void add(int index, ModerationAPIResponse element)
{
responseList.add(index, element);
}

public void addAll(Collection collection)
{
responseList.addAll(collection);
}

public void addAll(int index,Collection collection)
{
responseList.addAll(index,collection);
}

public void clear()
{
responseList.clear();
}

public boolean contains(ModerationAPIResponse request)
{
return responseList.contains(request);
}

public ModerationAPIResponse get(int index)
{
return responseList.get(index);
}

public int indexOf(ModerationAPIResponse obj)
{
return responseList.indexOf(obj);
}

public boolean isEmpty()
{
return responseList.isEmpty();
}


}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package io.github.namankhurpia.Service.MultipleCalls;
package io.github.namankhurpia.Service;

import io.github.namankhurpia.DAO.AsyncDAOImpl;
import io.github.namankhurpia.Exception.InvalidSizeException;
import io.github.namankhurpia.Interfaces.MultipleCallInterface;
import io.github.namankhurpia.Pojo.Moderations.ModerationAPIRequest;
import io.github.namankhurpia.Interfaces.ConcurrentApiInterface;
import io.github.namankhurpia.Pojo.Moderations.ModerationAPIResponse;
import io.github.namankhurpia.Pojo.MyModels.ChatCompletionRequestList;
import io.github.namankhurpia.Pojo.MyModels.ChatCompletionResponseList;
import io.github.namankhurpia.Pojo.MyModels.ModerationRequestList;
import io.github.namankhurpia.Pojo.MyModels.ModerationResponseList;
import io.github.namankhurpia.Service.AsyncModerationAPIServiceImpl;

import java.io.IOException;
import java.util.ArrayList;
Expand All @@ -17,9 +17,7 @@

import static io.github.namankhurpia.Interfaces.EndPoints.OPENAI_KEY;

public class ConcurrentCalls implements MultipleCallInterface {

ModerationResponseList responseList;
public class ConcurrentAPIServiceImpl implements ConcurrentApiInterface {


@Override
Expand Down Expand Up @@ -54,9 +52,7 @@ public ModerationResponseList CallMultipleModerationAPI(String key, ModerationRe
futures.add(resultFuture);
}

CompletableFuture<Void> allOf = CompletableFuture.allOf(
futures.toArray(new CompletableFuture[0]));

CompletableFuture<Void> allOf = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));


try {
Expand All @@ -75,8 +71,14 @@ public ModerationResponseList CallMultipleModerationAPI(String key, ModerationRe
}
}

ModerationResponseList responseList = new ModerationResponseList(new ArrayList<ModerationAPIResponse>());
// Handle the combined result or individual results as needed
System.out.println("Combined Result: " + results);
responseList.addAll(results);
return responseList;
}

@Override
public ChatCompletionResponseList CallMultipleChatCompletionAPI(String key, ChatCompletionRequestList requestList) {
return null;
}
}

0 comments on commit 950ab5a

Please sign in to comment.