@huggingface/inference 4.0.4 → 4.0.6

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.
Files changed (37) hide show
  1. package/dist/commonjs/lib/getInferenceProviderMapping.d.ts +4 -13
  2. package/dist/commonjs/lib/getInferenceProviderMapping.d.ts.map +1 -1
  3. package/dist/commonjs/lib/getInferenceProviderMapping.js +30 -6
  4. package/dist/commonjs/lib/makeRequestOptions.d.ts +2 -3
  5. package/dist/commonjs/lib/makeRequestOptions.d.ts.map +1 -1
  6. package/dist/commonjs/lib/makeRequestOptions.js +1 -0
  7. package/dist/commonjs/package.d.ts +1 -1
  8. package/dist/commonjs/package.js +1 -1
  9. package/dist/commonjs/providers/consts.d.ts +2 -3
  10. package/dist/commonjs/providers/consts.d.ts.map +1 -1
  11. package/dist/commonjs/snippets/getInferenceSnippets.d.ts +2 -3
  12. package/dist/commonjs/snippets/getInferenceSnippets.d.ts.map +1 -1
  13. package/dist/commonjs/snippets/getInferenceSnippets.js +1 -1
  14. package/dist/commonjs/types.d.ts +12 -3
  15. package/dist/commonjs/types.d.ts.map +1 -1
  16. package/dist/esm/lib/getInferenceProviderMapping.d.ts +4 -13
  17. package/dist/esm/lib/getInferenceProviderMapping.d.ts.map +1 -1
  18. package/dist/esm/lib/getInferenceProviderMapping.js +30 -6
  19. package/dist/esm/lib/makeRequestOptions.d.ts +2 -3
  20. package/dist/esm/lib/makeRequestOptions.d.ts.map +1 -1
  21. package/dist/esm/lib/makeRequestOptions.js +1 -0
  22. package/dist/esm/package.d.ts +1 -1
  23. package/dist/esm/package.js +1 -1
  24. package/dist/esm/providers/consts.d.ts +2 -3
  25. package/dist/esm/providers/consts.d.ts.map +1 -1
  26. package/dist/esm/snippets/getInferenceSnippets.d.ts +2 -3
  27. package/dist/esm/snippets/getInferenceSnippets.d.ts.map +1 -1
  28. package/dist/esm/snippets/getInferenceSnippets.js +1 -1
  29. package/dist/esm/types.d.ts +12 -3
  30. package/dist/esm/types.d.ts.map +1 -1
  31. package/package.json +2 -2
  32. package/src/lib/getInferenceProviderMapping.ts +45 -26
  33. package/src/lib/makeRequestOptions.ts +4 -4
  34. package/src/package.ts +1 -1
  35. package/src/providers/consts.ts +2 -3
  36. package/src/snippets/getInferenceSnippets.ts +5 -6
  37. package/src/types.ts +13 -3
@@ -1,18 +1,9 @@
1
1
  import type { WidgetType } from "@huggingface/tasks";
2
- import type { InferenceProvider, InferenceProviderOrPolicy, ModelId } from "../types.js";
3
- export declare const inferenceProviderMappingCache: Map<string, Partial<Record<"black-forest-labs" | "cerebras" | "cohere" | "fal-ai" | "featherless-ai" | "fireworks-ai" | "groq" | "hf-inference" | "hyperbolic" | "nebius" | "novita" | "nscale" | "openai" | "ovhcloud" | "replicate" | "sambanova" | "together", Omit<InferenceProviderModelMapping, "hfModelId">>>>;
4
- export type InferenceProviderMapping = Partial<Record<InferenceProvider, Omit<InferenceProviderModelMapping, "hfModelId">>>;
5
- export interface InferenceProviderModelMapping {
6
- adapter?: string;
7
- adapterWeightsPath?: string;
8
- hfModelId: ModelId;
9
- providerId: string;
10
- status: "live" | "staging";
11
- task: WidgetType;
12
- }
2
+ import type { InferenceProvider, InferenceProviderMappingEntry, InferenceProviderOrPolicy, ModelId } from "../types.js";
3
+ export declare const inferenceProviderMappingCache: Map<string, InferenceProviderMappingEntry[]>;
13
4
  export declare function fetchInferenceProviderMappingForModel(modelId: ModelId, accessToken?: string, options?: {
14
5
  fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
15
- }): Promise<InferenceProviderMapping>;
6
+ }): Promise<InferenceProviderMappingEntry[]>;
16
7
  export declare function getInferenceProviderMapping(params: {
17
8
  accessToken?: string;
18
9
  modelId: ModelId;
@@ -20,6 +11,6 @@ export declare function getInferenceProviderMapping(params: {
20
11
  task: WidgetType;
21
12
  }, options: {
22
13
  fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
23
- }): Promise<InferenceProviderModelMapping | null>;
14
+ }): Promise<InferenceProviderMappingEntry | null>;
24
15
  export declare function resolveProvider(provider?: InferenceProviderOrPolicy, modelId?: string, endpointUrl?: string): Promise<InferenceProvider>;
25
16
  //# sourceMappingURL=getInferenceProviderMapping.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getInferenceProviderMapping.d.ts","sourceRoot":"","sources":["../../../src/lib/getInferenceProviderMapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAIzF,eAAO,MAAM,6BAA6B,uTAA+C,CAAC;AAE1F,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC7C,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAAC,CAC3E,CAAC;AAEF,MAAM,WAAW,6BAA6B;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,UAAU,CAAC;CACjB;AAED,wBAAsB,qCAAqC,CAC1D,OAAO,EAAE,OAAO,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IACT,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtE,GACC,OAAO,CAAC,wBAAwB,CAAC,CAgDnC;AAED,wBAAsB,2BAA2B,CAChD,MAAM,EAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE,UAAU,CAAC;CACjB,EACD,OAAO,EAAE;IACR,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtE,GACC,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CA4B/C;AAED,wBAAsB,eAAe,CACpC,QAAQ,CAAC,EAAE,yBAAyB,EACpC,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAyB5B"}
