Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 4ff2758

Browse filesBrowse files
390 Added runs (TheoKanning#401)
* 390 Added runs * 390 Added runs --------- Co-authored-by: Theo Kanning <TheoKanning@users.noreply.github.com>
1 parent 99162e0 commit 4ff2758
Copy full SHA for 4ff2758

File tree

Expand file treeCollapse file tree

11 files changed

+295
-17
lines changed
Filter options
Expand file treeCollapse file tree

11 files changed

+295
-17
lines changed
+16Lines changed: 16 additions & 0 deletions
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+
}
+45Lines changed: 45 additions & 0 deletions
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+
}
+23Lines changed: 23 additions & 0 deletions
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+
}
+39Lines changed: 39 additions & 0 deletions
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+
}
+17Lines changed: 17 additions & 0 deletions
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+
}
+17Lines changed: 17 additions & 0 deletions
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+
}
+18Lines changed: 18 additions & 0 deletions
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+
}
+15Lines changed: 15 additions & 0 deletions
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+
}

‎client/src/main/java/com/theokanning/openai/client/OpenAiApi.java

Copy file name to clipboardExpand all lines: client/src/main/java/com/theokanning/openai/client/OpenAiApi.java
+10Lines changed: 10 additions & 0 deletions
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
}

‎service/src/main/java/com/theokanning/openai/service/OpenAiService.java

Copy file name to clipboardExpand all lines: service/src/main/java/com/theokanning/openai/service/OpenAiService.java
+26-17Lines changed: 26 additions & 17 deletions
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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.