@huggingface/inference 3.6.1 → 3.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +125 -44
- package/dist/index.js +125 -44
- package/dist/src/lib/makeRequestOptions.d.ts.map +1 -1
- package/dist/src/providers/black-forest-labs.d.ts.map +1 -1
- package/dist/src/providers/cerebras.d.ts.map +1 -1
- package/dist/src/providers/cohere.d.ts.map +1 -1
- package/dist/src/providers/fal-ai.d.ts +6 -16
- package/dist/src/providers/fal-ai.d.ts.map +1 -1
- package/dist/src/providers/fireworks-ai.d.ts.map +1 -1
- package/dist/src/providers/hf-inference.d.ts.map +1 -1
- package/dist/src/providers/hyperbolic.d.ts.map +1 -1
- package/dist/src/providers/nebius.d.ts.map +1 -1
- package/dist/src/providers/novita.d.ts.map +1 -1
- package/dist/src/providers/openai.d.ts.map +1 -1
- package/dist/src/providers/replicate.d.ts.map +1 -1
- package/dist/src/providers/sambanova.d.ts.map +1 -1
- package/dist/src/providers/together.d.ts.map +1 -1
- package/dist/src/tasks/cv/textToVideo.d.ts.map +1 -1
- package/dist/src/types.d.ts +4 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/test/InferenceClient.spec.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/lib/makeRequestOptions.ts +3 -1
- package/src/providers/black-forest-labs.ts +6 -2
- package/src/providers/cerebras.ts +6 -2
- package/src/providers/cohere.ts +6 -2
- package/src/providers/fal-ai.ts +85 -3
- package/src/providers/fireworks-ai.ts +6 -2
- package/src/providers/hf-inference.ts +6 -2
- package/src/providers/hyperbolic.ts +6 -2
- package/src/providers/nebius.ts +6 -2
- package/src/providers/novita.ts +5 -2
- package/src/providers/openai.ts +6 -2
- package/src/providers/replicate.ts +6 -2
- package/src/providers/sambanova.ts +6 -2
- package/src/providers/together.ts +6 -2
- package/src/tasks/cv/textToVideo.ts +5 -21
- package/src/types.ts +5 -2
package/dist/index.cjs
CHANGED
|
@@ -104,6 +104,9 @@ var HF_ROUTER_URL = "https://router.huggingface.co";
|
|
|
104
104
|
|
|
105
105
|
// src/providers/black-forest-labs.ts
|
|
106
106
|
var BLACK_FOREST_LABS_AI_API_BASE_URL = "https://api.us1.bfl.ai";
|
|
107
|
+
var makeBaseUrl = () => {
|
|
108
|
+
return BLACK_FOREST_LABS_AI_API_BASE_URL;
|
|
109
|
+
};
|
|
107
110
|
var makeBody = (params) => {
|
|
108
111
|
return params.args;
|
|
109
112
|
};
|
|
@@ -118,7 +121,7 @@ var makeUrl = (params) => {
|
|
|
118
121
|
return `${params.baseUrl}/v1/${params.model}`;
|
|
119
122
|
};
|
|
120
123
|
var BLACK_FOREST_LABS_CONFIG = {
|
|
121
|
-
|
|
124
|
+
makeBaseUrl,
|
|
122
125
|
makeBody,
|
|
123
126
|
makeHeaders,
|
|
124
127
|
makeUrl
|
|
@@ -126,6 +129,9 @@ var BLACK_FOREST_LABS_CONFIG = {
|
|
|
126
129
|
|
|
127
130
|
// src/providers/cerebras.ts
|
|
128
131
|
var CEREBRAS_API_BASE_URL = "https://api.cerebras.ai";
|
|
132
|
+
var makeBaseUrl2 = () => {
|
|
133
|
+
return CEREBRAS_API_BASE_URL;
|
|
134
|
+
};
|
|
129
135
|
var makeBody2 = (params) => {
|
|
130
136
|
return {
|
|
131
137
|
...params.args,
|
|
@@ -139,7 +145,7 @@ var makeUrl2 = (params) => {
|
|
|
139
145
|
return `${params.baseUrl}/v1/chat/completions`;
|
|
140
146
|
};
|
|
141
147
|
var CEREBRAS_CONFIG = {
|
|
142
|
-
|
|
148
|
+
makeBaseUrl: makeBaseUrl2,
|
|
143
149
|
makeBody: makeBody2,
|
|
144
150
|
makeHeaders: makeHeaders2,
|
|
145
151
|
makeUrl: makeUrl2
|
|
@@ -147,6 +153,9 @@ var CEREBRAS_CONFIG = {
|
|
|
147
153
|
|
|
148
154
|
// src/providers/cohere.ts
|
|
149
155
|
var COHERE_API_BASE_URL = "https://api.cohere.com";
|
|
156
|
+
var makeBaseUrl3 = () => {
|
|
157
|
+
return COHERE_API_BASE_URL;
|
|
158
|
+
};
|
|
150
159
|
var makeBody3 = (params) => {
|
|
151
160
|
return {
|
|
152
161
|
...params.args,
|
|
@@ -160,14 +169,40 @@ var makeUrl3 = (params) => {
|
|
|
160
169
|
return `${params.baseUrl}/compatibility/v1/chat/completions`;
|
|
161
170
|
};
|
|
162
171
|
var COHERE_CONFIG = {
|
|
163
|
-
|
|
172
|
+
makeBaseUrl: makeBaseUrl3,
|
|
164
173
|
makeBody: makeBody3,
|
|
165
174
|
makeHeaders: makeHeaders3,
|
|
166
175
|
makeUrl: makeUrl3
|
|
167
176
|
};
|
|
168
177
|
|
|
178
|
+
// src/lib/InferenceOutputError.ts
|
|
179
|
+
var InferenceOutputError = class extends TypeError {
|
|
180
|
+
constructor(message) {
|
|
181
|
+
super(
|
|
182
|
+
`Invalid inference output: ${message}. Use the 'request' method with the same parameters to do a custom call with no type checking.`
|
|
183
|
+
);
|
|
184
|
+
this.name = "InferenceOutputError";
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
// src/lib/isUrl.ts
|
|
189
|
+
function isUrl(modelOrUrl) {
|
|
190
|
+
return /^http(s?):/.test(modelOrUrl) || modelOrUrl.startsWith("/");
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// src/utils/delay.ts
|
|
194
|
+
function delay(ms) {
|
|
195
|
+
return new Promise((resolve) => {
|
|
196
|
+
setTimeout(() => resolve(), ms);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
|
|
169
200
|
// src/providers/fal-ai.ts
|
|
170
201
|
var FAL_AI_API_BASE_URL = "https://fal.run";
|
|
202
|
+
var FAL_AI_API_BASE_URL_QUEUE = "https://queue.fal.run";
|
|
203
|
+
var makeBaseUrl4 = (task) => {
|
|
204
|
+
return task === "text-to-video" ? FAL_AI_API_BASE_URL_QUEUE : FAL_AI_API_BASE_URL;
|
|
205
|
+
};
|
|
171
206
|
var makeBody4 = (params) => {
|
|
172
207
|
return params.args;
|
|
173
208
|
};
|
|
@@ -177,17 +212,64 @@ var makeHeaders4 = (params) => {
|
|
|
177
212
|
};
|
|
178
213
|
};
|
|
179
214
|
var makeUrl4 = (params) => {
|
|
180
|
-
|
|
215
|
+
const baseUrl = `${params.baseUrl}/${params.model}`;
|
|
216
|
+
if (params.authMethod !== "provider-key" && params.task === "text-to-video") {
|
|
217
|
+
return `${baseUrl}?_subdomain=queue`;
|
|
218
|
+
}
|
|
219
|
+
return baseUrl;
|
|
181
220
|
};
|
|
182
221
|
var FAL_AI_CONFIG = {
|
|
183
|
-
|
|
222
|
+
makeBaseUrl: makeBaseUrl4,
|
|
184
223
|
makeBody: makeBody4,
|
|
185
224
|
makeHeaders: makeHeaders4,
|
|
186
225
|
makeUrl: makeUrl4
|
|
187
226
|
};
|
|
227
|
+
async function pollFalResponse(res, url, headers) {
|
|
228
|
+
const requestId = res.request_id;
|
|
229
|
+
if (!requestId) {
|
|
230
|
+
throw new InferenceOutputError("No request ID found in the response");
|
|
231
|
+
}
|
|
232
|
+
let status = res.status;
|
|
233
|
+
const parsedUrl = new URL(url);
|
|
234
|
+
const baseUrl = `${parsedUrl.protocol}//${parsedUrl.host}${parsedUrl.host === "router.huggingface.co" ? "/fal-ai" : ""}`;
|
|
235
|
+
const modelId = new URL(res.response_url).pathname;
|
|
236
|
+
const queryParams = parsedUrl.search;
|
|
237
|
+
const statusUrl = `${baseUrl}${modelId}/status${queryParams}`;
|
|
238
|
+
const resultUrl = `${baseUrl}${modelId}${queryParams}`;
|
|
239
|
+
while (status !== "COMPLETED") {
|
|
240
|
+
await delay(500);
|
|
241
|
+
const statusResponse = await fetch(statusUrl, { headers });
|
|
242
|
+
if (!statusResponse.ok) {
|
|
243
|
+
throw new InferenceOutputError("Failed to fetch response status from fal-ai API");
|
|
244
|
+
}
|
|
245
|
+
try {
|
|
246
|
+
status = (await statusResponse.json()).status;
|
|
247
|
+
} catch (error) {
|
|
248
|
+
throw new InferenceOutputError("Failed to parse status response from fal-ai API");
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
const resultResponse = await fetch(resultUrl, { headers });
|
|
252
|
+
let result;
|
|
253
|
+
try {
|
|
254
|
+
result = await resultResponse.json();
|
|
255
|
+
} catch (error) {
|
|
256
|
+
throw new InferenceOutputError("Failed to parse result response from fal-ai API");
|
|
257
|
+
}
|
|
258
|
+
if (typeof result === "object" && !!result && "video" in result && typeof result.video === "object" && !!result.video && "url" in result.video && typeof result.video.url === "string" && isUrl(result.video.url)) {
|
|
259
|
+
const urlResponse = await fetch(result.video.url);
|
|
260
|
+
return await urlResponse.blob();
|
|
261
|
+
} else {
|
|
262
|
+
throw new InferenceOutputError(
|
|
263
|
+
"Expected { video: { url: string } } result format, got instead: " + JSON.stringify(result)
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
188
267
|
|
|
189
268
|
// src/providers/fireworks-ai.ts
|
|
190
269
|
var FIREWORKS_AI_API_BASE_URL = "https://api.fireworks.ai";
|
|
270
|
+
var makeBaseUrl5 = () => {
|
|
271
|
+
return FIREWORKS_AI_API_BASE_URL;
|
|
272
|
+
};
|
|
191
273
|
var makeBody5 = (params) => {
|
|
192
274
|
return {
|
|
193
275
|
...params.args,
|
|
@@ -204,13 +286,16 @@ var makeUrl5 = (params) => {
|
|
|
204
286
|
return `${params.baseUrl}/inference`;
|
|
205
287
|
};
|
|
206
288
|
var FIREWORKS_AI_CONFIG = {
|
|
207
|
-
|
|
289
|
+
makeBaseUrl: makeBaseUrl5,
|
|
208
290
|
makeBody: makeBody5,
|
|
209
291
|
makeHeaders: makeHeaders5,
|
|
210
292
|
makeUrl: makeUrl5
|
|
211
293
|
};
|
|
212
294
|
|
|
213
295
|
// src/providers/hf-inference.ts
|
|
296
|
+
var makeBaseUrl6 = () => {
|
|
297
|
+
return `${HF_ROUTER_URL}/hf-inference`;
|
|
298
|
+
};
|
|
214
299
|
var makeBody6 = (params) => {
|
|
215
300
|
return {
|
|
216
301
|
...params.args,
|
|
@@ -230,7 +315,7 @@ var makeUrl6 = (params) => {
|
|
|
230
315
|
return `${params.baseUrl}/models/${params.model}`;
|
|
231
316
|
};
|
|
232
317
|
var HF_INFERENCE_CONFIG = {
|
|
233
|
-
|
|
318
|
+
makeBaseUrl: makeBaseUrl6,
|
|
234
319
|
makeBody: makeBody6,
|
|
235
320
|
makeHeaders: makeHeaders6,
|
|
236
321
|
makeUrl: makeUrl6
|
|
@@ -238,6 +323,9 @@ var HF_INFERENCE_CONFIG = {
|
|
|
238
323
|
|
|
239
324
|
// src/providers/hyperbolic.ts
|
|
240
325
|
var HYPERBOLIC_API_BASE_URL = "https://api.hyperbolic.xyz";
|
|
326
|
+
var makeBaseUrl7 = () => {
|
|
327
|
+
return HYPERBOLIC_API_BASE_URL;
|
|
328
|
+
};
|
|
241
329
|
var makeBody7 = (params) => {
|
|
242
330
|
return {
|
|
243
331
|
...params.args,
|
|
@@ -254,7 +342,7 @@ var makeUrl7 = (params) => {
|
|
|
254
342
|
return `${params.baseUrl}/v1/chat/completions`;
|
|
255
343
|
};
|
|
256
344
|
var HYPERBOLIC_CONFIG = {
|
|
257
|
-
|
|
345
|
+
makeBaseUrl: makeBaseUrl7,
|
|
258
346
|
makeBody: makeBody7,
|
|
259
347
|
makeHeaders: makeHeaders7,
|
|
260
348
|
makeUrl: makeUrl7
|
|
@@ -262,6 +350,9 @@ var HYPERBOLIC_CONFIG = {
|
|
|
262
350
|
|
|
263
351
|
// src/providers/nebius.ts
|
|
264
352
|
var NEBIUS_API_BASE_URL = "https://api.studio.nebius.ai";
|
|
353
|
+
var makeBaseUrl8 = () => {
|
|
354
|
+
return NEBIUS_API_BASE_URL;
|
|
355
|
+
};
|
|
265
356
|
var makeBody8 = (params) => {
|
|
266
357
|
return {
|
|
267
358
|
...params.args,
|
|
@@ -284,7 +375,7 @@ var makeUrl8 = (params) => {
|
|
|
284
375
|
return params.baseUrl;
|
|
285
376
|
};
|
|
286
377
|
var NEBIUS_CONFIG = {
|
|
287
|
-
|
|
378
|
+
makeBaseUrl: makeBaseUrl8,
|
|
288
379
|
makeBody: makeBody8,
|
|
289
380
|
makeHeaders: makeHeaders8,
|
|
290
381
|
makeUrl: makeUrl8
|
|
@@ -292,6 +383,9 @@ var NEBIUS_CONFIG = {
|
|
|
292
383
|
|
|
293
384
|
// src/providers/novita.ts
|
|
294
385
|
var NOVITA_API_BASE_URL = "https://api.novita.ai";
|
|
386
|
+
var makeBaseUrl9 = () => {
|
|
387
|
+
return NOVITA_API_BASE_URL;
|
|
388
|
+
};
|
|
295
389
|
var makeBody9 = (params) => {
|
|
296
390
|
return {
|
|
297
391
|
...params.args,
|
|
@@ -312,7 +406,7 @@ var makeUrl9 = (params) => {
|
|
|
312
406
|
return params.baseUrl;
|
|
313
407
|
};
|
|
314
408
|
var NOVITA_CONFIG = {
|
|
315
|
-
|
|
409
|
+
makeBaseUrl: makeBaseUrl9,
|
|
316
410
|
makeBody: makeBody9,
|
|
317
411
|
makeHeaders: makeHeaders9,
|
|
318
412
|
makeUrl: makeUrl9
|
|
@@ -320,6 +414,9 @@ var NOVITA_CONFIG = {
|
|
|
320
414
|
|
|
321
415
|
// src/providers/replicate.ts
|
|
322
416
|
var REPLICATE_API_BASE_URL = "https://api.replicate.com";
|
|
417
|
+
var makeBaseUrl10 = () => {
|
|
418
|
+
return REPLICATE_API_BASE_URL;
|
|
419
|
+
};
|
|
323
420
|
var makeBody10 = (params) => {
|
|
324
421
|
return {
|
|
325
422
|
input: params.args,
|
|
@@ -336,7 +433,7 @@ var makeUrl10 = (params) => {
|
|
|
336
433
|
return `${params.baseUrl}/v1/models/${params.model}/predictions`;
|
|
337
434
|
};
|
|
338
435
|
var REPLICATE_CONFIG = {
|
|
339
|
-
|
|
436
|
+
makeBaseUrl: makeBaseUrl10,
|
|
340
437
|
makeBody: makeBody10,
|
|
341
438
|
makeHeaders: makeHeaders10,
|
|
342
439
|
makeUrl: makeUrl10
|
|
@@ -344,6 +441,9 @@ var REPLICATE_CONFIG = {
|
|
|
344
441
|
|
|
345
442
|
// src/providers/sambanova.ts
|
|
346
443
|
var SAMBANOVA_API_BASE_URL = "https://api.sambanova.ai";
|
|
444
|
+
var makeBaseUrl11 = () => {
|
|
445
|
+
return SAMBANOVA_API_BASE_URL;
|
|
446
|
+
};
|
|
347
447
|
var makeBody11 = (params) => {
|
|
348
448
|
return {
|
|
349
449
|
...params.args,
|
|
@@ -360,7 +460,7 @@ var makeUrl11 = (params) => {
|
|
|
360
460
|
return params.baseUrl;
|
|
361
461
|
};
|
|
362
462
|
var SAMBANOVA_CONFIG = {
|
|
363
|
-
|
|
463
|
+
makeBaseUrl: makeBaseUrl11,
|
|
364
464
|
makeBody: makeBody11,
|
|
365
465
|
makeHeaders: makeHeaders11,
|
|
366
466
|
makeUrl: makeUrl11
|
|
@@ -368,6 +468,9 @@ var SAMBANOVA_CONFIG = {
|
|
|
368
468
|
|
|
369
469
|
// src/providers/together.ts
|
|
370
470
|
var TOGETHER_API_BASE_URL = "https://api.together.xyz";
|
|
471
|
+
var makeBaseUrl12 = () => {
|
|
472
|
+
return TOGETHER_API_BASE_URL;
|
|
473
|
+
};
|
|
371
474
|
var makeBody12 = (params) => {
|
|
372
475
|
return {
|
|
373
476
|
...params.args,
|
|
@@ -390,7 +493,7 @@ var makeUrl12 = (params) => {
|
|
|
390
493
|
return params.baseUrl;
|
|
391
494
|
};
|
|
392
495
|
var TOGETHER_CONFIG = {
|
|
393
|
-
|
|
496
|
+
makeBaseUrl: makeBaseUrl12,
|
|
394
497
|
makeBody: makeBody12,
|
|
395
498
|
makeHeaders: makeHeaders12,
|
|
396
499
|
makeUrl: makeUrl12
|
|
@@ -398,6 +501,9 @@ var TOGETHER_CONFIG = {
|
|
|
398
501
|
|
|
399
502
|
// src/providers/openai.ts
|
|
400
503
|
var OPENAI_API_BASE_URL = "https://api.openai.com";
|
|
504
|
+
var makeBaseUrl13 = () => {
|
|
505
|
+
return OPENAI_API_BASE_URL;
|
|
506
|
+
};
|
|
401
507
|
var makeBody13 = (params) => {
|
|
402
508
|
if (!params.chatCompletion) {
|
|
403
509
|
throw new Error("OpenAI only supports chat completions.");
|
|
@@ -417,21 +523,16 @@ var makeUrl13 = (params) => {
|
|
|
417
523
|
return `${params.baseUrl}/v1/chat/completions`;
|
|
418
524
|
};
|
|
419
525
|
var OPENAI_CONFIG = {
|
|
420
|
-
|
|
526
|
+
makeBaseUrl: makeBaseUrl13,
|
|
421
527
|
makeBody: makeBody13,
|
|
422
528
|
makeHeaders: makeHeaders13,
|
|
423
529
|
makeUrl: makeUrl13,
|
|
424
530
|
clientSideRoutingOnly: true
|
|
425
531
|
};
|
|
426
532
|
|
|
427
|
-
// src/lib/isUrl.ts
|
|
428
|
-
function isUrl(modelOrUrl) {
|
|
429
|
-
return /^http(s?):/.test(modelOrUrl) || modelOrUrl.startsWith("/");
|
|
430
|
-
}
|
|
431
|
-
|
|
432
533
|
// package.json
|
|
433
534
|
var name = "@huggingface/inference";
|
|
434
|
-
var version = "3.6.
|
|
535
|
+
var version = "3.6.2";
|
|
435
536
|
|
|
436
537
|
// src/providers/consts.ts
|
|
437
538
|
var HARDCODED_MODEL_ID_MAPPING = {
|
|
@@ -570,7 +671,8 @@ function makeRequestOptionsFromResolvedModel(resolvedModel, args, options) {
|
|
|
570
671
|
return "none";
|
|
571
672
|
})();
|
|
572
673
|
const url = endpointUrl ? chatCompletion2 ? endpointUrl + `/v1/chat/completions` : endpointUrl : providerConfig.makeUrl({
|
|
573
|
-
|
|
674
|
+
authMethod,
|
|
675
|
+
baseUrl: authMethod !== "provider-key" ? HF_HUB_INFERENCE_PROXY_TEMPLATE.replace("{{PROVIDER}}", provider) : providerConfig.makeBaseUrl(task),
|
|
574
676
|
model: resolvedModel,
|
|
575
677
|
chatCompletion: chatCompletion2,
|
|
576
678
|
task
|
|
@@ -834,16 +936,6 @@ async function* streamingRequest(args, options) {
|
|
|
834
936
|
}
|
|
835
937
|
}
|
|
836
938
|
|
|
837
|
-
// src/lib/InferenceOutputError.ts
|
|
838
|
-
var InferenceOutputError = class extends TypeError {
|
|
839
|
-
constructor(message) {
|
|
840
|
-
super(
|
|
841
|
-
`Invalid inference output: ${message}. Use the 'request' method with the same parameters to do a custom call with no type checking.`
|
|
842
|
-
);
|
|
843
|
-
this.name = "InferenceOutputError";
|
|
844
|
-
}
|
|
845
|
-
};
|
|
846
|
-
|
|
847
939
|
// src/utils/pick.ts
|
|
848
940
|
function pick(o, props) {
|
|
849
941
|
return Object.assign(
|
|
@@ -1058,13 +1150,6 @@ async function objectDetection(args, options) {
|
|
|
1058
1150
|
return res;
|
|
1059
1151
|
}
|
|
1060
1152
|
|
|
1061
|
-
// src/utils/delay.ts
|
|
1062
|
-
function delay(ms) {
|
|
1063
|
-
return new Promise((resolve) => {
|
|
1064
|
-
setTimeout(() => resolve(), ms);
|
|
1065
|
-
});
|
|
1066
|
-
}
|
|
1067
|
-
|
|
1068
1153
|
// src/tasks/cv/textToImage.ts
|
|
1069
1154
|
function getResponseFormatArg(provider) {
|
|
1070
1155
|
switch (provider) {
|
|
@@ -1236,12 +1321,8 @@ async function textToVideo(args, options) {
|
|
|
1236
1321
|
task: "text-to-video"
|
|
1237
1322
|
});
|
|
1238
1323
|
if (args.provider === "fal-ai") {
|
|
1239
|
-
const
|
|
1240
|
-
|
|
1241
|
-
throw new InferenceOutputError("Expected { video: { url: string } }");
|
|
1242
|
-
}
|
|
1243
|
-
const urlResponse = await fetch(res.video.url);
|
|
1244
|
-
return await urlResponse.blob();
|
|
1324
|
+
const { url, info } = await makeRequestOptions(args, { ...options, task: "text-to-video" });
|
|
1325
|
+
return await pollFalResponse(res, url, info.headers);
|
|
1245
1326
|
} else if (args.provider === "novita") {
|
|
1246
1327
|
const isValidOutput = typeof res === "object" && !!res && "video" in res && typeof res.video === "object" && !!res.video && "video_url" in res.video && typeof res.video.video_url === "string" && isUrl(res.video.video_url);
|
|
1247
1328
|
if (!isValidOutput) {
|