-
Notifications
You must be signed in to change notification settings - Fork 182
/
interfaces.ts
251 lines (218 loc) · 4.23 KB
/
interfaces.ts
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
export type Fetch = typeof fetch
export interface Config {
host: string
fetch?: Fetch
proxy?: boolean
headers?: HeadersInit
}
// request types
export interface Options {
numa: boolean
num_ctx: number
num_batch: number
num_gpu: number
main_gpu: number
low_vram: boolean
f16_kv: boolean
logits_all: boolean
vocab_only: boolean
use_mmap: boolean
use_mlock: boolean
embedding_only: boolean
num_thread: number
// Runtime options
num_keep: number
seed: number
num_predict: number
top_k: number
top_p: number
tfs_z: number
typical_p: number
repeat_last_n: number
temperature: number
repeat_penalty: number
presence_penalty: number
frequency_penalty: number
mirostat: number
mirostat_tau: number
mirostat_eta: number
penalize_newline: boolean
stop: string[]
}
export interface GenerateRequest {
model: string
prompt: string
suffix?: string
system?: string
template?: string
context?: number[]
stream?: boolean
raw?: boolean
format?: string
images?: Uint8Array[] | string[]
keep_alive?: string | number
options?: Partial<Options>
}
export interface Message {
role: string
content: string
images?: Uint8Array[] | string[]
tool_calls?: ToolCall[]
}
export interface ToolCall {
function: {
name: string;
arguments: {
[key: string]: any;
};
};
}
export interface Tool {
type: string;
function: {
name: string;
description: string;
parameters: {
type: string;
required: string[];
properties: {
[key: string]: {
type: string;
description: string;
enum?: string[];
};
};
};
};
}
export interface ChatRequest {
model: string
messages?: Message[]
stream?: boolean
format?: string
keep_alive?: string | number
tools?: Tool[]
options?: Partial<Options>
}
export interface PullRequest {
model: string
insecure?: boolean
stream?: boolean
}
export interface PushRequest {
model: string
insecure?: boolean
stream?: boolean
}
export interface CreateRequest {
model: string
path?: string
modelfile?: string
quantize?: string
stream?: boolean
}
export interface DeleteRequest {
model: string
}
export interface CopyRequest {
source: string
destination: string
}
export interface ShowRequest {
model: string
system?: string
template?: string
options?: Partial<Options>
}
export interface EmbedRequest {
model: string
input: string | string[]
truncate?: boolean
keep_alive?: string | number
options?: Partial<Options>
}
export interface EmbeddingsRequest {
model: string
prompt: string
keep_alive?: string | number
options?: Partial<Options>
}
// response types
export interface GenerateResponse {
model: string
created_at: Date
response: string
done: boolean
done_reason: string
context: number[]
total_duration: number
load_duration: number
prompt_eval_count: number
prompt_eval_duration: number
eval_count: number
eval_duration: number
}
export interface ChatResponse {
model: string
created_at: Date
message: Message
done: boolean
done_reason: string
total_duration: number
load_duration: number
prompt_eval_count: number
prompt_eval_duration: number
eval_count: number
eval_duration: number
}
export interface EmbedResponse {
model: string
embeddings: number[][]
}
export interface EmbeddingsResponse {
embedding: number[]
}
export interface ProgressResponse {
status: string
digest: string
total: number
completed: number
}
export interface ModelResponse {
name: string
modified_at: Date
size: number
digest: string
details: ModelDetails
expires_at: Date
size_vram: number
}
export interface ModelDetails {
parent_model: string
format: string
family: string
families: string[]
parameter_size: string
quantization_level: string
}
export interface ShowResponse {
license: string
modelfile: string
parameters: string
template: string
system: string
details: ModelDetails
messages: Message[]
modified_at: Date
model_info: Map<string, any>
projector_info?: Map<string, any>
}
export interface ListResponse {
models: ModelResponse[]
}
export interface ErrorResponse {
error: string
}
export interface StatusResponse {
status: string
}