1
+ {"version":3,"file":"getInferenceProviderMapping.d.ts","sourceRoot":"","sources":["../../../src/lib/getInferenceProviderMapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAIxH,eAAO,MAAM,6BAA6B,8CAAsD,CAAC;AAiCjG,wBAAsB,qCAAqC,CAC1D,OAAO,EAAE,OAAO,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IACT,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtE,GACC,OAAO,CAAC,6BAA6B,EAAE,CAAC,CAqD1C;AAED,wBAAsB,2BAA2B,CAChD,MAAM,EAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE,UAAU,CAAC;CACjB,EACD,OAAO,EAAE;IACR,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtE,GACC,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAwB/C;AAED,wBAAsB,eAAe,CACpC,QAAQ,CAAC,EAAE,yBAAyB,EACpC,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAyB5B"}
@@ -10,6 +10,29 @@ const hf_inference_js_1 = require("../providers/hf-inference.js");
10
10
  const typedInclude_js_1 = require("../utils/typedInclude.js");
11
11
  const errors_js_1 = require("../errors.js");
12
12
  exports.inferenceProviderMappingCache = new Map();
13
+ /**
14
+ * Normalize inferenceProviderMapping to always return an array format.
15
+ * This provides backward and forward compatibility for the API changes.
16
+ *
17
+ * Vendored from @huggingface/hub to avoid extra dependency.
18
+ */
19
+ function normalizeInferenceProviderMapping(modelId, inferenceProviderMapping) {
20
+ if (!inferenceProviderMapping) {
21
+ return [];
22
+ }
23
+ // If it's already an array, return it as is
24
+ if (Array.isArray(inferenceProviderMapping)) {
25
+ return inferenceProviderMapping;
26
+ }
27
+ // Convert mapping to array format
28
+ return Object.entries(inferenceProviderMapping).map(([provider, mapping]) => ({
29
+ provider,
30
+ hfModelId: modelId,
31
+ providerId: mapping.providerId,
32
+ status: mapping.status,
33
+ task: mapping.task,
34
+ }));
35
+ }
13
36
  async function fetchInferenceProviderMappingForModel(modelId, accessToken, options) {
14
37
  let inferenceProviderMapping;
15
38
  if (exports.inferenceProviderMappingCache.has(modelId)) {
@@ -42,7 +65,8 @@ async function fetchInferenceProviderMappingForModel(modelId, accessToken, optio
42
65
  if (!payload?.inferenceProviderMapping) {
43
66
  throw new errors_js_1.InferenceClientHubApiError(`We have not been able to find inference provider information for model ${modelId}.`, { url, method: "GET" }, { requestId: resp.headers.get("x-request-id") ?? "", status: resp.status, body: await resp.text() });
44
67
  }
45
- inferenceProviderMapping = payload.inferenceProviderMapping;
68
+ inferenceProviderMapping = normalizeInferenceProviderMapping(modelId, payload.inferenceProviderMapping);
69
+ exports.inferenceProviderMappingCache.set(modelId, inferenceProviderMapping);
46
70
  }
47
71
  return inferenceProviderMapping;
48
72
  }
@@ -50,8 +74,8 @@ async function getInferenceProviderMapping(params, options) {
50
74
  if (consts_js_1.HARDCODED_MODEL_INFERENCE_MAPPING[params.provider][params.modelId]) {
51
75
  return consts_js_1.HARDCODED_MODEL_INFERENCE_MAPPING[params.provider][params.modelId];
52
76
  }
53
- const inferenceProviderMapping = await fetchInferenceProviderMappingForModel(params.modelId, params.accessToken, options);
54
- const providerMapping = inferenceProviderMapping[params.provider];
77
+ const mappings = await fetchInferenceProviderMappingForModel(params.modelId, params.accessToken, options);
78
+ const providerMapping = mappings.find((mapping) => mapping.provider === params.provider);
55
79
  if (providerMapping) {
56
80
  const equivalentTasks = params.provider === "hf-inference" && (0, typedInclude_js_1.typedInclude)(hf_inference_js_1.EQUIVALENT_SENTENCE_TRANSFORMERS_TASKS, params.task)
57
81
  ? hf_inference_js_1.EQUIVALENT_SENTENCE_TRANSFORMERS_TASKS
@@ -62,7 +86,7 @@ async function getInferenceProviderMapping(params, options) {
62
86
  if (providerMapping.status === "staging") {
63
87
  console.warn(`Model ${params.modelId} is in staging mode for provider ${params.provider}. Meant for test purposes only.`);
64
88
  }
65
- return { ...providerMapping, hfModelId: params.modelId };
89
+ return providerMapping;
66
90
  }
67
91
  return null;
68
92
  }
@@ -82,8 +106,8 @@ async function resolveProvider(provider, modelId, endpointUrl) {
82
106
  if (!modelId) {
83
107
  throw new errors_js_1.InferenceClientInputError("Specifying a model is required when provider is 'auto'");
84
108
  }
85
- const inferenceProviderMapping = await fetchInferenceProviderMappingForModel(modelId);
86
- provider = Object.keys(inferenceProviderMapping)[0];
109
+ const mappings = await fetchInferenceProviderMappingForModel(modelId);
110
+ provider = mappings[0]?.provider;
87
111
  }
88
112
  if (!provider) {
89
113
  throw new errors_js_1.InferenceClientInputError(`No Inference Provider available for model ${modelId}.`);
@@ -1,5 +1,4 @@
1
- import type { InferenceTask, Options, RequestArgs } from "../types.js";
2
- import type { InferenceProviderModelMapping } from "./getInferenceProviderMapping.js";
1
+ import type { InferenceTask, InferenceProviderMappingEntry, Options, RequestArgs } from "../types.js";
3
2
  import type { getProviderHelper } from "./getProviderHelper.js";
4
3
  /**
5
4
  * Helper that prepares request arguments.
@@ -22,7 +21,7 @@ export declare function makeRequestOptions(args: RequestArgs & {
22
21
  export declare function makeRequestOptionsFromResolvedModel(resolvedModel: string, providerHelper: ReturnType<typeof getProviderHelper>, args: RequestArgs & {
23
22
  data?: Blob | ArrayBuffer;
24
23
  stream?: boolean;
25
- }, mapping: InferenceProviderModelMapping | undefined, options?: Options & {
24
+ }, mapping: InferenceProviderMappingEntry | undefined, options?: Options & {
26
25
  task?: InferenceTask;
27
26
  }): {
28
27
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"makeRequestOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/makeRequestOptions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAEtF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAUhE;;;GAGG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,WAAW,GAAG;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,EACD,cAAc,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,EACpD,OAAO,CAAC,EAAE,OAAO,GAAG;IACnB,oEAAoE;IACpE,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB,GACC,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAqE7C;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAClD,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,EACpD,IAAI,EAAE,WAAW,GAAG;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,EACD,OAAO,EAAE,6BAA6B,GAAG,SAAS,EAClD,OAAO,CAAC,EAAE,OAAO,GAAG;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB,GACC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CA8EpC"}
1
+ {"version":3,"file":"makeRequestOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/makeRequestOptions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,6BAA6B,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAUhE;;;GAGG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,WAAW,GAAG;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,EACD,cAAc,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,EACpD,OAAO,CAAC,EAAE,OAAO,GAAG;IACnB,oEAAoE;IACpE,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB,GACC,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAsE7C;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAClD,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,EACpD,IAAI,EAAE,WAAW,GAAG;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,EACD,OAAO,EAAE,6BAA6B,GAAG,SAAS,EAClD,OAAO,CAAC,EAAE,OAAO,GAAG;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB,GACC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CA8EpC"}
@@ -41,6 +41,7 @@ async function makeRequestOptions(args, providerHelper, options) {
41
41
  }
42
42
  const inferenceProviderMapping = providerHelper.clientSideRoutingOnly
43
43
  ? {
44
+ provider: provider,
44
45
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
45
46
  providerId: removeProviderPrefix(maybeModel, provider),
46
47
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -1,3 +1,3 @@
1
- export declare const PACKAGE_VERSION = "4.0.4";
1
+ export declare const PACKAGE_VERSION = "4.0.6";
2
2
  export declare const PACKAGE_NAME = "@huggingface/inference";
3
3
  //# sourceMappingURL=package.d.ts.map
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;
4
4
  // Generated file from package.json. Issues importing JSON directly when publishing on commonjs/ESM - see https://github.com/microsoft/TypeScript/issues/51783
5
- exports.PACKAGE_VERSION = "4.0.4";
5
+ exports.PACKAGE_VERSION = "4.0.6";
6
6
  exports.PACKAGE_NAME = "@huggingface/inference";
@@ -1,5 +1,4 @@
1
- import type { InferenceProviderModelMapping } from "../lib/getInferenceProviderMapping.js";
2
- import type { InferenceProvider } from "../types.js";
1
+ import type { InferenceProvider, InferenceProviderMappingEntry } from "../types.js";
3
2
  import { type ModelId } from "../types.js";
4
3
  /**
5
4
  * If you want to try to run inference for a new model locally before it's registered on huggingface.co
@@ -8,5 +7,5 @@ import { type ModelId } from "../types.js";
8
7
  *
9
8
  * We also inject into this dictionary from tests.
10
9
  */
11
- export declare const HARDCODED_MODEL_INFERENCE_MAPPING: Record<InferenceProvider, Record<ModelId, InferenceProviderModelMapping>>;
10
+ export declare const HARDCODED_MODEL_INFERENCE_MAPPING: Record<InferenceProvider, Record<ModelId, InferenceProviderMappingEntry>>;
12
11
  //# sourceMappingURL=consts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/providers/consts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CACrD,iBAAiB,EACjB,MAAM,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAyB9C,CAAC"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/providers/consts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CACrD,iBAAiB,EACjB,MAAM,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAyB9C,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { type InferenceSnippet, type ModelDataMinimal } from "@huggingface/tasks";
2
- import type { InferenceProviderModelMapping } from "../lib/getInferenceProviderMapping.js";
3
- import type { InferenceProviderOrPolicy } from "../types.js";
2
+ import type { InferenceProviderMappingEntry, InferenceProviderOrPolicy } from "../types.js";
4
3
  export type InferenceSnippetOptions = {
5
4
  streaming?: boolean;
6
5
  billTo?: string;
@@ -8,5 +7,5 @@ export type InferenceSnippetOptions = {
8
7
  directRequest?: boolean;
9
8
  endpointUrl?: string;
10
9
  } & Record<string, unknown>;
11
- export declare function getInferenceSnippets(model: ModelDataMinimal, provider: InferenceProviderOrPolicy, inferenceProviderMapping?: InferenceProviderModelMapping, opts?: Record<string, unknown>): InferenceSnippet[];
10
+ export declare function getInferenceSnippets(model: ModelDataMinimal, provider: InferenceProviderOrPolicy, inferenceProviderMapping?: InferenceProviderMappingEntry, opts?: Record<string, unknown>): InferenceSnippet[];
12
11
  //# sourceMappingURL=getInferenceSnippets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getInferenceSnippets.d.ts","sourceRoot":"","sources":["../../../src/snippets/getInferenceSnippets.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAGrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAG3F,OAAO,KAAK,EAAE,yBAAyB,EAA8B,MAAM,aAAa,CAAC;AAGzF,MAAM,MAAM,uBAAuB,GAAG;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA2V5B,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,yBAAyB,EACnC,wBAAwB,CAAC,EAAE,6BAA6B,EACxD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,gBAAgB,EAAE,CAIpB"}
1
+ {"version":3,"file":"getInferenceSnippets.d.ts","sourceRoot":"","sources":["../../../src/snippets/getInferenceSnippets.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAGrB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,KAAK,EAAE,6BAA6B,EAAE,yBAAyB,EAA8B,MAAM,aAAa,CAAC;AAGxH,MAAM,MAAM,uBAAuB,GAAG;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA2V5B,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,yBAAyB,EACnC,wBAAwB,CAAC,EAAE,6BAA6B,EACxD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,gBAAgB,EAAE,CAIpB"}
@@ -331,7 +331,7 @@ function replaceAccessTokenPlaceholder(directRequest, placeholder, snippet, lang
331
331
  const useHfToken = !endpointUrl && // custom endpointUrl => use a generic API_TOKEN
332
332
  (provider == "hf-inference" || // hf-inference provider => use $HF_TOKEN
333
333
  (!directRequest && // if explicit directRequest => use provider-specific token
334
- (!snippet.includes("https://") || // no URL provided => using a client => use $HF_TOKEN
334
+ (snippet.includes("InferenceClient") || // using a client => use $HF_TOKEN
335
335
  snippet.includes("https://router.huggingface.co")))); // explicit routed request => use $HF_TOKEN
336
336
  const accessTokenEnvVar = useHfToken
337
337
  ? "HF_TOKEN" // e.g. routed request or hf-inference
@@ -1,5 +1,4 @@
1
- import type { ChatCompletionInput, PipelineType } from "@huggingface/tasks";
2
- import type { InferenceProviderModelMapping } from "./lib/getInferenceProviderMapping.js";
1
+ import type { ChatCompletionInput, PipelineType, WidgetType } from "@huggingface/tasks";
3
2
  /**
4
3
  * HF model id, like "meta-llama/Llama-3.3-70B-Instruct"
5
4
  */
@@ -34,6 +33,16 @@ export declare const INFERENCE_PROVIDERS: readonly ["black-forest-labs", "cerebr
34
33
  export declare const PROVIDERS_OR_POLICIES: readonly ["black-forest-labs", "cerebras", "cohere", "fal-ai", "featherless-ai", "fireworks-ai", "groq", "hf-inference", "hyperbolic", "nebius", "novita", "nscale", "openai", "ovhcloud", "replicate", "sambanova", "together", "auto"];
35
34
  export type InferenceProvider = (typeof INFERENCE_PROVIDERS)[number];
36
35
  export type InferenceProviderOrPolicy = (typeof PROVIDERS_OR_POLICIES)[number];
36
+ export interface InferenceProviderMappingEntry {
37
+ adapter?: string;
38
+ adapterWeightsPath?: string;
39
+ hfModelId: ModelId;
40
+ provider: string;
41
+ providerId: string;
42
+ status: "live" | "staging";
43
+ task: WidgetType;
44
+ type?: "single-model" | "tag-filter";
45
+ }
37
46
  export interface BaseArgs {
38
47
  /**
39
48
  * The access token to use. Without it, you'll get rate-limited quickly.
@@ -91,7 +100,7 @@ export interface UrlParams {
91
100
  export interface BodyParams<T extends Record<string, unknown> = Record<string, unknown>> {
92
101
  args: T;
93
102
  model: string;
94
- mapping?: InferenceProviderModelMapping | undefined;
103
+ mapping?: InferenceProviderMappingEntry | undefined;
95
104
  task?: InferenceTask;
96
105
  }
97
106
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAE1F;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,OAAO;IACvB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEtC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAAC;AAE9E,eAAO,MAAM,mBAAmB,kOAkBtB,CAAC;AAEX,eAAO,MAAM,qBAAqB,0OAA4C,CAAC;AAE/E,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E,MAAM,WAAW,QAAQ;IACxB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;CACrC;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GACjC,CACG;IAAE,IAAI,EAAE,IAAI,GAAG,WAAW,CAAA;CAAE,GAC5B;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GACrB,mBAAmB,CACrB,GAAG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,qBAAqB,GAAG,cAAc,CAAC;AAEtF,MAAM,WAAW,YAAY;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtF,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,6BAA6B,GAAG,SAAS,CAAC;IACpD,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAExF;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,OAAO;IACvB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEtC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAAC;AAE9E,eAAO,MAAM,mBAAmB,kOAkBtB,CAAC;AAEX,eAAO,MAAM,qBAAqB,0OAA4C,CAAC;AAE/E,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E,MAAM,WAAW,6BAA6B;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,cAAc,GAAG,YAAY,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACxB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;CACrC;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GACjC,CACG;IAAE,IAAI,EAAE,IAAI,GAAG,WAAW,CAAA;CAAE,GAC5B;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GACrB,mBAAmB,CACrB,GAAG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,qBAAqB,GAAG,cAAc,CAAC;AAEtF,MAAM,WAAW,YAAY;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtF,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,6BAA6B,GAAG,SAAS,CAAC;IACpD,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB"}
@@ -1,18 +1,9 @@
1
1
  import type { WidgetType } from "@huggingface/tasks";
2
- import type { InferenceProvider, InferenceProviderOrPolicy, ModelId } from "../types.js";
3
- export declare const inferenceProviderMappingCache: Map<string, Partial<Record<"black-forest-labs" | "cerebras" | "cohere" | "fal-ai" | "featherless-ai" | "fireworks-ai" | "groq" | "hf-inference" | "hyperbolic" | "nebius" | "novita" | "nscale" | "openai" | "ovhcloud" | "replicate" | "sambanova" | "together", Omit<InferenceProviderModelMapping, "hfModelId">>>>;
4
- export type InferenceProviderMapping = Partial<Record<InferenceProvider, Omit<InferenceProviderModelMapping, "hfModelId">>>;
5
- export interface InferenceProviderModelMapping {
6
- adapter?: string;
7
- adapterWeightsPath?: string;
8
- hfModelId: ModelId;
9
- providerId: string;
10
- status: "live" | "staging";
11
- task: WidgetType;
12
- }
2
+ import type { InferenceProvider, InferenceProviderMappingEntry, InferenceProviderOrPolicy, ModelId } from "../types.js";
3
+ export declare const inferenceProviderMappingCache: Map<string, InferenceProviderMappingEntry[]>;
13
4
  export declare function fetchInferenceProviderMappingForModel(modelId: ModelId, accessToken?: string, options?: {
14
5
  fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
15
- }): Promise<InferenceProviderMapping>;
6
+ }): Promise<InferenceProviderMappingEntry[]>;
16
7
  export declare function getInferenceProviderMapping(params: {
17
8
  accessToken?: string;
18
9
  modelId: ModelId;
@@ -20,6 +11,6 @@ export declare function getInferenceProviderMapping(params: {
20
11
  task: WidgetType;
21
12
  }, options: {
22
13
  fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
23
- }): Promise<InferenceProviderModelMapping | null>;
14
+ }): Promise<InferenceProviderMappingEntry | null>;
24
15
  export declare function resolveProvider(provider?: InferenceProviderOrPolicy, modelId?: string, endpointUrl?: string): Promise<InferenceProvider>;
25
16
  //# sourceMappingURL=getInferenceProviderMapping.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getInferenceProviderMapping.d.ts","sourceRoot":"","sources":["../../../src/lib/getInferenceProviderMapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAIzF,eAAO,MAAM,6BAA6B,uTAA+C,CAAC;AAE1F,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC7C,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAAC,CAC3E,CAAC;AAEF,MAAM,WAAW,6BAA6B;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,UAAU,CAAC;CACjB;AAED,wBAAsB,qCAAqC,CAC1D,OAAO,EAAE,OAAO,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IACT,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtE,GACC,OAAO,CAAC,wBAAwB,CAAC,CAgDnC;AAED,wBAAsB,2BAA2B,CAChD,MAAM,EAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE,UAAU,CAAC;CACjB,EACD,OAAO,EAAE;IACR,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtE,GACC,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CA4B/C;AAED,wBAAsB,eAAe,CACpC,QAAQ,CAAC,EAAE,yBAAyB,EACpC,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAyB5B"}
1
+ {"version":3,"file":"getInferenceProviderMapping.d.ts","sourceRoot":"","sources":["../../../src/lib/getInferenceProviderMapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAIxH,eAAO,MAAM,6BAA6B,8CAAsD,CAAC;AAiCjG,wBAAsB,qCAAqC,CAC1D,OAAO,EAAE,OAAO,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IACT,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtE,GACC,OAAO,CAAC,6BAA6B,EAAE,CAAC,CAqD1C;AAED,wBAAsB,2BAA2B,CAChD,MAAM,EAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE,UAAU,CAAC;CACjB,EACD,OAAO,EAAE;IACR,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACtE,GACC,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAwB/C;AAED,wBAAsB,eAAe,CACpC,QAAQ,CAAC,EAAE,yBAAyB,EACpC,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAyB5B"}
@@ -4,6 +4,29 @@ import { EQUIVALENT_SENTENCE_TRANSFORMERS_TASKS } from "../providers/hf-inferenc
4
4
  import { typedInclude } from "../utils/typedInclude.js";
5
5
  import { InferenceClientHubApiError, InferenceClientInputError } from "../errors.js";
6
6
  export const inferenceProviderMappingCache = new Map();
7
+ /**
8
+ * Normalize inferenceProviderMapping to always return an array format.
9
+ * This provides backward and forward compatibility for the API changes.
10
+ *
11
+ * Vendored from @huggingface/hub to avoid extra dependency.
12
+ */
13
+ function normalizeInferenceProviderMapping(modelId, inferenceProviderMapping) {
14
+ if (!inferenceProviderMapping) {
15
+ return [];
16
+ }
17
+ // If it's already an array, return it as is
18
+ if (Array.isArray(inferenceProviderMapping)) {
19
+ return inferenceProviderMapping;
20
+ }
21
+ // Convert mapping to array format
22
+ return Object.entries(inferenceProviderMapping).map(([provider, mapping]) => ({
23
+ provider,
24
+ hfModelId: modelId,
25
+ providerId: mapping.providerId,
26
+ status: mapping.status,
27
+ task: mapping.task,
28
+ }));
29
+ }
7
30
  export async function fetchInferenceProviderMappingForModel(modelId, accessToken, options) {
8
31
  let inferenceProviderMapping;
9
32
  if (inferenceProviderMappingCache.has(modelId)) {
@@ -36,7 +59,8 @@ export async function fetchInferenceProviderMappingForModel(modelId, accessToken
36
59
  if (!payload?.inferenceProviderMapping) {
37
60
  throw new InferenceClientHubApiError(`We have not been able to find inference provider information for model ${modelId}.`, { url, method: "GET" }, { requestId: resp.headers.get("x-request-id") ?? "", status: resp.status, body: await resp.text() });
38
61
  }
39
- inferenceProviderMapping = payload.inferenceProviderMapping;
62
+ inferenceProviderMapping = normalizeInferenceProviderMapping(modelId, payload.inferenceProviderMapping);
63
+ inferenceProviderMappingCache.set(modelId, inferenceProviderMapping);
40
64
  }
41
65
  return inferenceProviderMapping;
42
66
  }
@@ -44,8 +68,8 @@ export async function getInferenceProviderMapping(params, options) {
44
68
  if (HARDCODED_MODEL_INFERENCE_MAPPING[params.provider][params.modelId]) {
45
69
  return HARDCODED_MODEL_INFERENCE_MAPPING[params.provider][params.modelId];
46
70
  }
47
- const inferenceProviderMapping = await fetchInferenceProviderMappingForModel(params.modelId, params.accessToken, options);
48
- const providerMapping = inferenceProviderMapping[params.provider];
71
+ const mappings = await fetchInferenceProviderMappingForModel(params.modelId, params.accessToken, options);
72
+ const providerMapping = mappings.find((mapping) => mapping.provider === params.provider);
49
73
  if (providerMapping) {
50
74
  const equivalentTasks = params.provider === "hf-inference" && typedInclude(EQUIVALENT_SENTENCE_TRANSFORMERS_TASKS, params.task)
51
75
  ? EQUIVALENT_SENTENCE_TRANSFORMERS_TASKS
@@ -56,7 +80,7 @@ export async function getInferenceProviderMapping(params, options) {
56
80
  if (providerMapping.status === "staging") {
57
81
  console.warn(`Model ${params.modelId} is in staging mode for provider ${params.provider}. Meant for test purposes only.`);
58
82
  }
59
- return { ...providerMapping, hfModelId: params.modelId };
83
+ return providerMapping;
60
84
  }
61
85
  return null;
62
86
  }
@@ -76,8 +100,8 @@ export async function resolveProvider(provider, modelId, endpointUrl) {
76
100
  if (!modelId) {
77
101
  throw new InferenceClientInputError("Specifying a model is required when provider is 'auto'");
78
102
  }
79
- const inferenceProviderMapping = await fetchInferenceProviderMappingForModel(modelId);
80
- provider = Object.keys(inferenceProviderMapping)[0];
103
+ const mappings = await fetchInferenceProviderMappingForModel(modelId);
104
+ provider = mappings[0]?.provider;
81
105
  }
82
106
  if (!provider) {
83
107
  throw new InferenceClientInputError(`No Inference Provider available for model ${modelId}.`);
@@ -1,5 +1,4 @@
1
- import type { InferenceTask, Options, RequestArgs } from "../types.js";
2
- import type { InferenceProviderModelMapping } from "./getInferenceProviderMapping.js";
1
+ import type { InferenceTask, InferenceProviderMappingEntry, Options, RequestArgs } from "../types.js";
3
2
  import type { getProviderHelper } from "./getProviderHelper.js";
4
3
  /**
5
4
  * Helper that prepares request arguments.
@@ -22,7 +21,7 @@ export declare function makeRequestOptions(args: RequestArgs & {
22
21
  export declare function makeRequestOptionsFromResolvedModel(resolvedModel: string, providerHelper: ReturnType<typeof getProviderHelper>, args: RequestArgs & {
23
22
  data?: Blob | ArrayBuffer;
24
23
  stream?: boolean;
25
- }, mapping: InferenceProviderModelMapping | undefined, options?: Options & {
24
+ }, mapping: InferenceProviderMappingEntry | undefined, options?: Options & {
26
25
  task?: InferenceTask;
27
26
  }): {
28
27
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"makeRequestOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/makeRequestOptions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAEtF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAUhE;;;GAGG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,WAAW,GAAG;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,EACD,cAAc,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,EACpD,OAAO,CAAC,EAAE,OAAO,GAAG;IACnB,oEAAoE;IACpE,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB,GACC,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAqE7C;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAClD,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,EACpD,IAAI,EAAE,WAAW,GAAG;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,EACD,OAAO,EAAE,6BAA6B,GAAG,SAAS,EAClD,OAAO,CAAC,EAAE,OAAO,GAAG;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB,GACC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CA8EpC"}
1
+ {"version":3,"file":"makeRequestOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/makeRequestOptions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,6BAA6B,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAUhE;;;GAGG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,WAAW,GAAG;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,EACD,cAAc,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,EACpD,OAAO,CAAC,EAAE,OAAO,GAAG;IACnB,oEAAoE;IACpE,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB,GACC,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAsE7C;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAClD,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,EACpD,IAAI,EAAE,WAAW,GAAG;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB,EACD,OAAO,EAAE,6BAA6B,GAAG,SAAS,EAClD,OAAO,CAAC,EAAE,OAAO,GAAG;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB,GACC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CA8EpC"}
@@ -37,6 +37,7 @@ export async function makeRequestOptions(args, providerHelper, options) {
37
37
  }
38
38
  const inferenceProviderMapping = providerHelper.clientSideRoutingOnly
39
39
  ? {
40
+ provider: provider,
40
41
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
41
42
  providerId: removeProviderPrefix(maybeModel, provider),
42
43
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -1,3 +1,3 @@
1
- export declare const PACKAGE_VERSION = "4.0.4";
1
+ export declare const PACKAGE_VERSION = "4.0.6";
2
2
  export declare const PACKAGE_NAME = "@huggingface/inference";
3
3
  //# sourceMappingURL=package.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Generated file from package.json. Issues importing JSON directly when publishing on commonjs/ESM - see https://github.com/microsoft/TypeScript/issues/51783
2
- export const PACKAGE_VERSION = "4.0.4";
2
+ export const PACKAGE_VERSION = "4.0.6";
3
3
  export const PACKAGE_NAME = "@huggingface/inference";
@@ -1,5 +1,4 @@
1
- import type { InferenceProviderModelMapping } from "../lib/getInferenceProviderMapping.js";
2
- import type { InferenceProvider } from "../types.js";
1
+ import type { InferenceProvider, InferenceProviderMappingEntry } from "../types.js";
3
2
  import { type ModelId } from "../types.js";
4
3
  /**
5
4
  * If you want to try to run inference for a new model locally before it's registered on huggingface.co
@@ -8,5 +7,5 @@ import { type ModelId } from "../types.js";
8
7
  *
9
8
  * We also inject into this dictionary from tests.
10
9
  */
11
- export declare const HARDCODED_MODEL_INFERENCE_MAPPING: Record<InferenceProvider, Record<ModelId, InferenceProviderModelMapping>>;
10
+ export declare const HARDCODED_MODEL_INFERENCE_MAPPING: Record<InferenceProvider, Record<ModelId, InferenceProviderMappingEntry>>;
12
11
  //# sourceMappingURL=consts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/providers/consts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CACrD,iBAAiB,EACjB,MAAM,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAyB9C,CAAC"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/providers/consts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CACrD,iBAAiB,EACjB,MAAM,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAyB9C,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { type InferenceSnippet, type ModelDataMinimal } from "@huggingface/tasks";
2
- import type { InferenceProviderModelMapping } from "../lib/getInferenceProviderMapping.js";
3
- import type { InferenceProviderOrPolicy } from "../types.js";
2
+ import type { InferenceProviderMappingEntry, InferenceProviderOrPolicy } from "../types.js";
4
3
  export type InferenceSnippetOptions = {
5
4
  streaming?: boolean;
6
5
  billTo?: string;
@@ -8,5 +7,5 @@ export type InferenceSnippetOptions = {
8
7
  directRequest?: boolean;
9
8
  endpointUrl?: string;
10
9
  } & Record<string, unknown>;
11
- export declare function getInferenceSnippets(model: ModelDataMinimal, provider: InferenceProviderOrPolicy, inferenceProviderMapping?: InferenceProviderModelMapping, opts?: Record<string, unknown>): InferenceSnippet[];
10
+ export declare function getInferenceSnippets(model: ModelDataMinimal, provider: InferenceProviderOrPolicy, inferenceProviderMapping?: InferenceProviderMappingEntry, opts?: Record<string, unknown>): InferenceSnippet[];
12
11
  //# sourceMappingURL=getInferenceSnippets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getInferenceSnippets.d.ts","sourceRoot":"","sources":["../../../src/snippets/getInferenceSnippets.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAGrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAG3F,OAAO,KAAK,EAAE,yBAAyB,EAA8B,MAAM,aAAa,CAAC;AAGzF,MAAM,MAAM,uBAAuB,GAAG;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA2V5B,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,yBAAyB,EACnC,wBAAwB,CAAC,EAAE,6BAA6B,EACxD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,gBAAgB,EAAE,CAIpB"}
1
+ {"version":3,"file":"getInferenceSnippets.d.ts","sourceRoot":"","sources":["../../../src/snippets/getInferenceSnippets.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAGrB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,KAAK,EAAE,6BAA6B,EAAE,yBAAyB,EAA8B,MAAM,aAAa,CAAC;AAGxH,MAAM,MAAM,uBAAuB,GAAG;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA2V5B,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,yBAAyB,EACnC,wBAAwB,CAAC,EAAE,6BAA6B,EACxD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,gBAAgB,EAAE,CAIpB"}
@@ -328,7 +328,7 @@ function replaceAccessTokenPlaceholder(directRequest, placeholder, snippet, lang
328
328
  const useHfToken = !endpointUrl && // custom endpointUrl => use a generic API_TOKEN
329
329
  (provider == "hf-inference" || // hf-inference provider => use $HF_TOKEN
330
330
  (!directRequest && // if explicit directRequest => use provider-specific token
331
- (!snippet.includes("https://") || // no URL provided => using a client => use $HF_TOKEN
331
+ (snippet.includes("InferenceClient") || // using a client => use $HF_TOKEN
332
332
  snippet.includes("https://router.huggingface.co")))); // explicit routed request => use $HF_TOKEN
333
333
  const accessTokenEnvVar = useHfToken
334
334
  ? "HF_TOKEN" // e.g. routed request or hf-inference
@@ -1,5 +1,4 @@
1
- import type { ChatCompletionInput, PipelineType } from "@huggingface/tasks";
2
- import type { InferenceProviderModelMapping } from "./lib/getInferenceProviderMapping.js";
1
+ import type { ChatCompletionInput, PipelineType, WidgetType } from "@huggingface/tasks";
3
2
  /**
4
3
  * HF model id, like "meta-llama/Llama-3.3-70B-Instruct"
5
4
  */
@@ -34,6 +33,16 @@ export declare const INFERENCE_PROVIDERS: readonly ["black-forest-labs", "cerebr
34
33
  export declare const PROVIDERS_OR_POLICIES: readonly ["black-forest-labs", "cerebras", "cohere", "fal-ai", "featherless-ai", "fireworks-ai", "groq", "hf-inference", "hyperbolic", "nebius", "novita", "nscale", "openai", "ovhcloud", "replicate", "sambanova", "together", "auto"];
35
34
  export type InferenceProvider = (typeof INFERENCE_PROVIDERS)[number];
36
35
  export type InferenceProviderOrPolicy = (typeof PROVIDERS_OR_POLICIES)[number];
36
+ export interface InferenceProviderMappingEntry {
37
+ adapter?: string;
38
+ adapterWeightsPath?: string;
39
+ hfModelId: ModelId;
40
+ provider: string;
41
+ providerId: string;
42
+ status: "live" | "staging";
43
+ task: WidgetType;
44
+ type?: "single-model" | "tag-filter";
45
+ }
37
46
  export interface BaseArgs {
38
47
  /**
39
48
  * The access token to use. Without it, you'll get rate-limited quickly.
@@ -91,7 +100,7 @@ export interface UrlParams {
91
100
  export interface BodyParams<T extends Record<string, unknown> = Record<string, unknown>> {
92
101
  args: T;
93
102
  model: string;
94
- mapping?: InferenceProviderModelMapping | undefined;
103
+ mapping?: InferenceProviderMappingEntry | undefined;
95
104
  task?: InferenceTask;
96
105
  }
97
106
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAE1F;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,OAAO;IACvB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEtC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAAC;AAE9E,eAAO,MAAM,mBAAmB,kOAkBtB,CAAC;AAEX,eAAO,MAAM,qBAAqB,0OAA4C,CAAC;AAE/E,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E,MAAM,WAAW,QAAQ;IACxB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;CACrC;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GACjC,CACG;IAAE,IAAI,EAAE,IAAI,GAAG,WAAW,CAAA;CAAE,GAC5B;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GACrB,mBAAmB,CACrB,GAAG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,qBAAqB,GAAG,cAAc,CAAC;AAEtF,MAAM,WAAW,YAAY;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtF,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,6BAA6B,GAAG,SAAS,CAAC;IACpD,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAExF;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,OAAO;IACvB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEtC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAAC;AAE9E,eAAO,MAAM,mBAAmB,kOAkBtB,CAAC;AAEX,eAAO,MAAM,qBAAqB,0OAA4C,CAAC;AAE/E,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E,MAAM,WAAW,6BAA6B;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,cAAc,GAAG,YAAY,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACxB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;CACrC;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GACjC,CACG;IAAE,IAAI,EAAE,IAAI,GAAG,WAAW,CAAA;CAAE,GAC5B;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GACrB,mBAAmB,CACrB,GAAG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,qBAAqB,GAAG,cAAc,CAAC;AAEtF,MAAM,WAAW,YAAY;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtF,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,6BAA6B,GAAG,SAAS,CAAC;IACpD,IAAI,CAAC,EAAE,aAAa,CAAC;CACrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huggingface/inference",
3
- "version": "4.0.4",
3
+ "version": "4.0.6",
4
4
  "license": "MIT",
5
5
  "author": "Hugging Face and Tim Mikeladze <tim.mikeladze@gmail.com>",
6
6
  "description": "Typescript client for the Hugging Face Inference Providers and Inference Endpoints",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "type": "module",
42
42
  "dependencies": {
43
- "@huggingface/tasks": "^0.19.13",
43
+ "@huggingface/tasks": "^0.19.15",
44
44
  "@huggingface/jinja": "^0.5.0"
45
45
  },
46
46
  "devDependencies": {
@@ -2,23 +2,41 @@ import type { WidgetType } from "@huggingface/tasks";
2
2
  import { HF_HUB_URL } from "../config.js";
3
3
  import { HARDCODED_MODEL_INFERENCE_MAPPING } from "../providers/consts.js";
4
4
  import { EQUIVALENT_SENTENCE_TRANSFORMERS_TASKS } from "../providers/hf-inference.js";
5
- import type { InferenceProvider, InferenceProviderOrPolicy, ModelId } from "../types.js";
5
+ import type { InferenceProvider, InferenceProviderMappingEntry, InferenceProviderOrPolicy, ModelId } from "../types.js";
6
6
  import { typedInclude } from "../utils/typedInclude.js";
7
7
  import { InferenceClientHubApiError, InferenceClientInputError } from "../errors.js";
8
8
 
9
- export const inferenceProviderMappingCache = new Map<ModelId, InferenceProviderMapping>();
9
+ export const inferenceProviderMappingCache = new Map<ModelId, InferenceProviderMappingEntry[]>();
10
10
 
11
- export type InferenceProviderMapping = Partial<
12
- Record<InferenceProvider, Omit<InferenceProviderModelMapping, "hfModelId">>
13
- >;
11
+ /**
12
+ * Normalize inferenceProviderMapping to always return an array format.
13
+ * This provides backward and forward compatibility for the API changes.
14
+ *
15
+ * Vendored from @huggingface/hub to avoid extra dependency.
16
+ */
17
+ function normalizeInferenceProviderMapping(
18
+ modelId: ModelId,
19
+ inferenceProviderMapping?:
20
+ | InferenceProviderMappingEntry[]
21
+ | Record<string, { providerId: string; status: "live" | "staging"; task: WidgetType }>
22
+ ): InferenceProviderMappingEntry[] {
23
+ if (!inferenceProviderMapping) {
24
+ return [];
25
+ }
26
+
27
+ // If it's already an array, return it as is
28
+ if (Array.isArray(inferenceProviderMapping)) {
29
+ return inferenceProviderMapping;
30
+ }
14
31
 
15
- export interface InferenceProviderModelMapping {
16
- adapter?: string;
17
- adapterWeightsPath?: string;
18
- hfModelId: ModelId;
19
- providerId: string;
20
- status: "live" | "staging";
21
- task: WidgetType;
32
+ // Convert mapping to array format
33
+ return Object.entries(inferenceProviderMapping).map(([provider, mapping]) => ({
34
+ provider,
35
+ hfModelId: modelId,
36
+ providerId: mapping.providerId,
37
+ status: mapping.status,
38
+ task: mapping.task,
39
+ }));
22
40
  }
23
41
 
24
42
  export async function fetchInferenceProviderMappingForModel(
@@ -27,8 +45,8 @@ export async function fetchInferenceProviderMappingForModel(
27
45
  options?: {
28
46
  fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
29
47
  }
30
- ): Promise<InferenceProviderMapping> {
31
- let inferenceProviderMapping: InferenceProviderMapping | null;
48
+ ): Promise<InferenceProviderMappingEntry[]> {
49
+ let inferenceProviderMapping: InferenceProviderMappingEntry[] | null;
32
50
  if (inferenceProviderMappingCache.has(modelId)) {
33
51
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
34
52
  inferenceProviderMapping = inferenceProviderMappingCache.get(modelId)!;
@@ -55,7 +73,11 @@ export async function fetchInferenceProviderMappingForModel(
55
73
  );
56
74
  }
57
75
  }
58
- let payload: { inferenceProviderMapping?: InferenceProviderMapping } | null = null;
76
+ let payload: {
77
+ inferenceProviderMapping?:
78
+ | InferenceProviderMappingEntry[]
79
+ | Record<string, { providerId: string; status: "live" | "staging"; task: WidgetType }>;
80
+ } | null = null;
59
81
  try {
60
82
  payload = await resp.json();
61
83
  } catch {
@@ -72,7 +94,8 @@ export async function fetchInferenceProviderMappingForModel(
72
94
  { requestId: resp.headers.get("x-request-id") ?? "", status: resp.status, body: await resp.text() }
73
95
  );
74
96
  }
75
- inferenceProviderMapping = payload.inferenceProviderMapping;
97
+ inferenceProviderMapping = normalizeInferenceProviderMapping(modelId, payload.inferenceProviderMapping);
98
+ inferenceProviderMappingCache.set(modelId, inferenceProviderMapping);
76
99
  }
77
100
  return inferenceProviderMapping;
78
101
  }
@@ -87,16 +110,12 @@ export async function getInferenceProviderMapping(
87
110
  options: {
88
111
  fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
89
112
  }
90
- ): Promise<InferenceProviderModelMapping | null> {
113
+ ): Promise<InferenceProviderMappingEntry | null> {
91
114
  if (HARDCODED_MODEL_INFERENCE_MAPPING[params.provider][params.modelId]) {
92
115
  return HARDCODED_MODEL_INFERENCE_MAPPING[params.provider][params.modelId];
93
116
  }
94
- const inferenceProviderMapping = await fetchInferenceProviderMappingForModel(
95
- params.modelId,
96
- params.accessToken,
97
- options
98
- );
99
- const providerMapping = inferenceProviderMapping[params.provider];
117
+ const mappings = await fetchInferenceProviderMappingForModel(params.modelId, params.accessToken, options);
118
+ const providerMapping = mappings.find((mapping) => mapping.provider === params.provider);
100
119
  if (providerMapping) {
101
120
  const equivalentTasks =
102
121
  params.provider === "hf-inference" && typedInclude(EQUIVALENT_SENTENCE_TRANSFORMERS_TASKS, params.task)
@@ -112,7 +131,7 @@ export async function getInferenceProviderMapping(
112
131
  `Model ${params.modelId} is in staging mode for provider ${params.provider}. Meant for test purposes only.`
113
132
  );
114
133
  }
115
- return { ...providerMapping, hfModelId: params.modelId };
134
+ return providerMapping;
116
135
  }
117
136
  return null;
118
137
  }
@@ -139,8 +158,8 @@ export async function resolveProvider(
139
158
  if (!modelId) {
140
159
  throw new InferenceClientInputError("Specifying a model is required when provider is 'auto'");
141
160
  }
142
- const inferenceProviderMapping = await fetchInferenceProviderMappingForModel(modelId);
143
- provider = Object.keys(inferenceProviderMapping)[0] as InferenceProvider | undefined;
161
+ const mappings = await fetchInferenceProviderMappingForModel(modelId);
162
+ provider = mappings[0]?.provider as InferenceProvider | undefined;
144
163
  }
145
164
  if (!provider) {
146
165
  throw new InferenceClientInputError(`No Inference Provider available for model ${modelId}.`);
@@ -1,7 +1,6 @@
1
1
  import { HF_HEADER_X_BILL_TO, HF_HUB_URL } from "../config.js";
2
2
  import { PACKAGE_NAME, PACKAGE_VERSION } from "../package.js";
3
- import type { InferenceTask, Options, RequestArgs } from "../types.js";
4
- import type { InferenceProviderModelMapping } from "./getInferenceProviderMapping.js";
3
+ import type { InferenceTask, InferenceProviderMappingEntry, Options, RequestArgs } from "../types.js";
5
4
  import { getInferenceProviderMapping } from "./getInferenceProviderMapping.js";
6
5
  import type { getProviderHelper } from "./getProviderHelper.js";
7
6
  import { isUrl } from "./isUrl.js";
@@ -64,6 +63,7 @@ export async function makeRequestOptions(
64
63
 
65
64
  const inferenceProviderMapping = providerHelper.clientSideRoutingOnly
66
65
  ? ({
66
+ provider: provider,
67
67
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
68
68
  providerId: removeProviderPrefix(maybeModel!, provider),
69
69
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -71,7 +71,7 @@ export async function makeRequestOptions(
71
71
  status: "live",
72
72
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
73
73
  task: task!,
74
- } satisfies InferenceProviderModelMapping)
74
+ } satisfies InferenceProviderMappingEntry)
75
75
  : await getInferenceProviderMapping(
76
76
  {
77
77
  modelId: hfModel,
@@ -109,7 +109,7 @@ export function makeRequestOptionsFromResolvedModel(
109
109
  data?: Blob | ArrayBuffer;
110
110
  stream?: boolean;
111
111
  },
112
- mapping: InferenceProviderModelMapping | undefined,
112
+ mapping: InferenceProviderMappingEntry | undefined,
113
113
  options?: Options & {
114
114
  task?: InferenceTask;
115
115
  }
package/src/package.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  // Generated file from package.json. Issues importing JSON directly when publishing on commonjs/ESM - see https://github.com/microsoft/TypeScript/issues/51783
2
- export const PACKAGE_VERSION = "4.0.4";
2
+ export const PACKAGE_VERSION = "4.0.6";
3
3
  export const PACKAGE_NAME = "@huggingface/inference";
@@ -1,5 +1,4 @@
1
- import type { InferenceProviderModelMapping } from "../lib/getInferenceProviderMapping.js";
2
- import type { InferenceProvider } from "../types.js";
1
+ import type { InferenceProvider, InferenceProviderMappingEntry } from "../types.js";
3
2
  import { type ModelId } from "../types.js";
4
3
 
5
4
  /**
@@ -11,7 +10,7 @@ import { type ModelId } from "../types.js";
11
10
  */
12
11
  export const HARDCODED_MODEL_INFERENCE_MAPPING: Record<
13
12
  InferenceProvider,
14
- Record<ModelId, InferenceProviderModelMapping>
13
+ Record<ModelId, InferenceProviderMappingEntry>
15
14
  > = {
16
15
  /**
17
16
  * "HF model ID" => "Model ID on Inference Provider's side"
@@ -8,10 +8,9 @@ import {
8
8
  } from "@huggingface/tasks";
9
9
  import type { PipelineType, WidgetType } from "@huggingface/tasks";
10
10
  import type { ChatCompletionInputMessage, GenerationParameters } from "@huggingface/tasks";
11
- import type { InferenceProviderModelMapping } from "../lib/getInferenceProviderMapping.js";
12
11
  import { getProviderHelper } from "../lib/getProviderHelper.js";
13
12
  import { makeRequestOptionsFromResolvedModel } from "../lib/makeRequestOptions.js";
14
- import type { InferenceProviderOrPolicy, InferenceTask, RequestArgs } from "../types.js";
13
+ import type { InferenceProviderMappingEntry, InferenceProviderOrPolicy, InferenceTask, RequestArgs } from "../types.js";
15
14
  import { templates } from "./templates.exported.js";
16
15
 
17
16
  export type InferenceSnippetOptions = {
@@ -138,7 +137,7 @@ const snippetGenerator = (templateName: string, inputPreparationFn?: InputPrepar
138
137
  return (
139
138
  model: ModelDataMinimal,
140
139
  provider: InferenceProviderOrPolicy,
141
- inferenceProviderMapping?: InferenceProviderModelMapping,
140
+ inferenceProviderMapping?: InferenceProviderMappingEntry,
142
141
  opts?: InferenceSnippetOptions
143
142
  ): InferenceSnippet[] => {
144
143
  const providerModelId = inferenceProviderMapping?.providerId ?? model.id;
@@ -331,7 +330,7 @@ const snippets: Partial<
331
330
  (
332
331
  model: ModelDataMinimal,
333
332
  provider: InferenceProviderOrPolicy,
334
- inferenceProviderMapping?: InferenceProviderModelMapping,
333
+ inferenceProviderMapping?: InferenceProviderMappingEntry,
335
334
  opts?: InferenceSnippetOptions
336
335
  ) => InferenceSnippet[]
337
336
  >
@@ -370,7 +369,7 @@ const snippets: Partial<
370
369
  export function getInferenceSnippets(
371
370
  model: ModelDataMinimal,
372
371
  provider: InferenceProviderOrPolicy,
373
- inferenceProviderMapping?: InferenceProviderModelMapping,
372
+ inferenceProviderMapping?: InferenceProviderMappingEntry,
374
373
  opts?: Record<string, unknown>
375
374
  ): InferenceSnippet[] {
376
375
  return model.pipeline_tag && model.pipeline_tag in snippets
@@ -466,7 +465,7 @@ function replaceAccessTokenPlaceholder(
466
465
  !endpointUrl && // custom endpointUrl => use a generic API_TOKEN
467
466
  (provider == "hf-inference" || // hf-inference provider => use $HF_TOKEN
468
467
  (!directRequest && // if explicit directRequest => use provider-specific token
469
- (!snippet.includes("https://") || // no URL provided => using a client => use $HF_TOKEN
468
+ (snippet.includes("InferenceClient") || // using a client => use $HF_TOKEN
470
469
  snippet.includes("https://router.huggingface.co")))); // explicit routed request => use $HF_TOKEN
471
470
  const accessTokenEnvVar = useHfToken
472
471
  ? "HF_TOKEN" // e.g. routed request or hf-inference
package/src/types.ts CHANGED
@@ -1,5 +1,4 @@
1
- import type { ChatCompletionInput, PipelineType } from "@huggingface/tasks";
2
- import type { InferenceProviderModelMapping } from "./lib/getInferenceProviderMapping.js";
1
+ import type { ChatCompletionInput, PipelineType, WidgetType } from "@huggingface/tasks";
3
2
 
4
3
  /**
5
4
  * HF model id, like "meta-llama/Llama-3.3-70B-Instruct"
@@ -63,6 +62,17 @@ export type InferenceProvider = (typeof INFERENCE_PROVIDERS)[number];
63
62
 
64
63
  export type InferenceProviderOrPolicy = (typeof PROVIDERS_OR_POLICIES)[number];
65
64
 
65
+ export interface InferenceProviderMappingEntry {
66
+ adapter?: string;
67
+ adapterWeightsPath?: string;
68
+ hfModelId: ModelId;
69
+ provider: string;
70
+ providerId: string;
71
+ status: "live" | "staging";
72
+ task: WidgetType;
73
+ type?: "single-model" | "tag-filter";
74
+ }
75
+
66
76
  export interface BaseArgs {
67
77
  /**
68
78
  * The access token to use. Without it, you'll get rate-limited quickly.
@@ -126,6 +136,6 @@ export interface UrlParams {
126
136
  export interface BodyParams<T extends Record<string, unknown> = Record<string, unknown>> {
127
137
  args: T;
128
138
  model: string;
129
- mapping?: InferenceProviderModelMapping | undefined;
139
+ mapping?: InferenceProviderMappingEntry | undefined;
130
140
  task?: InferenceTask;
131
141
  }