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

Commit 4ff2758

Browse files
390 Added runs (#401)
* 390 Added runs * 390 Added runs --------- Co-authored-by: Theo Kanning <[email protected]>
1 parent 99162e0 commit 4ff2758

File tree

11 files changed

+295
-17
lines changed

11 files changed

+295
-17
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.theokanning.openai.runs;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
9+
@Builder
10+
@NoArgsConstructor
11+
@AllArgsConstructor
12+
@Data
13+
public class MessageCreation {
14+
@JsonProperty("message_id")
15+
String messageId;
16+
}
+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.theokanning.openai.runs;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
9+
import java.util.List;
10+
import java.util.Map;
11+
12+
@Builder
13+
@NoArgsConstructor
14+
@AllArgsConstructor
15+
@Data
16+
public class Run {
17+
18+
@JsonProperty("assistant_id")
19+
String assistantId;
20+
@JsonProperty("cancelled_at")
21+
Long cancelledAt;
22+
@JsonProperty("completed_at")
23+
Long completedAt;
24+
@JsonProperty("created_at")
25+
Long createdAt;
26+
@JsonProperty("expires_at")
27+
Long expiresAt;
28+
@JsonProperty("failed_at")
29+
Long failedAt;
30+
@JsonProperty("file_ids")
31+
List<String> fileIds;
32+
String id;
33+
String instructions;
34+
@JsonProperty("last_error")
35+
String lastError;
36+
Map<String, String> metadata;
37+
String model;
38+
String object;
39+
@JsonProperty("started_at")
40+
Long startedAt;
41+
String status;
42+
@JsonProperty("thread_id")
43+
String threadId;
44+
List<Tool> tools;
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.theokanning.openai.runs;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
import java.util.List;
9+
import java.util.Map;
10+
11+
@Builder
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
@Data
15+
public class RunCreateRequest {
16+
String assistantId;
17+
18+
// Optional
19+
String model;
20+
String instructions;
21+
List<Tool> tools;
22+
Map<String, String> metadata;
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.theokanning.openai.runs;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
9+
@Builder
10+
@NoArgsConstructor
11+
@AllArgsConstructor
12+
@Data
13+
public class RunStep {
14+
15+
@JsonProperty("assistant_id")
16+
String assistantId;
17+
@JsonProperty("canelled_at")
18+
Long cancelledAt;
19+
@JsonProperty("completed_at")
20+
Long completedAt;
21+
@JsonProperty("created_at")
22+
Long createdAt;
23+
@JsonProperty("expired_at")
24+
Long expiredAt;
25+
@JsonProperty("failed_at")
26+
Long failedAt;
27+
String id;
28+
@JsonProperty("last_error")
29+
String lastError;
30+
String object;
31+
@JsonProperty("run_id")
32+
String runId;
33+
String status;
34+
@JsonProperty("step_details")
35+
StepDetails stepDetails;
36+
@JsonProperty("thread_id")
37+
String threadId;
38+
String type;
39+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.theokanning.openai.runs;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
5+
import java.util.List;
6+
7+
public class RunSteps {
8+
9+
String object;
10+
List<RunSteps> data;
11+
@JsonProperty("first_id")
12+
String firstId;
13+
@JsonProperty("last_id")
14+
String lastId;
15+
@JsonProperty("has_more")
16+
boolean hasMore;
17+
}
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.theokanning.openai.runs;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
5+
import java.util.List;
6+
7+
public class Runs {
8+
9+
String object;
10+
List<Runs> data;
11+
@JsonProperty("first_id")
12+
String firstId;
13+
@JsonProperty("last_id")
14+
String lastId;
15+
@JsonProperty("has_more")
16+
boolean hasMore;
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.theokanning.openai.runs;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
9+
@Builder
10+
@NoArgsConstructor
11+
@AllArgsConstructor
12+
@Data
13+
public class StepDetails {
14+
15+
@JsonProperty("message_creation")
16+
MessageCreation messageCreation;
17+
String type;
18+
}
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.theokanning.openai.runs;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
@Builder
9+
@NoArgsConstructor
10+
@AllArgsConstructor
11+
@Data
12+
public class Tool {
13+
14+
String type;
15+
}

Diff for: client/src/main/java/com/theokanning/openai/client/OpenAiApi.java

+10
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
import com.theokanning.openai.model.Model;
3434
import com.theokanning.openai.moderation.ModerationRequest;
3535
import com.theokanning.openai.moderation.ModerationResult;
36+
import com.theokanning.openai.runs.Run;
37+
import com.theokanning.openai.runs.RunCreateRequest;
3638
import com.theokanning.openai.threads.Thread;
3739
import com.theokanning.openai.threads.ThreadRequest;
3840
import io.reactivex.Single;
@@ -278,4 +280,12 @@ public interface OpenAiApi {
278280
@GET("/v1/threads/{thread_id}/messages/{message_id}/files")
279281
Single<OpenAiResponse<MessageFile>> listMessageFiles(@Path("thread_id") String threadId, @Path("message_id") String messageId, @QueryMap Map<String, Object> filterRequest);
280282

283+
@Headers("OpenAI-Beta: assistants=v1")
284+
@POST("/v1/threads/{thread_id}/runs")
285+
Single<Run> createRun(@Path("thread_id") String threadId, @Body RunCreateRequest runCreateRequest);
286+
287+
@Headers("OpenAI-Beta: assistants=v1")
288+
@GET("/v1/threads/{thread_id}/runs/{run_id}")
289+
Single<Run> retrieveRun(@Path("thread_id") String threadId, @Path("run_id") String runId);
290+
281291
}

Diff for: service/src/main/java/com/theokanning/openai/service/OpenAiService.java

+26-17
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,7 @@
88
import com.fasterxml.jackson.databind.node.TextNode;
99
import com.theokanning.openai.*;
1010
import com.theokanning.openai.assistants.*;
11-
import com.theokanning.openai.audio.CreateSpeechRequest;
12-
import com.theokanning.openai.audio.CreateTranscriptionRequest;
13-
import com.theokanning.openai.audio.CreateTranslationRequest;
14-
import com.theokanning.openai.audio.TranscriptionResult;
15-
import com.theokanning.openai.audio.TranslationResult;
11+
import com.theokanning.openai.audio.*;
1612
import com.theokanning.openai.billing.BillingUsage;
1713
import com.theokanning.openai.billing.Subscription;
1814
import com.theokanning.openai.client.OpenAiApi;
@@ -42,6 +38,8 @@
4238
import com.theokanning.openai.model.Model;
4339
import com.theokanning.openai.moderation.ModerationRequest;
4440
import com.theokanning.openai.moderation.ModerationResult;
41+
import com.theokanning.openai.runs.Run;
42+
import com.theokanning.openai.runs.RunCreateRequest;
4543
import com.theokanning.openai.threads.Thread;
4644
import com.theokanning.openai.threads.ThreadRequest;
4745
import io.reactivex.BackpressureStrategy;
@@ -166,7 +164,7 @@ public List<File> listFiles() {
166164

167165
public File uploadFile(String purpose, String filepath) {
168166
java.io.File file = new java.io.File(filepath);
169-
RequestBody purposeBody = RequestBody.create(okhttp3.MultipartBody.FORM, purpose);
167+
RequestBody purposeBody = RequestBody.create(MultipartBody.FORM, purpose);
170168
RequestBody fileBody = RequestBody.create(MediaType.parse("text"), file);
171169
MultipartBody.Part body = MultipartBody.Part.createFormData("file", filepath, fileBody);
172170

@@ -364,7 +362,7 @@ public ModerationResult createModeration(ModerationRequest request) {
364362
public ResponseBody createSpeech(CreateSpeechRequest request) {
365363
return execute(api.createSpeech(request));
366364
}
367-
365+
368366
public Assistant createAssistant(AssistantRequest request) {
369367
return execute(api.createAssistant(request));
370368
}
@@ -382,7 +380,8 @@ public DeleteResult deleteAssistant(String assistantId) {
382380
}
383381

384382
public ListAssistant<Assistant> listAssistants(ListAssistantQueryRequest filterRequest) {
385-
Map<String, Object> queryParameters = mapper.convertValue(filterRequest, new TypeReference<Map<String, Object>>() {});
383+
Map<String, Object> queryParameters = mapper.convertValue(filterRequest, new TypeReference<Map<String, Object>>() {
384+
});
386385
return execute(api.listAssistants(queryParameters));
387386
}
388387

@@ -399,7 +398,8 @@ public DeleteResult deleteAssistantFile(String assistantId, String fileId) {
399398
}
400399

401400
public ListAssistant<Assistant> listAssistantFiles(String assistantId, ListAssistantQueryRequest filterRequest) {
402-
Map<String, Object> queryParameters = mapper.convertValue(filterRequest, new TypeReference<Map<String, Object>>() {});
401+
Map<String, Object> queryParameters = mapper.convertValue(filterRequest, new TypeReference<Map<String, Object>>() {
402+
});
403403
return execute(api.listAssistantFiles(assistantId, queryParameters));
404404
}
405405

@@ -424,35 +424,44 @@ public Message createMessage(String threadId, MessageRequest request) {
424424
}
425425

426426
public Message retrieveMessage(String threadId, String messageId) {
427-
return execute(api.retrieveMessage(threadId,messageId));
427+
return execute(api.retrieveMessage(threadId, messageId));
428428
}
429429

430430
public Message modifyMessage(String threadId, String messageId, ModifyMessageRequest request) {
431-
return execute(api.modifyMessage(threadId,messageId, request));
431+
return execute(api.modifyMessage(threadId, messageId, request));
432432
}
433433

434434
public OpenAiResponse<Message> listMessages(String threadId) {
435435
return execute(api.listMessages(threadId));
436436
}
437437

438438
public OpenAiResponse<Message> listMessages(String threadId, ListSearchParameters params) {
439-
Map<String, Object> queryParameters = mapper.convertValue(params, new TypeReference<Map<String, Object>>() {});
440-
return execute(api.listMessages(threadId,queryParameters));
439+
Map<String, Object> queryParameters = mapper.convertValue(params, new TypeReference<Map<String, Object>>() {
440+
});
441+
return execute(api.listMessages(threadId, queryParameters));
441442
}
442443

443444
public MessageFile retrieveMessageFile(String threadId, String messageId, String fileId) {
444-
return execute(api.retrieveMessageFile(threadId,messageId, fileId));
445+
return execute(api.retrieveMessageFile(threadId, messageId, fileId));
445446
}
446447

447448
public OpenAiResponse<MessageFile> listMessageFiles(String threadId, String messageId) {
448-
return execute(api.listMessageFiles(threadId,messageId));
449+
return execute(api.listMessageFiles(threadId, messageId));
449450
}
450451

451452
public OpenAiResponse<MessageFile> listMessageFiles(String threadId, String messageId, ListSearchParameters params) {
452-
Map<String, Object> queryParameters = mapper.convertValue(params, new TypeReference<Map<String, Object>>() {});
453-
return execute(api.listMessageFiles(threadId,messageId, queryParameters));
453+
Map<String, Object> queryParameters = mapper.convertValue(params, new TypeReference<Map<String, Object>>() {
454+
});
455+
return execute(api.listMessageFiles(threadId, messageId, queryParameters));
456+
}
457+
458+
public Run createRun(String threadId, RunCreateRequest runCreateRequest) {
459+
return execute(api.createRun(threadId, runCreateRequest));
454460
}
455461

462+
public Run retrieveRun(String threadId, String runId) {
463+
return execute(api.retrieveRun(threadId, runId));
464+
}
456465

457466
/**
458467
* Calls the Open AI api, returns the response, and parses error messages if the request fails

0 commit comments

Comments
 (0)