-
Notifications
You must be signed in to change notification settings - Fork 56
Expand file tree
/
Copy pathResponse.java
More file actions
141 lines (112 loc) · 3.92 KB
/
Copy pathResponse.java
File metadata and controls
141 lines (112 loc) · 3.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package io.github.sashirestela.openai.domain.response;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import io.github.sashirestela.openai.domain.chat.ChatRequest.ServiceTier;
import io.github.sashirestela.openai.domain.response.ResponseRequest.Truncation;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@NoArgsConstructor
@Getter
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class Response {
private Boolean background;
private Long createdAt;
private ResponseError error;
private String id;
private IncompleteDetails incompleteDetails;
private Object instructions;
private Long maxOutputTokens;
private Long maxToolCalls;
private Map<String, String> metadata;
private String model;
private String object;
@JsonDeserialize(contentUsing = ItemDeserializer.class)
private List<Input.Item> output;
private Boolean parallelToolCalls;
private String previousResponseId;
private Prompt prompt;
private Reasoning reasoning;
private ServiceTier serviceTier;
private ResponseStatus status;
private Double temperature;
private ResponseText text;
private Object toolChoice;
private List<ResponseTool> tools;
private Integer topLogprobs;
private Double topP;
private Truncation truncation;
private ResponseUsage usage;
private String user;
public String outputText() {
return output.stream()
.filter(item -> (item instanceof Input.Item.OutputMessageItem))
.filter(item -> ((Input.Item.OutputMessageItem) item).getContent() != null)
.flatMap(item -> ((Input.Item.OutputMessageItem) item).getContent().stream())
.filter(content -> (content instanceof Input.OutputContent.TextOutputContent))
.map(content -> ((Input.OutputContent.TextOutputContent) content).getText())
.collect(Collectors.joining());
}
@NoArgsConstructor
@Getter
@ToString
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class ResponseError {
private String code;
private String message;
}
@NoArgsConstructor
@Getter
@ToString
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class IncompleteDetails {
private String reason;
}
@NoArgsConstructor
@Getter
@ToString
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class ResponseUsage {
private Integer inputTokens;
private InputTokenDetails inputTokenDetails;
private Integer outputTokens;
private OutputTokenDetails outputTokenDetails;
private Integer totalTokens;
@NoArgsConstructor
@Getter
@ToString
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class InputTokenDetails {
private Integer cachedTokens;
}
@NoArgsConstructor
@Getter
@ToString
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class OutputTokenDetails {
private Integer reasoningTokens;
}
}
public enum ResponseStatus {
@JsonProperty("completed")
COMPLETED,
@JsonProperty("failed")
FAILED,
@JsonProperty("in_progress")
IN_PROGRESS,
@JsonProperty("cancelled")
CANCELLED,
@JsonProperty("queued")
QUEUED,
@JsonProperty("incomplete")
INCOMPLETE;
}
}