Skip to content
This repository has been archived by the owner on Jun 6, 2024. It is now read-only.

Commit

Permalink
Update AssistantTest (#427)
Browse files Browse the repository at this point in the history
Fixed issue with deleteAssistantFile API method
Added file test cases
Added shared Assistant and AssistantFiles
Improved cleanup only deletes resources for this test
  • Loading branch information
TheoKanning authored Dec 2, 2023
1 parent 3d60d6e commit 1f43e06
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 82 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ public interface OpenAiApi {

@Headers({"OpenAI-Beta: assistants=v1"})
@GET("/v1/assistants/{assistant_id}/files")
Single<OpenAiResponse<Assistant>> listAssistantFiles(@Path("assistant_id") String assistantId, @QueryMap Map<String, Object> filterRequest);
Single<OpenAiResponse<AssistantFile>> listAssistantFiles(@Path("assistant_id") String assistantId, @QueryMap Map<String, Object> filterRequest);

@Headers({"OpenAI-Beta: assistants=v1"})
@POST("/v1/threads")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ public DeleteResult deleteAssistantFile(String assistantId, String fileId) {
return execute(api.deleteAssistantFile(assistantId, fileId));
}

public OpenAiResponse<Assistant> listAssistantFiles(String assistantId, ListSearchParameters params) {
public OpenAiResponse<AssistantFile> listAssistantFiles(String assistantId, ListSearchParameters params) {
Map<String, Object> queryParameters = mapper.convertValue(params, new TypeReference<Map<String, Object>>() {
});
return execute(api.listAssistantFiles(assistantId, queryParameters));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,57 +6,68 @@
import com.theokanning.openai.assistants.*;
import com.theokanning.openai.file.File;
import com.theokanning.openai.utils.TikTokensUtil;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.*;

import java.util.Collections;
import java.util.List;

import static org.junit.jupiter.api.Assertions.*;


@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class AssistantTest {
public static final String MATH_TUTOR = "Math Tutor";
public static final String ASSISTANT_INSTRUCTION = "You are a personal Math Tutor.";

static String token = System.getenv("OPENAI_TOKEN");;
static OpenAiService service = new OpenAiService(System.getenv("OPENAI_TOKEN"));
static String assistantId;
static String fileId;

static OpenAiService service = new OpenAiService(token);

@Test
void retrieveAssistant() {
Assistant createAssistantResponse = createAndValidateAssistant();

Assistant retrieveAssistantResponse = service.retrieveAssistant(createAssistantResponse.getId());
validateAssistantResponse(retrieveAssistantResponse);
@AfterAll
static void teardown() {
try {
service.deleteAssistantFile(assistantId, fileId);
} catch (Exception e) {
// do nothing
}
try {
service.deleteAssistant(assistantId);
} catch (Exception e) {
// do nothing
}
}

@Test
void modifyAssistant() {
Assistant createAssistantResponse = createAndValidateAssistant();
@Order(1)
void createAssistant() {
AssistantRequest assistantRequest = AssistantRequest.builder().model(TikTokensUtil.ModelEnum.GPT_4_1106_preview.getName()).name("Math Tutor").instructions("You are a personal Math Tutor.").tools(Collections.singletonList(new Tool(AssistantToolsEnum.CODE_INTERPRETER, null))).build();
Assistant assistant = service.createAssistant(assistantRequest);

String modifiedName = MATH_TUTOR + "Modified";
ModifyAssistantRequest modifyRequest = ModifyAssistantRequest.builder()
.name(modifiedName)
.build();
assistantId = assistant.getId();

Assistant modifiedAssistantResponse = service.modifyAssistant(createAssistantResponse.getId(), modifyRequest);
assertNotNull(modifiedAssistantResponse);
assertEquals(modifiedName, modifiedAssistantResponse.getName());
assertEquals(assistant.getName(), "Math Tutor");
assertEquals(assistant.getTools().get(0).getType(), AssistantToolsEnum.CODE_INTERPRETER);
}

@Test
void deleteAssistant() {
Assistant createAssistantResponse = createAndValidateAssistant();
@Order(2)
void retrieveAssistant() {
Assistant assistant = service.retrieveAssistant(assistantId);

DeleteResult deletedAssistant = service.deleteAssistant(createAssistantResponse.getId());
assertEquals(assistant.getName(), "Math Tutor");
}

assertNotNull(deletedAssistant);
assertEquals(createAssistantResponse.getId(), deletedAssistant.getId());
assertTrue(deletedAssistant.isDeleted());
@Test
@Order(3)
void modifyAssistant() {
String modifiedName = "Science Tutor";
ModifyAssistantRequest modifyRequest = ModifyAssistantRequest.builder().name(modifiedName).build();

Assistant modifiedAssistant = service.modifyAssistant(assistantId, modifyRequest);
assertEquals(modifiedName, modifiedAssistant.getName());
}

@Test
@Order(4)
void listAssistants() {
OpenAiResponse<Assistant> assistants = service.listAssistants(ListSearchParameters.builder().build());

Expand All @@ -65,79 +76,53 @@ void listAssistants() {
}

@Test
@Order(5)
void createAssistantFile() {
File uploadedFile = uploadAssistantFile();

Assistant assistant = createAndValidateAssistant();
String filePath = "src/test/resources/assistants-data.html";
File uploadedFile = service.uploadFile("assistants", filePath);

AssistantFile assistantFile = service.createAssistantFile(assistant.getId(), new AssistantFileRequest(uploadedFile.getId()));
AssistantFile assistantFile = service.createAssistantFile(assistantId, new AssistantFileRequest(uploadedFile.getId()));

fileId = assistantFile.getId();
assertNotNull(assistantFile);
assertEquals(uploadedFile.getId(), assistantFile.getId());
assertEquals(assistant.getId(), assistantFile.getAssistantId());
assertEquals(assistantId, assistantFile.getAssistantId());
}

@Test
@Order(6)
void retrieveAssistantFile() {
//TODO
//There is a bug with uploading assistant files https://community.openai.com/t/possible-bug-with-agent-creation-php-file-upload/484490/5
//So this would have to be done later
}
AssistantFile file = service.retrieveAssistantFile(assistantId, fileId);

@Test
void deleteAssistantFile() {
//TODO
//There is a bug with uploading assistant files https://community.openai.com/t/possible-bug-with-agent-creation-php-file-upload/484490/5
//So this would have to be done later
assertEquals(file.getId(), fileId);
}


@Test
@Order(7)
void listAssistantFiles() {
//TODO
//There is a bug with uploading assistant files https://community.openai.com/t/possible-bug-with-agent-creation-php-file-upload/484490/5
//So this would have to be done later
}

@AfterAll
static void clean() {
//Clean up all data created during this test
ListSearchParameters queryFilter = ListSearchParameters.builder()
.limit(100)
.build();
OpenAiResponse<Assistant> assistantListAssistant = service.listAssistants(queryFilter);
assistantListAssistant.getData().forEach(assistant ->{
service.deleteAssistant(assistant.getId());
});
}
List<AssistantFile> files = service.listAssistantFiles(assistantId, new ListSearchParameters()).data;

private static File uploadAssistantFile() {
String filePath = "src/test/resources/assistants-data.html";
return service.uploadFile("assistants", filePath);
assertFalse(files.isEmpty());
assertEquals(files.get(0).getId(), fileId);
assertEquals(files.get(0).getObject(), "assistant.file");
}

private static Assistant createAndValidateAssistant() {
AssistantRequest assistantRequest = assistantStub();
Assistant createAssistantResponse = service.createAssistant(assistantRequest);
validateAssistantResponse(createAssistantResponse);
@Test
@Order(8)
void deleteAssistantFile() {
DeleteResult deletedFile = service.deleteAssistantFile(assistantId, fileId);

return createAssistantResponse;
assertEquals(deletedFile.getId(), fileId);
assertTrue(deletedFile.isDeleted());
}

private static AssistantRequest assistantStub() {
return AssistantRequest.builder()
.model(TikTokensUtil.ModelEnum.GPT_4_1106_preview.getName())
.name(MATH_TUTOR)
.instructions(ASSISTANT_INSTRUCTION)
.tools(Collections.singletonList(new Tool(AssistantToolsEnum.CODE_INTERPRETER, null)))
.build();
}
@Test
@Order(9)
void deleteAssistant() {
DeleteResult deletedAssistant = service.deleteAssistant(assistantId);

private static void validateAssistantResponse(Assistant assistantResponse) {
assertNotNull(assistantResponse);
assertNotNull(assistantResponse.getId());
assertNotNull(assistantResponse.getCreatedAt());
assertNotNull(assistantResponse.getObject());
assertEquals(assistantResponse.getTools().get(0).getType(), AssistantToolsEnum.CODE_INTERPRETER);
assertEquals(MATH_TUTOR, assistantResponse.getName());
assertEquals(assistantId, deletedAssistant.getId());
assertTrue(deletedAssistant.isDeleted());
}
}

0 comments on commit 1f43e06

Please sign in to comment.