@ai-sdk/huggingface 1.0.22 → 1.0.24
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/CHANGELOG.md +13 -0
- package/dist/index.d.mts +17 -17
- package/dist/index.d.ts +17 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/docs/170-huggingface.mdx +140 -17
- package/package.json +2 -2
- package/src/huggingface-provider.ts +17 -17
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @ai-sdk/huggingface
|
|
2
2
|
|
|
3
|
+
## 1.0.24
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 3988c08: docs: fix incorrect and outdated provider docs
|
|
8
|
+
|
|
9
|
+
## 1.0.23
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [9d056e6]
|
|
14
|
+
- @ai-sdk/openai-compatible@2.0.22
|
|
15
|
+
|
|
3
16
|
## 1.0.22
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -11,36 +11,36 @@ interface HuggingFaceResponsesSettings {
|
|
|
11
11
|
|
|
12
12
|
interface HuggingFaceProviderSettings {
|
|
13
13
|
/**
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
* Hugging Face API key.
|
|
15
|
+
*/
|
|
16
16
|
apiKey?: string;
|
|
17
17
|
/**
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
* Base URL for the API calls.
|
|
19
|
+
*/
|
|
20
20
|
baseURL?: string;
|
|
21
21
|
/**
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
* Custom headers to include in the requests.
|
|
23
|
+
*/
|
|
24
24
|
headers?: Record<string, string>;
|
|
25
25
|
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
* Custom fetch implementation. You can use it as a middleware to intercept requests,
|
|
27
|
+
* or to provide a custom fetch implementation for e.g. testing.
|
|
28
|
+
*/
|
|
29
29
|
fetch?: FetchFunction;
|
|
30
30
|
generateId?: () => string;
|
|
31
31
|
}
|
|
32
32
|
interface HuggingFaceProvider extends ProviderV3 {
|
|
33
33
|
/**
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
* Creates a Hugging Face responses model for text generation.
|
|
35
|
+
*/
|
|
36
36
|
(modelId: HuggingFaceResponsesModelId): LanguageModelV3;
|
|
37
37
|
/**
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
* Creates a Hugging Face responses model for text generation.
|
|
39
|
+
*/
|
|
40
40
|
languageModel(modelId: HuggingFaceResponsesModelId): LanguageModelV3;
|
|
41
41
|
/**
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
* Creates a Hugging Face responses model for text generation.
|
|
43
|
+
*/
|
|
44
44
|
responses(modelId: HuggingFaceResponsesModelId): LanguageModelV3;
|
|
45
45
|
/**
|
|
46
46
|
* @deprecated Use `embeddingModel` instead.
|
|
@@ -48,11 +48,11 @@ interface HuggingFaceProvider extends ProviderV3 {
|
|
|
48
48
|
textEmbeddingModel(modelId: string): never;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
|
-
Create a Hugging Face provider instance.
|
|
51
|
+
* Create a Hugging Face provider instance.
|
|
52
52
|
*/
|
|
53
53
|
declare function createHuggingFace(options?: HuggingFaceProviderSettings): HuggingFaceProvider;
|
|
54
54
|
/**
|
|
55
|
-
Default Hugging Face provider instance.
|
|
55
|
+
* Default Hugging Face provider instance.
|
|
56
56
|
*/
|
|
57
57
|
declare const huggingface: HuggingFaceProvider;
|
|
58
58
|
|
package/dist/index.d.ts
CHANGED
|
@@ -11,36 +11,36 @@ interface HuggingFaceResponsesSettings {
|
|
|
11
11
|
|
|
12
12
|
interface HuggingFaceProviderSettings {
|
|
13
13
|
/**
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
* Hugging Face API key.
|
|
15
|
+
*/
|
|
16
16
|
apiKey?: string;
|
|
17
17
|
/**
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
* Base URL for the API calls.
|
|
19
|
+
*/
|
|
20
20
|
baseURL?: string;
|
|
21
21
|
/**
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
* Custom headers to include in the requests.
|
|
23
|
+
*/
|
|
24
24
|
headers?: Record<string, string>;
|
|
25
25
|
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
* Custom fetch implementation. You can use it as a middleware to intercept requests,
|
|
27
|
+
* or to provide a custom fetch implementation for e.g. testing.
|
|
28
|
+
*/
|
|
29
29
|
fetch?: FetchFunction;
|
|
30
30
|
generateId?: () => string;
|
|
31
31
|
}
|
|
32
32
|
interface HuggingFaceProvider extends ProviderV3 {
|
|
33
33
|
/**
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
* Creates a Hugging Face responses model for text generation.
|
|
35
|
+
*/
|
|
36
36
|
(modelId: HuggingFaceResponsesModelId): LanguageModelV3;
|
|
37
37
|
/**
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
* Creates a Hugging Face responses model for text generation.
|
|
39
|
+
*/
|
|
40
40
|
languageModel(modelId: HuggingFaceResponsesModelId): LanguageModelV3;
|
|
41
41
|
/**
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
* Creates a Hugging Face responses model for text generation.
|
|
43
|
+
*/
|
|
44
44
|
responses(modelId: HuggingFaceResponsesModelId): LanguageModelV3;
|
|
45
45
|
/**
|
|
46
46
|
* @deprecated Use `embeddingModel` instead.
|
|
@@ -48,11 +48,11 @@ interface HuggingFaceProvider extends ProviderV3 {
|
|
|
48
48
|
textEmbeddingModel(modelId: string): never;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
|
-
Create a Hugging Face provider instance.
|
|
51
|
+
* Create a Hugging Face provider instance.
|
|
52
52
|
*/
|
|
53
53
|
declare function createHuggingFace(options?: HuggingFaceProviderSettings): HuggingFaceProvider;
|
|
54
54
|
/**
|
|
55
|
-
Default Hugging Face provider instance.
|
|
55
|
+
* Default Hugging Face provider instance.
|
|
56
56
|
*/
|
|
57
57
|
declare const huggingface: HuggingFaceProvider;
|
|
58
58
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/huggingface-provider.ts","../src/responses/huggingface-responses-language-model.ts","../src/huggingface-error.ts","../src/responses/convert-huggingface-responses-usage.ts","../src/responses/convert-to-huggingface-responses-messages.ts","../src/responses/huggingface-responses-prepare-tools.ts","../src/responses/map-huggingface-responses-finish-reason.ts"],"sourcesContent":["export { createHuggingFace, huggingface } from './huggingface-provider';\nexport type {\n HuggingFaceProvider,\n HuggingFaceProviderSettings,\n} from './huggingface-provider';\nexport type {\n HuggingFaceResponsesModelId,\n HuggingFaceResponsesSettings,\n} from './responses/huggingface-responses-settings';\nexport type { OpenAICompatibleErrorData as HuggingFaceErrorData } from '@ai-sdk/openai-compatible';\n","import {\n LanguageModelV3,\n NoSuchModelError,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { HuggingFaceResponsesLanguageModel } from './responses/huggingface-responses-language-model';\nimport { HuggingFaceResponsesModelId } from './responses/huggingface-responses-settings';\n\nexport interface HuggingFaceProviderSettings {\n /**\nHugging Face API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n\n generateId?: () => string;\n}\n\nexport interface HuggingFaceProvider extends ProviderV3 {\n /**\nCreates a Hugging Face responses model for text generation.\n*/\n (modelId: HuggingFaceResponsesModelId): LanguageModelV3;\n\n /**\nCreates a Hugging Face responses model for text generation.\n*/\n languageModel(modelId: HuggingFaceResponsesModelId): LanguageModelV3;\n\n /**\nCreates a Hugging Face responses model for text generation.\n*/\n responses(modelId: HuggingFaceResponsesModelId): LanguageModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\n/**\nCreate a Hugging Face provider instance.\n */\nexport function createHuggingFace(\n options: HuggingFaceProviderSettings = {},\n): HuggingFaceProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://router.huggingface.co/v1';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'HUGGINGFACE_API_KEY',\n description: 'Hugging Face',\n })}`,\n ...options.headers,\n });\n\n const createResponsesModel = (modelId: HuggingFaceResponsesModelId) => {\n return new HuggingFaceResponsesLanguageModel(modelId, {\n provider: 'huggingface.responses',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId ?? generateId,\n });\n };\n\n const provider = (modelId: HuggingFaceResponsesModelId) =>\n createResponsesModel(modelId);\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createResponsesModel;\n provider.responses = createResponsesModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n message:\n 'Hugging Face Responses API does not support text embeddings. Use the Hugging Face Inference API directly for embeddings.',\n });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'imageModel',\n message:\n 'Hugging Face Responses API does not support image generation. Use the Hugging Face Inference API directly for image models.',\n });\n };\n\n return provider;\n}\n\n/**\nDefault Hugging Face provider instance.\n */\nexport const huggingface = createHuggingFace();\n","import {\n APICallError,\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamPart,\n LanguageModelV3StreamResult,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { HuggingFaceConfig } from '../huggingface-config';\nimport { huggingfaceFailedResponseHandler } from '../huggingface-error';\nimport {\n convertHuggingFaceResponsesUsage,\n HuggingFaceResponsesUsage,\n} from './convert-huggingface-responses-usage';\nimport { convertToHuggingFaceResponsesMessages } from './convert-to-huggingface-responses-messages';\nimport { prepareResponsesTools } from './huggingface-responses-prepare-tools';\nimport { HuggingFaceResponsesModelId } from './huggingface-responses-settings';\nimport { mapHuggingFaceResponsesFinishReason } from './map-huggingface-responses-finish-reason';\n\nexport class HuggingFaceResponsesLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly modelId: HuggingFaceResponsesModelId;\n\n private readonly config: HuggingFaceConfig;\n\n constructor(modelId: HuggingFaceResponsesModelId, config: HuggingFaceConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n maxOutputTokens,\n temperature,\n stopSequences,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n prompt,\n providerOptions,\n tools,\n toolChoice,\n responseFormat,\n }: LanguageModelV3CallOptions) {\n const warnings: SharedV3Warning[] = [];\n\n if (topK != null) {\n warnings.push({ type: 'unsupported', feature: 'topK' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n if (presencePenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported', feature: 'stopSequences' });\n }\n\n const { input, warnings: messageWarnings } =\n await convertToHuggingFaceResponsesMessages({\n prompt,\n });\n\n warnings.push(...messageWarnings);\n\n const huggingfaceOptions = await parseProviderOptions({\n provider: 'huggingface',\n providerOptions,\n schema: huggingfaceResponsesProviderOptionsSchema,\n });\n\n const {\n tools: preparedTools,\n toolChoice: preparedToolChoice,\n toolWarnings,\n } = prepareResponsesTools({\n tools,\n toolChoice,\n });\n\n warnings.push(...toolWarnings);\n\n const baseArgs = {\n model: this.modelId,\n input,\n temperature,\n top_p: topP,\n max_output_tokens: maxOutputTokens,\n\n // HuggingFace Responses API uses text.format for structured output\n ...(responseFormat?.type === 'json' &&\n responseFormat.schema && {\n text: {\n format: {\n type: 'json_schema',\n strict: huggingfaceOptions?.strictJsonSchema ?? false,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n },\n },\n }),\n\n metadata: huggingfaceOptions?.metadata,\n instructions: huggingfaceOptions?.instructions,\n\n ...(preparedTools && { tools: preparedTools }),\n ...(preparedToolChoice && { tool_choice: preparedToolChoice }),\n ...(huggingfaceOptions?.reasoningEffort != null && {\n reasoning: {\n ...(huggingfaceOptions?.reasoningEffort != null && {\n effort: huggingfaceOptions.reasoningEffort,\n }),\n },\n }),\n };\n\n return { args: baseArgs, warnings };\n }\n\n async doGenerate(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3GenerateResult> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: false,\n };\n\n const url = this.config.url({\n path: '/responses',\n modelId: this.modelId,\n });\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: huggingfaceFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n huggingfaceResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.error) {\n throw new APICallError({\n message: response.error.message,\n url,\n requestBodyValues: body,\n statusCode: 400,\n responseHeaders,\n responseBody: rawResponse as string,\n isRetryable: false,\n });\n }\n\n const content: Array<LanguageModelV3Content> = [];\n\n // Process output array\n for (const part of response.output) {\n switch (part.type) {\n case 'message': {\n for (const contentPart of part.content) {\n content.push({\n type: 'text',\n text: contentPart.text,\n providerMetadata: {\n huggingface: {\n itemId: part.id,\n },\n },\n });\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n }\n }\n break;\n }\n\n case 'reasoning': {\n for (const contentPart of part.content) {\n content.push({\n type: 'reasoning',\n text: contentPart.text,\n providerMetadata: {\n huggingface: {\n itemId: part.id,\n },\n },\n });\n }\n break;\n }\n\n case 'mcp_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: part.name,\n input: part.arguments,\n providerExecuted: true,\n });\n\n if (part.output) {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: part.name,\n result: part.output,\n });\n }\n break;\n }\n\n case 'mcp_list_tools': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'list_tools',\n input: JSON.stringify({ server_label: part.server_label }),\n providerExecuted: true,\n });\n\n if (part.tools) {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'list_tools',\n result: { tools: part.tools },\n });\n }\n break;\n }\n\n case 'function_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n\n if (part.output) {\n content.push({\n type: 'tool-result',\n toolCallId: part.call_id,\n toolName: part.name,\n result: part.output,\n });\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n content,\n finishReason: {\n unified: mapHuggingFaceResponsesFinishReason(\n response.incomplete_details?.reason ?? 'stop',\n ),\n raw: response.incomplete_details?.reason ?? undefined,\n },\n usage: convertHuggingFaceResponsesUsage(response.usage),\n request: { body },\n response: {\n id: response.id,\n timestamp: new Date(response.created_at * 1000),\n modelId: response.model,\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata: {\n huggingface: {\n responseId: response.id,\n },\n },\n warnings,\n };\n }\n\n async doStream(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3StreamResult> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n };\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/responses',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: huggingfaceFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n huggingfaceResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV3FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let responseId: string | null = null;\n let usage: HuggingFaceResponsesUsage | undefined = undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof huggingfaceResponsesChunkSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (!chunk.success) {\n finishReason = {\n unified: 'error',\n raw: undefined,\n };\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isResponseCreatedChunk(value)) {\n responseId = value.response.id;\n controller.enqueue({\n type: 'response-metadata',\n id: value.response.id,\n timestamp: new Date(value.response.created_at * 1000),\n modelId: value.response.model,\n });\n return;\n }\n\n if (isResponseOutputItemAddedChunk(value)) {\n if (\n value.item.type === 'message' &&\n value.item.role === 'assistant'\n ) {\n controller.enqueue({\n type: 'text-start',\n id: value.item.id,\n providerMetadata: {\n huggingface: {\n itemId: value.item.id,\n },\n },\n });\n } else if (value.item.type === 'function_call') {\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.call_id,\n toolName: value.item.name,\n });\n } else if (value.item.type === 'reasoning') {\n controller.enqueue({\n type: 'reasoning-start',\n id: value.item.id,\n providerMetadata: {\n huggingface: {\n itemId: value.item.id,\n },\n },\n });\n }\n return;\n }\n\n if (isResponseOutputItemDoneChunk(value)) {\n if (\n value.item.type === 'message' &&\n value.item.role === 'assistant'\n ) {\n controller.enqueue({\n type: 'text-end',\n id: value.item.id,\n });\n } else if (value.item.type === 'function_call') {\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n input: value.item.arguments,\n });\n\n if (value.item.output) {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n result: value.item.output,\n });\n }\n }\n return;\n }\n\n if (isResponseCompletedChunk(value)) {\n responseId = value.response.id;\n finishReason = {\n unified: mapHuggingFaceResponsesFinishReason(\n value.response.incomplete_details?.reason ?? 'stop',\n ),\n raw: value.response.incomplete_details?.reason ?? undefined,\n };\n if (value.response.usage) {\n usage = value.response.usage;\n }\n return;\n }\n\n if (isReasoningDeltaChunk(value)) {\n controller.enqueue({\n type: 'reasoning-delta',\n id: value.item_id,\n delta: value.delta,\n });\n return;\n }\n\n if (isReasoningEndChunk(value)) {\n controller.enqueue({\n type: 'reasoning-end',\n id: value.item_id,\n });\n return;\n }\n\n if (isTextDeltaChunk(value)) {\n controller.enqueue({\n type: 'text-delta',\n id: value.item_id,\n delta: value.delta,\n });\n return;\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertHuggingFaceResponsesUsage(usage),\n providerMetadata: {\n huggingface: {\n responseId,\n },\n },\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nconst huggingfaceResponsesProviderOptionsSchema = z.object({\n metadata: z.record(z.string(), z.string()).optional(),\n instructions: z.string().optional(),\n strictJsonSchema: z.boolean().optional(),\n reasoningEffort: z.string().optional(),\n});\n\nconst huggingfaceResponsesOutputSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n role: z.string().optional(),\n status: z.string().optional(),\n content: z.array(\n z.object({\n type: z.literal('output_text'),\n text: z.string(),\n annotations: z.array(z.any()).optional(),\n }),\n ),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n status: z.string().optional(),\n content: z.array(\n z.object({\n type: z.literal('reasoning_text'),\n text: z.string(),\n }),\n ),\n summary: z\n .array(\n z\n .object({\n type: z.literal('reasoning_summary'),\n text: z.string(),\n })\n .optional(),\n )\n .optional(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_call'),\n id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_list_tools'),\n id: z.string(),\n server_label: z.string(),\n tools: z.array(z.any()).optional(),\n status: z.string().optional(),\n }),\n]);\n\nconst huggingfaceResponsesResponseSchema = z.object({\n id: z.string(),\n model: z.string(),\n object: z.string(),\n created_at: z.number(),\n status: z.string(),\n error: z.any().nullable(),\n instructions: z.any().nullable(),\n max_output_tokens: z.any().nullable(),\n metadata: z.any().nullable(),\n tool_choice: z.any(),\n tools: z.array(z.any()),\n temperature: z.number(),\n top_p: z.number(),\n incomplete_details: z\n .object({\n reason: z.string(),\n })\n .nullable()\n .optional(),\n usage: z\n .object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({\n cached_tokens: z.number(),\n })\n .optional(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({\n reasoning_tokens: z.number(),\n })\n .optional(),\n total_tokens: z.number(),\n })\n .nullable()\n .optional(),\n output: z.array(huggingfaceResponsesOutputSchema),\n output_text: z.string().nullable().optional(),\n});\n\nconst responseOutputItemAddedSchema = z.object({\n type: z.literal('response.output_item.added'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n role: z.string().optional(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n summary: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('mcp_list_tools'),\n id: z.string(),\n server_label: z.string(),\n tools: z.array(z.any()).optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_call'),\n id: z.string(),\n server_label: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n ]),\n sequence_number: z.number(),\n});\n\nconst responseOutputItemDoneSchema = z.object({\n type: z.literal('response.output_item.done'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n role: z.string().optional(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('mcp_list_tools'),\n id: z.string(),\n server_label: z.string(),\n tools: z.array(z.any()).optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_call'),\n id: z.string(),\n server_label: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n summary: z.array(z.any()).optional(),\n }),\n ]),\n sequence_number: z.number(),\n});\n\nconst textDeltaChunkSchema = z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n sequence_number: z.number(),\n});\n\nconst reasoningTextDeltaChunkSchema = z.object({\n type: z.literal('response.reasoning_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n sequence_number: z.number(),\n});\n\nconst reasoningTextEndChunkSchema = z.object({\n type: z.literal('response.reasoning_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n sequence_number: z.number(),\n});\n\nconst responseCompletedChunkSchema = z.object({\n type: z.literal('response.completed'),\n response: huggingfaceResponsesResponseSchema,\n sequence_number: z.number(),\n});\n\nconst responseCreatedChunkSchema = z.object({\n type: z.literal('response.created'),\n response: z.object({\n id: z.string(),\n object: z.string(),\n created_at: z.number(),\n status: z.string(),\n model: z.string(),\n }),\n});\n\nconst huggingfaceResponsesChunkSchema = z.union([\n responseOutputItemAddedSchema,\n responseOutputItemDoneSchema,\n reasoningTextDeltaChunkSchema,\n reasoningTextEndChunkSchema,\n textDeltaChunkSchema,\n responseCompletedChunkSchema,\n responseCreatedChunkSchema,\n z.object({ type: z.string() }).loose(), // fallback for unknown chunks\n]);\n\nfunction isResponseOutputItemAddedChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemAddedSchema> {\n return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseOutputItemDoneChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemDoneSchema> {\n return chunk.type === 'response.output_item.done';\n}\n\nfunction isTextDeltaChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof textDeltaChunkSchema> {\n return chunk.type === 'response.output_text.delta';\n}\n\nfunction isReasoningDeltaChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof reasoningTextDeltaChunkSchema> {\n return chunk.type === 'response.reasoning_text.delta';\n}\n\nfunction isReasoningEndChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof reasoningTextEndChunkSchema> {\n return chunk.type === 'response.reasoning_text.done';\n}\n\nfunction isResponseCompletedChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCompletedChunkSchema> {\n return chunk.type === 'response.completed';\n}\n\nfunction isResponseCreatedChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCreatedChunkSchema> {\n return chunk.type === 'response.created';\n}\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst huggingfaceErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().optional(),\n code: z.string().optional(),\n }),\n});\n\nexport type HuggingFaceErrorData = z.infer<typeof huggingfaceErrorDataSchema>;\n\nexport const huggingfaceFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: huggingfaceErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport type HuggingFaceResponsesUsage = {\n input_tokens: number;\n input_tokens_details?: {\n cached_tokens?: number;\n };\n output_tokens: number;\n output_tokens_details?: {\n reasoning_tokens?: number;\n };\n total_tokens: number;\n};\n\nexport function convertHuggingFaceResponsesUsage(\n usage: HuggingFaceResponsesUsage | undefined | null,\n): LanguageModelV3Usage {\n if (usage == null) {\n return {\n inputTokens: {\n total: undefined,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: undefined,\n text: undefined,\n reasoning: undefined,\n },\n raw: undefined,\n };\n }\n\n const inputTokens = usage.input_tokens;\n const outputTokens = usage.output_tokens;\n const cachedTokens = usage.input_tokens_details?.cached_tokens ?? 0;\n const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? 0;\n\n return {\n inputTokens: {\n total: inputTokens,\n noCache: inputTokens - cachedTokens,\n cacheRead: cachedTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens - reasoningTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import {\n SharedV3Warning,\n LanguageModelV3Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport async function convertToHuggingFaceResponsesMessages({\n prompt,\n}: {\n prompt: LanguageModelV3Prompt;\n}): Promise<{\n input: string | Array<any>;\n warnings: Array<SharedV3Warning>;\n}> {\n const messages: Array<any> = [];\n const warnings: Array<SharedV3Warning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'input_text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'input_image',\n image_url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${part.data}`,\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part type: ${_exhaustiveCheck}`);\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n messages.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n });\n break;\n }\n case 'tool-call': {\n // tool calls are handled by the responses API\n break;\n }\n\n case 'tool-result': {\n // tool results are handled by the responses API\n break;\n }\n\n case 'reasoning': {\n // include reasoning content in the message text\n messages.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n });\n break;\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n warnings.push({ type: 'unsupported', feature: 'tool messages' });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { input: messages, warnings };\n}\n","import { LanguageModelV3CallOptions, SharedV3Warning } from '@ai-sdk/provider';\n\nexport type HuggingFaceResponsesTool = {\n type: 'function';\n name: string;\n description?: string;\n parameters: unknown;\n};\n\nexport type HuggingFaceResponsesToolChoice =\n | 'auto'\n | 'required'\n | { type: 'function'; function: { name: string } };\n\nexport function prepareResponsesTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): {\n tools?: HuggingFaceResponsesTool[];\n toolChoice?: HuggingFaceResponsesToolChoice;\n toolWarnings: SharedV3Warning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: SharedV3Warning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const huggingfaceTools: HuggingFaceResponsesTool[] = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n huggingfaceTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n });\n break;\n case 'provider':\n toolWarnings.push({\n type: 'unsupported',\n feature: `provider-defined tool ${tool.id}`,\n });\n break;\n default: {\n const _exhaustiveCheck: never = tool;\n throw new Error(`Unsupported tool type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n // prepare tool choice:\n let mappedToolChoice: HuggingFaceResponsesToolChoice | undefined = undefined;\n if (toolChoice) {\n switch (toolChoice.type) {\n case 'auto':\n mappedToolChoice = 'auto';\n break;\n case 'required':\n mappedToolChoice = 'required';\n break;\n case 'none':\n // not supported, ignore\n break;\n case 'tool':\n mappedToolChoice = {\n type: 'function',\n function: { name: toolChoice.toolName },\n };\n break;\n default: {\n const _exhaustiveCheck: never = toolChoice;\n throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n tools: huggingfaceTools,\n toolChoice: mappedToolChoice,\n toolWarnings,\n };\n}\n","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapHuggingFaceResponsesFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'tool_calls':\n return 'tool-calls';\n case 'error':\n return 'error';\n default:\n return 'other';\n }\n}\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_provider","import_provider_utils","import_v4","_a"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/huggingface-provider.ts","../src/responses/huggingface-responses-language-model.ts","../src/huggingface-error.ts","../src/responses/convert-huggingface-responses-usage.ts","../src/responses/convert-to-huggingface-responses-messages.ts","../src/responses/huggingface-responses-prepare-tools.ts","../src/responses/map-huggingface-responses-finish-reason.ts"],"sourcesContent":["export { createHuggingFace, huggingface } from './huggingface-provider';\nexport type {\n HuggingFaceProvider,\n HuggingFaceProviderSettings,\n} from './huggingface-provider';\nexport type {\n HuggingFaceResponsesModelId,\n HuggingFaceResponsesSettings,\n} from './responses/huggingface-responses-settings';\nexport type { OpenAICompatibleErrorData as HuggingFaceErrorData } from '@ai-sdk/openai-compatible';\n","import {\n LanguageModelV3,\n NoSuchModelError,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { HuggingFaceResponsesLanguageModel } from './responses/huggingface-responses-language-model';\nimport { HuggingFaceResponsesModelId } from './responses/huggingface-responses-settings';\n\nexport interface HuggingFaceProviderSettings {\n /**\n * Hugging Face API key.\n */\n apiKey?: string;\n /**\n * Base URL for the API calls.\n */\n baseURL?: string;\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n generateId?: () => string;\n}\n\nexport interface HuggingFaceProvider extends ProviderV3 {\n /**\n * Creates a Hugging Face responses model for text generation.\n */\n (modelId: HuggingFaceResponsesModelId): LanguageModelV3;\n\n /**\n * Creates a Hugging Face responses model for text generation.\n */\n languageModel(modelId: HuggingFaceResponsesModelId): LanguageModelV3;\n\n /**\n * Creates a Hugging Face responses model for text generation.\n */\n responses(modelId: HuggingFaceResponsesModelId): LanguageModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\n/**\n * Create a Hugging Face provider instance.\n */\nexport function createHuggingFace(\n options: HuggingFaceProviderSettings = {},\n): HuggingFaceProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://router.huggingface.co/v1';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'HUGGINGFACE_API_KEY',\n description: 'Hugging Face',\n })}`,\n ...options.headers,\n });\n\n const createResponsesModel = (modelId: HuggingFaceResponsesModelId) => {\n return new HuggingFaceResponsesLanguageModel(modelId, {\n provider: 'huggingface.responses',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId ?? generateId,\n });\n };\n\n const provider = (modelId: HuggingFaceResponsesModelId) =>\n createResponsesModel(modelId);\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createResponsesModel;\n provider.responses = createResponsesModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n message:\n 'Hugging Face Responses API does not support text embeddings. Use the Hugging Face Inference API directly for embeddings.',\n });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'imageModel',\n message:\n 'Hugging Face Responses API does not support image generation. Use the Hugging Face Inference API directly for image models.',\n });\n };\n\n return provider;\n}\n\n/**\n * Default Hugging Face provider instance.\n */\nexport const huggingface = createHuggingFace();\n","import {\n APICallError,\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamPart,\n LanguageModelV3StreamResult,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { HuggingFaceConfig } from '../huggingface-config';\nimport { huggingfaceFailedResponseHandler } from '../huggingface-error';\nimport {\n convertHuggingFaceResponsesUsage,\n HuggingFaceResponsesUsage,\n} from './convert-huggingface-responses-usage';\nimport { convertToHuggingFaceResponsesMessages } from './convert-to-huggingface-responses-messages';\nimport { prepareResponsesTools } from './huggingface-responses-prepare-tools';\nimport { HuggingFaceResponsesModelId } from './huggingface-responses-settings';\nimport { mapHuggingFaceResponsesFinishReason } from './map-huggingface-responses-finish-reason';\n\nexport class HuggingFaceResponsesLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly modelId: HuggingFaceResponsesModelId;\n\n private readonly config: HuggingFaceConfig;\n\n constructor(modelId: HuggingFaceResponsesModelId, config: HuggingFaceConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n maxOutputTokens,\n temperature,\n stopSequences,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n prompt,\n providerOptions,\n tools,\n toolChoice,\n responseFormat,\n }: LanguageModelV3CallOptions) {\n const warnings: SharedV3Warning[] = [];\n\n if (topK != null) {\n warnings.push({ type: 'unsupported', feature: 'topK' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n if (presencePenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported', feature: 'stopSequences' });\n }\n\n const { input, warnings: messageWarnings } =\n await convertToHuggingFaceResponsesMessages({\n prompt,\n });\n\n warnings.push(...messageWarnings);\n\n const huggingfaceOptions = await parseProviderOptions({\n provider: 'huggingface',\n providerOptions,\n schema: huggingfaceResponsesProviderOptionsSchema,\n });\n\n const {\n tools: preparedTools,\n toolChoice: preparedToolChoice,\n toolWarnings,\n } = prepareResponsesTools({\n tools,\n toolChoice,\n });\n\n warnings.push(...toolWarnings);\n\n const baseArgs = {\n model: this.modelId,\n input,\n temperature,\n top_p: topP,\n max_output_tokens: maxOutputTokens,\n\n // HuggingFace Responses API uses text.format for structured output\n ...(responseFormat?.type === 'json' &&\n responseFormat.schema && {\n text: {\n format: {\n type: 'json_schema',\n strict: huggingfaceOptions?.strictJsonSchema ?? false,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n },\n },\n }),\n\n metadata: huggingfaceOptions?.metadata,\n instructions: huggingfaceOptions?.instructions,\n\n ...(preparedTools && { tools: preparedTools }),\n ...(preparedToolChoice && { tool_choice: preparedToolChoice }),\n ...(huggingfaceOptions?.reasoningEffort != null && {\n reasoning: {\n ...(huggingfaceOptions?.reasoningEffort != null && {\n effort: huggingfaceOptions.reasoningEffort,\n }),\n },\n }),\n };\n\n return { args: baseArgs, warnings };\n }\n\n async doGenerate(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3GenerateResult> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: false,\n };\n\n const url = this.config.url({\n path: '/responses',\n modelId: this.modelId,\n });\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: huggingfaceFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n huggingfaceResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.error) {\n throw new APICallError({\n message: response.error.message,\n url,\n requestBodyValues: body,\n statusCode: 400,\n responseHeaders,\n responseBody: rawResponse as string,\n isRetryable: false,\n });\n }\n\n const content: Array<LanguageModelV3Content> = [];\n\n // Process output array\n for (const part of response.output) {\n switch (part.type) {\n case 'message': {\n for (const contentPart of part.content) {\n content.push({\n type: 'text',\n text: contentPart.text,\n providerMetadata: {\n huggingface: {\n itemId: part.id,\n },\n },\n });\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n }\n }\n break;\n }\n\n case 'reasoning': {\n for (const contentPart of part.content) {\n content.push({\n type: 'reasoning',\n text: contentPart.text,\n providerMetadata: {\n huggingface: {\n itemId: part.id,\n },\n },\n });\n }\n break;\n }\n\n case 'mcp_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: part.name,\n input: part.arguments,\n providerExecuted: true,\n });\n\n if (part.output) {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: part.name,\n result: part.output,\n });\n }\n break;\n }\n\n case 'mcp_list_tools': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'list_tools',\n input: JSON.stringify({ server_label: part.server_label }),\n providerExecuted: true,\n });\n\n if (part.tools) {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'list_tools',\n result: { tools: part.tools },\n });\n }\n break;\n }\n\n case 'function_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n\n if (part.output) {\n content.push({\n type: 'tool-result',\n toolCallId: part.call_id,\n toolName: part.name,\n result: part.output,\n });\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n content,\n finishReason: {\n unified: mapHuggingFaceResponsesFinishReason(\n response.incomplete_details?.reason ?? 'stop',\n ),\n raw: response.incomplete_details?.reason ?? undefined,\n },\n usage: convertHuggingFaceResponsesUsage(response.usage),\n request: { body },\n response: {\n id: response.id,\n timestamp: new Date(response.created_at * 1000),\n modelId: response.model,\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata: {\n huggingface: {\n responseId: response.id,\n },\n },\n warnings,\n };\n }\n\n async doStream(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3StreamResult> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n };\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/responses',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: huggingfaceFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n huggingfaceResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV3FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let responseId: string | null = null;\n let usage: HuggingFaceResponsesUsage | undefined = undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof huggingfaceResponsesChunkSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (!chunk.success) {\n finishReason = {\n unified: 'error',\n raw: undefined,\n };\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isResponseCreatedChunk(value)) {\n responseId = value.response.id;\n controller.enqueue({\n type: 'response-metadata',\n id: value.response.id,\n timestamp: new Date(value.response.created_at * 1000),\n modelId: value.response.model,\n });\n return;\n }\n\n if (isResponseOutputItemAddedChunk(value)) {\n if (\n value.item.type === 'message' &&\n value.item.role === 'assistant'\n ) {\n controller.enqueue({\n type: 'text-start',\n id: value.item.id,\n providerMetadata: {\n huggingface: {\n itemId: value.item.id,\n },\n },\n });\n } else if (value.item.type === 'function_call') {\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.call_id,\n toolName: value.item.name,\n });\n } else if (value.item.type === 'reasoning') {\n controller.enqueue({\n type: 'reasoning-start',\n id: value.item.id,\n providerMetadata: {\n huggingface: {\n itemId: value.item.id,\n },\n },\n });\n }\n return;\n }\n\n if (isResponseOutputItemDoneChunk(value)) {\n if (\n value.item.type === 'message' &&\n value.item.role === 'assistant'\n ) {\n controller.enqueue({\n type: 'text-end',\n id: value.item.id,\n });\n } else if (value.item.type === 'function_call') {\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n input: value.item.arguments,\n });\n\n if (value.item.output) {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n result: value.item.output,\n });\n }\n }\n return;\n }\n\n if (isResponseCompletedChunk(value)) {\n responseId = value.response.id;\n finishReason = {\n unified: mapHuggingFaceResponsesFinishReason(\n value.response.incomplete_details?.reason ?? 'stop',\n ),\n raw: value.response.incomplete_details?.reason ?? undefined,\n };\n if (value.response.usage) {\n usage = value.response.usage;\n }\n return;\n }\n\n if (isReasoningDeltaChunk(value)) {\n controller.enqueue({\n type: 'reasoning-delta',\n id: value.item_id,\n delta: value.delta,\n });\n return;\n }\n\n if (isReasoningEndChunk(value)) {\n controller.enqueue({\n type: 'reasoning-end',\n id: value.item_id,\n });\n return;\n }\n\n if (isTextDeltaChunk(value)) {\n controller.enqueue({\n type: 'text-delta',\n id: value.item_id,\n delta: value.delta,\n });\n return;\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertHuggingFaceResponsesUsage(usage),\n providerMetadata: {\n huggingface: {\n responseId,\n },\n },\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nconst huggingfaceResponsesProviderOptionsSchema = z.object({\n metadata: z.record(z.string(), z.string()).optional(),\n instructions: z.string().optional(),\n strictJsonSchema: z.boolean().optional(),\n reasoningEffort: z.string().optional(),\n});\n\nconst huggingfaceResponsesOutputSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n role: z.string().optional(),\n status: z.string().optional(),\n content: z.array(\n z.object({\n type: z.literal('output_text'),\n text: z.string(),\n annotations: z.array(z.any()).optional(),\n }),\n ),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n status: z.string().optional(),\n content: z.array(\n z.object({\n type: z.literal('reasoning_text'),\n text: z.string(),\n }),\n ),\n summary: z\n .array(\n z\n .object({\n type: z.literal('reasoning_summary'),\n text: z.string(),\n })\n .optional(),\n )\n .optional(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_call'),\n id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_list_tools'),\n id: z.string(),\n server_label: z.string(),\n tools: z.array(z.any()).optional(),\n status: z.string().optional(),\n }),\n]);\n\nconst huggingfaceResponsesResponseSchema = z.object({\n id: z.string(),\n model: z.string(),\n object: z.string(),\n created_at: z.number(),\n status: z.string(),\n error: z.any().nullable(),\n instructions: z.any().nullable(),\n max_output_tokens: z.any().nullable(),\n metadata: z.any().nullable(),\n tool_choice: z.any(),\n tools: z.array(z.any()),\n temperature: z.number(),\n top_p: z.number(),\n incomplete_details: z\n .object({\n reason: z.string(),\n })\n .nullable()\n .optional(),\n usage: z\n .object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({\n cached_tokens: z.number(),\n })\n .optional(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({\n reasoning_tokens: z.number(),\n })\n .optional(),\n total_tokens: z.number(),\n })\n .nullable()\n .optional(),\n output: z.array(huggingfaceResponsesOutputSchema),\n output_text: z.string().nullable().optional(),\n});\n\nconst responseOutputItemAddedSchema = z.object({\n type: z.literal('response.output_item.added'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n role: z.string().optional(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n summary: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('mcp_list_tools'),\n id: z.string(),\n server_label: z.string(),\n tools: z.array(z.any()).optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_call'),\n id: z.string(),\n server_label: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n ]),\n sequence_number: z.number(),\n});\n\nconst responseOutputItemDoneSchema = z.object({\n type: z.literal('response.output_item.done'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n role: z.string().optional(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('mcp_list_tools'),\n id: z.string(),\n server_label: z.string(),\n tools: z.array(z.any()).optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_call'),\n id: z.string(),\n server_label: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n summary: z.array(z.any()).optional(),\n }),\n ]),\n sequence_number: z.number(),\n});\n\nconst textDeltaChunkSchema = z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n sequence_number: z.number(),\n});\n\nconst reasoningTextDeltaChunkSchema = z.object({\n type: z.literal('response.reasoning_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n sequence_number: z.number(),\n});\n\nconst reasoningTextEndChunkSchema = z.object({\n type: z.literal('response.reasoning_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n sequence_number: z.number(),\n});\n\nconst responseCompletedChunkSchema = z.object({\n type: z.literal('response.completed'),\n response: huggingfaceResponsesResponseSchema,\n sequence_number: z.number(),\n});\n\nconst responseCreatedChunkSchema = z.object({\n type: z.literal('response.created'),\n response: z.object({\n id: z.string(),\n object: z.string(),\n created_at: z.number(),\n status: z.string(),\n model: z.string(),\n }),\n});\n\nconst huggingfaceResponsesChunkSchema = z.union([\n responseOutputItemAddedSchema,\n responseOutputItemDoneSchema,\n reasoningTextDeltaChunkSchema,\n reasoningTextEndChunkSchema,\n textDeltaChunkSchema,\n responseCompletedChunkSchema,\n responseCreatedChunkSchema,\n z.object({ type: z.string() }).loose(), // fallback for unknown chunks\n]);\n\nfunction isResponseOutputItemAddedChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemAddedSchema> {\n return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseOutputItemDoneChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemDoneSchema> {\n return chunk.type === 'response.output_item.done';\n}\n\nfunction isTextDeltaChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof textDeltaChunkSchema> {\n return chunk.type === 'response.output_text.delta';\n}\n\nfunction isReasoningDeltaChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof reasoningTextDeltaChunkSchema> {\n return chunk.type === 'response.reasoning_text.delta';\n}\n\nfunction isReasoningEndChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof reasoningTextEndChunkSchema> {\n return chunk.type === 'response.reasoning_text.done';\n}\n\nfunction isResponseCompletedChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCompletedChunkSchema> {\n return chunk.type === 'response.completed';\n}\n\nfunction isResponseCreatedChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCreatedChunkSchema> {\n return chunk.type === 'response.created';\n}\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst huggingfaceErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().optional(),\n code: z.string().optional(),\n }),\n});\n\nexport type HuggingFaceErrorData = z.infer<typeof huggingfaceErrorDataSchema>;\n\nexport const huggingfaceFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: huggingfaceErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport type HuggingFaceResponsesUsage = {\n input_tokens: number;\n input_tokens_details?: {\n cached_tokens?: number;\n };\n output_tokens: number;\n output_tokens_details?: {\n reasoning_tokens?: number;\n };\n total_tokens: number;\n};\n\nexport function convertHuggingFaceResponsesUsage(\n usage: HuggingFaceResponsesUsage | undefined | null,\n): LanguageModelV3Usage {\n if (usage == null) {\n return {\n inputTokens: {\n total: undefined,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: undefined,\n text: undefined,\n reasoning: undefined,\n },\n raw: undefined,\n };\n }\n\n const inputTokens = usage.input_tokens;\n const outputTokens = usage.output_tokens;\n const cachedTokens = usage.input_tokens_details?.cached_tokens ?? 0;\n const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? 0;\n\n return {\n inputTokens: {\n total: inputTokens,\n noCache: inputTokens - cachedTokens,\n cacheRead: cachedTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens - reasoningTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import {\n SharedV3Warning,\n LanguageModelV3Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport async function convertToHuggingFaceResponsesMessages({\n prompt,\n}: {\n prompt: LanguageModelV3Prompt;\n}): Promise<{\n input: string | Array<any>;\n warnings: Array<SharedV3Warning>;\n}> {\n const messages: Array<any> = [];\n const warnings: Array<SharedV3Warning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'input_text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'input_image',\n image_url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${part.data}`,\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part type: ${_exhaustiveCheck}`);\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n messages.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n });\n break;\n }\n case 'tool-call': {\n // tool calls are handled by the responses API\n break;\n }\n\n case 'tool-result': {\n // tool results are handled by the responses API\n break;\n }\n\n case 'reasoning': {\n // include reasoning content in the message text\n messages.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n });\n break;\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n warnings.push({ type: 'unsupported', feature: 'tool messages' });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { input: messages, warnings };\n}\n","import { LanguageModelV3CallOptions, SharedV3Warning } from '@ai-sdk/provider';\n\nexport type HuggingFaceResponsesTool = {\n type: 'function';\n name: string;\n description?: string;\n parameters: unknown;\n};\n\nexport type HuggingFaceResponsesToolChoice =\n | 'auto'\n | 'required'\n | { type: 'function'; function: { name: string } };\n\nexport function prepareResponsesTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): {\n tools?: HuggingFaceResponsesTool[];\n toolChoice?: HuggingFaceResponsesToolChoice;\n toolWarnings: SharedV3Warning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: SharedV3Warning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const huggingfaceTools: HuggingFaceResponsesTool[] = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n huggingfaceTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n });\n break;\n case 'provider':\n toolWarnings.push({\n type: 'unsupported',\n feature: `provider-defined tool ${tool.id}`,\n });\n break;\n default: {\n const _exhaustiveCheck: never = tool;\n throw new Error(`Unsupported tool type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n // prepare tool choice:\n let mappedToolChoice: HuggingFaceResponsesToolChoice | undefined = undefined;\n if (toolChoice) {\n switch (toolChoice.type) {\n case 'auto':\n mappedToolChoice = 'auto';\n break;\n case 'required':\n mappedToolChoice = 'required';\n break;\n case 'none':\n // not supported, ignore\n break;\n case 'tool':\n mappedToolChoice = {\n type: 'function',\n function: { name: toolChoice.toolName },\n };\n break;\n default: {\n const _exhaustiveCheck: never = toolChoice;\n throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n tools: huggingfaceTools,\n toolChoice: mappedToolChoice,\n toolWarnings,\n };\n}\n","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapHuggingFaceResponsesFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'tool_calls':\n return 'tool-calls';\n case 'error':\n return 'error';\n default:\n return 'other';\n }\n}\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_provider","import_provider_utils","import_v4","_a"]}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/huggingface-provider.ts","../src/responses/huggingface-responses-language-model.ts","../src/huggingface-error.ts","../src/responses/convert-huggingface-responses-usage.ts","../src/responses/convert-to-huggingface-responses-messages.ts","../src/responses/huggingface-responses-prepare-tools.ts","../src/responses/map-huggingface-responses-finish-reason.ts"],"sourcesContent":["import {\n LanguageModelV3,\n NoSuchModelError,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { HuggingFaceResponsesLanguageModel } from './responses/huggingface-responses-language-model';\nimport { HuggingFaceResponsesModelId } from './responses/huggingface-responses-settings';\n\nexport interface HuggingFaceProviderSettings {\n /**\nHugging Face API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n\n generateId?: () => string;\n}\n\nexport interface HuggingFaceProvider extends ProviderV3 {\n /**\nCreates a Hugging Face responses model for text generation.\n*/\n (modelId: HuggingFaceResponsesModelId): LanguageModelV3;\n\n /**\nCreates a Hugging Face responses model for text generation.\n*/\n languageModel(modelId: HuggingFaceResponsesModelId): LanguageModelV3;\n\n /**\nCreates a Hugging Face responses model for text generation.\n*/\n responses(modelId: HuggingFaceResponsesModelId): LanguageModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\n/**\nCreate a Hugging Face provider instance.\n */\nexport function createHuggingFace(\n options: HuggingFaceProviderSettings = {},\n): HuggingFaceProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://router.huggingface.co/v1';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'HUGGINGFACE_API_KEY',\n description: 'Hugging Face',\n })}`,\n ...options.headers,\n });\n\n const createResponsesModel = (modelId: HuggingFaceResponsesModelId) => {\n return new HuggingFaceResponsesLanguageModel(modelId, {\n provider: 'huggingface.responses',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId ?? generateId,\n });\n };\n\n const provider = (modelId: HuggingFaceResponsesModelId) =>\n createResponsesModel(modelId);\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createResponsesModel;\n provider.responses = createResponsesModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n message:\n 'Hugging Face Responses API does not support text embeddings. Use the Hugging Face Inference API directly for embeddings.',\n });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'imageModel',\n message:\n 'Hugging Face Responses API does not support image generation. Use the Hugging Face Inference API directly for image models.',\n });\n };\n\n return provider;\n}\n\n/**\nDefault Hugging Face provider instance.\n */\nexport const huggingface = createHuggingFace();\n","import {\n APICallError,\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamPart,\n LanguageModelV3StreamResult,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { HuggingFaceConfig } from '../huggingface-config';\nimport { huggingfaceFailedResponseHandler } from '../huggingface-error';\nimport {\n convertHuggingFaceResponsesUsage,\n HuggingFaceResponsesUsage,\n} from './convert-huggingface-responses-usage';\nimport { convertToHuggingFaceResponsesMessages } from './convert-to-huggingface-responses-messages';\nimport { prepareResponsesTools } from './huggingface-responses-prepare-tools';\nimport { HuggingFaceResponsesModelId } from './huggingface-responses-settings';\nimport { mapHuggingFaceResponsesFinishReason } from './map-huggingface-responses-finish-reason';\n\nexport class HuggingFaceResponsesLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly modelId: HuggingFaceResponsesModelId;\n\n private readonly config: HuggingFaceConfig;\n\n constructor(modelId: HuggingFaceResponsesModelId, config: HuggingFaceConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n maxOutputTokens,\n temperature,\n stopSequences,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n prompt,\n providerOptions,\n tools,\n toolChoice,\n responseFormat,\n }: LanguageModelV3CallOptions) {\n const warnings: SharedV3Warning[] = [];\n\n if (topK != null) {\n warnings.push({ type: 'unsupported', feature: 'topK' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n if (presencePenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported', feature: 'stopSequences' });\n }\n\n const { input, warnings: messageWarnings } =\n await convertToHuggingFaceResponsesMessages({\n prompt,\n });\n\n warnings.push(...messageWarnings);\n\n const huggingfaceOptions = await parseProviderOptions({\n provider: 'huggingface',\n providerOptions,\n schema: huggingfaceResponsesProviderOptionsSchema,\n });\n\n const {\n tools: preparedTools,\n toolChoice: preparedToolChoice,\n toolWarnings,\n } = prepareResponsesTools({\n tools,\n toolChoice,\n });\n\n warnings.push(...toolWarnings);\n\n const baseArgs = {\n model: this.modelId,\n input,\n temperature,\n top_p: topP,\n max_output_tokens: maxOutputTokens,\n\n // HuggingFace Responses API uses text.format for structured output\n ...(responseFormat?.type === 'json' &&\n responseFormat.schema && {\n text: {\n format: {\n type: 'json_schema',\n strict: huggingfaceOptions?.strictJsonSchema ?? false,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n },\n },\n }),\n\n metadata: huggingfaceOptions?.metadata,\n instructions: huggingfaceOptions?.instructions,\n\n ...(preparedTools && { tools: preparedTools }),\n ...(preparedToolChoice && { tool_choice: preparedToolChoice }),\n ...(huggingfaceOptions?.reasoningEffort != null && {\n reasoning: {\n ...(huggingfaceOptions?.reasoningEffort != null && {\n effort: huggingfaceOptions.reasoningEffort,\n }),\n },\n }),\n };\n\n return { args: baseArgs, warnings };\n }\n\n async doGenerate(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3GenerateResult> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: false,\n };\n\n const url = this.config.url({\n path: '/responses',\n modelId: this.modelId,\n });\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: huggingfaceFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n huggingfaceResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.error) {\n throw new APICallError({\n message: response.error.message,\n url,\n requestBodyValues: body,\n statusCode: 400,\n responseHeaders,\n responseBody: rawResponse as string,\n isRetryable: false,\n });\n }\n\n const content: Array<LanguageModelV3Content> = [];\n\n // Process output array\n for (const part of response.output) {\n switch (part.type) {\n case 'message': {\n for (const contentPart of part.content) {\n content.push({\n type: 'text',\n text: contentPart.text,\n providerMetadata: {\n huggingface: {\n itemId: part.id,\n },\n },\n });\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n }\n }\n break;\n }\n\n case 'reasoning': {\n for (const contentPart of part.content) {\n content.push({\n type: 'reasoning',\n text: contentPart.text,\n providerMetadata: {\n huggingface: {\n itemId: part.id,\n },\n },\n });\n }\n break;\n }\n\n case 'mcp_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: part.name,\n input: part.arguments,\n providerExecuted: true,\n });\n\n if (part.output) {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: part.name,\n result: part.output,\n });\n }\n break;\n }\n\n case 'mcp_list_tools': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'list_tools',\n input: JSON.stringify({ server_label: part.server_label }),\n providerExecuted: true,\n });\n\n if (part.tools) {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'list_tools',\n result: { tools: part.tools },\n });\n }\n break;\n }\n\n case 'function_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n\n if (part.output) {\n content.push({\n type: 'tool-result',\n toolCallId: part.call_id,\n toolName: part.name,\n result: part.output,\n });\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n content,\n finishReason: {\n unified: mapHuggingFaceResponsesFinishReason(\n response.incomplete_details?.reason ?? 'stop',\n ),\n raw: response.incomplete_details?.reason ?? undefined,\n },\n usage: convertHuggingFaceResponsesUsage(response.usage),\n request: { body },\n response: {\n id: response.id,\n timestamp: new Date(response.created_at * 1000),\n modelId: response.model,\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata: {\n huggingface: {\n responseId: response.id,\n },\n },\n warnings,\n };\n }\n\n async doStream(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3StreamResult> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n };\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/responses',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: huggingfaceFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n huggingfaceResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV3FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let responseId: string | null = null;\n let usage: HuggingFaceResponsesUsage | undefined = undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof huggingfaceResponsesChunkSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (!chunk.success) {\n finishReason = {\n unified: 'error',\n raw: undefined,\n };\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isResponseCreatedChunk(value)) {\n responseId = value.response.id;\n controller.enqueue({\n type: 'response-metadata',\n id: value.response.id,\n timestamp: new Date(value.response.created_at * 1000),\n modelId: value.response.model,\n });\n return;\n }\n\n if (isResponseOutputItemAddedChunk(value)) {\n if (\n value.item.type === 'message' &&\n value.item.role === 'assistant'\n ) {\n controller.enqueue({\n type: 'text-start',\n id: value.item.id,\n providerMetadata: {\n huggingface: {\n itemId: value.item.id,\n },\n },\n });\n } else if (value.item.type === 'function_call') {\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.call_id,\n toolName: value.item.name,\n });\n } else if (value.item.type === 'reasoning') {\n controller.enqueue({\n type: 'reasoning-start',\n id: value.item.id,\n providerMetadata: {\n huggingface: {\n itemId: value.item.id,\n },\n },\n });\n }\n return;\n }\n\n if (isResponseOutputItemDoneChunk(value)) {\n if (\n value.item.type === 'message' &&\n value.item.role === 'assistant'\n ) {\n controller.enqueue({\n type: 'text-end',\n id: value.item.id,\n });\n } else if (value.item.type === 'function_call') {\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n input: value.item.arguments,\n });\n\n if (value.item.output) {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n result: value.item.output,\n });\n }\n }\n return;\n }\n\n if (isResponseCompletedChunk(value)) {\n responseId = value.response.id;\n finishReason = {\n unified: mapHuggingFaceResponsesFinishReason(\n value.response.incomplete_details?.reason ?? 'stop',\n ),\n raw: value.response.incomplete_details?.reason ?? undefined,\n };\n if (value.response.usage) {\n usage = value.response.usage;\n }\n return;\n }\n\n if (isReasoningDeltaChunk(value)) {\n controller.enqueue({\n type: 'reasoning-delta',\n id: value.item_id,\n delta: value.delta,\n });\n return;\n }\n\n if (isReasoningEndChunk(value)) {\n controller.enqueue({\n type: 'reasoning-end',\n id: value.item_id,\n });\n return;\n }\n\n if (isTextDeltaChunk(value)) {\n controller.enqueue({\n type: 'text-delta',\n id: value.item_id,\n delta: value.delta,\n });\n return;\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertHuggingFaceResponsesUsage(usage),\n providerMetadata: {\n huggingface: {\n responseId,\n },\n },\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nconst huggingfaceResponsesProviderOptionsSchema = z.object({\n metadata: z.record(z.string(), z.string()).optional(),\n instructions: z.string().optional(),\n strictJsonSchema: z.boolean().optional(),\n reasoningEffort: z.string().optional(),\n});\n\nconst huggingfaceResponsesOutputSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n role: z.string().optional(),\n status: z.string().optional(),\n content: z.array(\n z.object({\n type: z.literal('output_text'),\n text: z.string(),\n annotations: z.array(z.any()).optional(),\n }),\n ),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n status: z.string().optional(),\n content: z.array(\n z.object({\n type: z.literal('reasoning_text'),\n text: z.string(),\n }),\n ),\n summary: z\n .array(\n z\n .object({\n type: z.literal('reasoning_summary'),\n text: z.string(),\n })\n .optional(),\n )\n .optional(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_call'),\n id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_list_tools'),\n id: z.string(),\n server_label: z.string(),\n tools: z.array(z.any()).optional(),\n status: z.string().optional(),\n }),\n]);\n\nconst huggingfaceResponsesResponseSchema = z.object({\n id: z.string(),\n model: z.string(),\n object: z.string(),\n created_at: z.number(),\n status: z.string(),\n error: z.any().nullable(),\n instructions: z.any().nullable(),\n max_output_tokens: z.any().nullable(),\n metadata: z.any().nullable(),\n tool_choice: z.any(),\n tools: z.array(z.any()),\n temperature: z.number(),\n top_p: z.number(),\n incomplete_details: z\n .object({\n reason: z.string(),\n })\n .nullable()\n .optional(),\n usage: z\n .object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({\n cached_tokens: z.number(),\n })\n .optional(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({\n reasoning_tokens: z.number(),\n })\n .optional(),\n total_tokens: z.number(),\n })\n .nullable()\n .optional(),\n output: z.array(huggingfaceResponsesOutputSchema),\n output_text: z.string().nullable().optional(),\n});\n\nconst responseOutputItemAddedSchema = z.object({\n type: z.literal('response.output_item.added'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n role: z.string().optional(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n summary: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('mcp_list_tools'),\n id: z.string(),\n server_label: z.string(),\n tools: z.array(z.any()).optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_call'),\n id: z.string(),\n server_label: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n ]),\n sequence_number: z.number(),\n});\n\nconst responseOutputItemDoneSchema = z.object({\n type: z.literal('response.output_item.done'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n role: z.string().optional(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('mcp_list_tools'),\n id: z.string(),\n server_label: z.string(),\n tools: z.array(z.any()).optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_call'),\n id: z.string(),\n server_label: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n summary: z.array(z.any()).optional(),\n }),\n ]),\n sequence_number: z.number(),\n});\n\nconst textDeltaChunkSchema = z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n sequence_number: z.number(),\n});\n\nconst reasoningTextDeltaChunkSchema = z.object({\n type: z.literal('response.reasoning_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n sequence_number: z.number(),\n});\n\nconst reasoningTextEndChunkSchema = z.object({\n type: z.literal('response.reasoning_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n sequence_number: z.number(),\n});\n\nconst responseCompletedChunkSchema = z.object({\n type: z.literal('response.completed'),\n response: huggingfaceResponsesResponseSchema,\n sequence_number: z.number(),\n});\n\nconst responseCreatedChunkSchema = z.object({\n type: z.literal('response.created'),\n response: z.object({\n id: z.string(),\n object: z.string(),\n created_at: z.number(),\n status: z.string(),\n model: z.string(),\n }),\n});\n\nconst huggingfaceResponsesChunkSchema = z.union([\n responseOutputItemAddedSchema,\n responseOutputItemDoneSchema,\n reasoningTextDeltaChunkSchema,\n reasoningTextEndChunkSchema,\n textDeltaChunkSchema,\n responseCompletedChunkSchema,\n responseCreatedChunkSchema,\n z.object({ type: z.string() }).loose(), // fallback for unknown chunks\n]);\n\nfunction isResponseOutputItemAddedChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemAddedSchema> {\n return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseOutputItemDoneChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemDoneSchema> {\n return chunk.type === 'response.output_item.done';\n}\n\nfunction isTextDeltaChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof textDeltaChunkSchema> {\n return chunk.type === 'response.output_text.delta';\n}\n\nfunction isReasoningDeltaChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof reasoningTextDeltaChunkSchema> {\n return chunk.type === 'response.reasoning_text.delta';\n}\n\nfunction isReasoningEndChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof reasoningTextEndChunkSchema> {\n return chunk.type === 'response.reasoning_text.done';\n}\n\nfunction isResponseCompletedChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCompletedChunkSchema> {\n return chunk.type === 'response.completed';\n}\n\nfunction isResponseCreatedChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCreatedChunkSchema> {\n return chunk.type === 'response.created';\n}\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst huggingfaceErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().optional(),\n code: z.string().optional(),\n }),\n});\n\nexport type HuggingFaceErrorData = z.infer<typeof huggingfaceErrorDataSchema>;\n\nexport const huggingfaceFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: huggingfaceErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport type HuggingFaceResponsesUsage = {\n input_tokens: number;\n input_tokens_details?: {\n cached_tokens?: number;\n };\n output_tokens: number;\n output_tokens_details?: {\n reasoning_tokens?: number;\n };\n total_tokens: number;\n};\n\nexport function convertHuggingFaceResponsesUsage(\n usage: HuggingFaceResponsesUsage | undefined | null,\n): LanguageModelV3Usage {\n if (usage == null) {\n return {\n inputTokens: {\n total: undefined,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: undefined,\n text: undefined,\n reasoning: undefined,\n },\n raw: undefined,\n };\n }\n\n const inputTokens = usage.input_tokens;\n const outputTokens = usage.output_tokens;\n const cachedTokens = usage.input_tokens_details?.cached_tokens ?? 0;\n const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? 0;\n\n return {\n inputTokens: {\n total: inputTokens,\n noCache: inputTokens - cachedTokens,\n cacheRead: cachedTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens - reasoningTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import {\n SharedV3Warning,\n LanguageModelV3Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport async function convertToHuggingFaceResponsesMessages({\n prompt,\n}: {\n prompt: LanguageModelV3Prompt;\n}): Promise<{\n input: string | Array<any>;\n warnings: Array<SharedV3Warning>;\n}> {\n const messages: Array<any> = [];\n const warnings: Array<SharedV3Warning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'input_text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'input_image',\n image_url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${part.data}`,\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part type: ${_exhaustiveCheck}`);\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n messages.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n });\n break;\n }\n case 'tool-call': {\n // tool calls are handled by the responses API\n break;\n }\n\n case 'tool-result': {\n // tool results are handled by the responses API\n break;\n }\n\n case 'reasoning': {\n // include reasoning content in the message text\n messages.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n });\n break;\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n warnings.push({ type: 'unsupported', feature: 'tool messages' });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { input: messages, warnings };\n}\n","import { LanguageModelV3CallOptions, SharedV3Warning } from '@ai-sdk/provider';\n\nexport type HuggingFaceResponsesTool = {\n type: 'function';\n name: string;\n description?: string;\n parameters: unknown;\n};\n\nexport type HuggingFaceResponsesToolChoice =\n | 'auto'\n | 'required'\n | { type: 'function'; function: { name: string } };\n\nexport function prepareResponsesTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): {\n tools?: HuggingFaceResponsesTool[];\n toolChoice?: HuggingFaceResponsesToolChoice;\n toolWarnings: SharedV3Warning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: SharedV3Warning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const huggingfaceTools: HuggingFaceResponsesTool[] = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n huggingfaceTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n });\n break;\n case 'provider':\n toolWarnings.push({\n type: 'unsupported',\n feature: `provider-defined tool ${tool.id}`,\n });\n break;\n default: {\n const _exhaustiveCheck: never = tool;\n throw new Error(`Unsupported tool type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n // prepare tool choice:\n let mappedToolChoice: HuggingFaceResponsesToolChoice | undefined = undefined;\n if (toolChoice) {\n switch (toolChoice.type) {\n case 'auto':\n mappedToolChoice = 'auto';\n break;\n case 'required':\n mappedToolChoice = 'required';\n break;\n case 'none':\n // not supported, ignore\n break;\n case 'tool':\n mappedToolChoice = {\n type: 'function',\n function: { name: toolChoice.toolName },\n };\n break;\n default: {\n const _exhaustiveCheck: never = toolChoice;\n throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n tools: huggingfaceTools,\n toolChoice: mappedToolChoice,\n toolWarnings,\n };\n}\n","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapHuggingFaceResponsesFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'tool_calls':\n return 'tool-calls';\n case 'error':\n return 'error';\n default:\n return 'other';\n }\n}\n"],"mappings":"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","names":["generateId","z","z","_a","generateId"]}
|
|
1
|
+
{"version":3,"sources":["../src/huggingface-provider.ts","../src/responses/huggingface-responses-language-model.ts","../src/huggingface-error.ts","../src/responses/convert-huggingface-responses-usage.ts","../src/responses/convert-to-huggingface-responses-messages.ts","../src/responses/huggingface-responses-prepare-tools.ts","../src/responses/map-huggingface-responses-finish-reason.ts"],"sourcesContent":["import {\n LanguageModelV3,\n NoSuchModelError,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { HuggingFaceResponsesLanguageModel } from './responses/huggingface-responses-language-model';\nimport { HuggingFaceResponsesModelId } from './responses/huggingface-responses-settings';\n\nexport interface HuggingFaceProviderSettings {\n /**\n * Hugging Face API key.\n */\n apiKey?: string;\n /**\n * Base URL for the API calls.\n */\n baseURL?: string;\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n generateId?: () => string;\n}\n\nexport interface HuggingFaceProvider extends ProviderV3 {\n /**\n * Creates a Hugging Face responses model for text generation.\n */\n (modelId: HuggingFaceResponsesModelId): LanguageModelV3;\n\n /**\n * Creates a Hugging Face responses model for text generation.\n */\n languageModel(modelId: HuggingFaceResponsesModelId): LanguageModelV3;\n\n /**\n * Creates a Hugging Face responses model for text generation.\n */\n responses(modelId: HuggingFaceResponsesModelId): LanguageModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\n/**\n * Create a Hugging Face provider instance.\n */\nexport function createHuggingFace(\n options: HuggingFaceProviderSettings = {},\n): HuggingFaceProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://router.huggingface.co/v1';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'HUGGINGFACE_API_KEY',\n description: 'Hugging Face',\n })}`,\n ...options.headers,\n });\n\n const createResponsesModel = (modelId: HuggingFaceResponsesModelId) => {\n return new HuggingFaceResponsesLanguageModel(modelId, {\n provider: 'huggingface.responses',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId ?? generateId,\n });\n };\n\n const provider = (modelId: HuggingFaceResponsesModelId) =>\n createResponsesModel(modelId);\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createResponsesModel;\n provider.responses = createResponsesModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n message:\n 'Hugging Face Responses API does not support text embeddings. Use the Hugging Face Inference API directly for embeddings.',\n });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'imageModel',\n message:\n 'Hugging Face Responses API does not support image generation. Use the Hugging Face Inference API directly for image models.',\n });\n };\n\n return provider;\n}\n\n/**\n * Default Hugging Face provider instance.\n */\nexport const huggingface = createHuggingFace();\n","import {\n APICallError,\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamPart,\n LanguageModelV3StreamResult,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { HuggingFaceConfig } from '../huggingface-config';\nimport { huggingfaceFailedResponseHandler } from '../huggingface-error';\nimport {\n convertHuggingFaceResponsesUsage,\n HuggingFaceResponsesUsage,\n} from './convert-huggingface-responses-usage';\nimport { convertToHuggingFaceResponsesMessages } from './convert-to-huggingface-responses-messages';\nimport { prepareResponsesTools } from './huggingface-responses-prepare-tools';\nimport { HuggingFaceResponsesModelId } from './huggingface-responses-settings';\nimport { mapHuggingFaceResponsesFinishReason } from './map-huggingface-responses-finish-reason';\n\nexport class HuggingFaceResponsesLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly modelId: HuggingFaceResponsesModelId;\n\n private readonly config: HuggingFaceConfig;\n\n constructor(modelId: HuggingFaceResponsesModelId, config: HuggingFaceConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n maxOutputTokens,\n temperature,\n stopSequences,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n prompt,\n providerOptions,\n tools,\n toolChoice,\n responseFormat,\n }: LanguageModelV3CallOptions) {\n const warnings: SharedV3Warning[] = [];\n\n if (topK != null) {\n warnings.push({ type: 'unsupported', feature: 'topK' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n if (presencePenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported', feature: 'stopSequences' });\n }\n\n const { input, warnings: messageWarnings } =\n await convertToHuggingFaceResponsesMessages({\n prompt,\n });\n\n warnings.push(...messageWarnings);\n\n const huggingfaceOptions = await parseProviderOptions({\n provider: 'huggingface',\n providerOptions,\n schema: huggingfaceResponsesProviderOptionsSchema,\n });\n\n const {\n tools: preparedTools,\n toolChoice: preparedToolChoice,\n toolWarnings,\n } = prepareResponsesTools({\n tools,\n toolChoice,\n });\n\n warnings.push(...toolWarnings);\n\n const baseArgs = {\n model: this.modelId,\n input,\n temperature,\n top_p: topP,\n max_output_tokens: maxOutputTokens,\n\n // HuggingFace Responses API uses text.format for structured output\n ...(responseFormat?.type === 'json' &&\n responseFormat.schema && {\n text: {\n format: {\n type: 'json_schema',\n strict: huggingfaceOptions?.strictJsonSchema ?? false,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n },\n },\n }),\n\n metadata: huggingfaceOptions?.metadata,\n instructions: huggingfaceOptions?.instructions,\n\n ...(preparedTools && { tools: preparedTools }),\n ...(preparedToolChoice && { tool_choice: preparedToolChoice }),\n ...(huggingfaceOptions?.reasoningEffort != null && {\n reasoning: {\n ...(huggingfaceOptions?.reasoningEffort != null && {\n effort: huggingfaceOptions.reasoningEffort,\n }),\n },\n }),\n };\n\n return { args: baseArgs, warnings };\n }\n\n async doGenerate(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3GenerateResult> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: false,\n };\n\n const url = this.config.url({\n path: '/responses',\n modelId: this.modelId,\n });\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: huggingfaceFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n huggingfaceResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.error) {\n throw new APICallError({\n message: response.error.message,\n url,\n requestBodyValues: body,\n statusCode: 400,\n responseHeaders,\n responseBody: rawResponse as string,\n isRetryable: false,\n });\n }\n\n const content: Array<LanguageModelV3Content> = [];\n\n // Process output array\n for (const part of response.output) {\n switch (part.type) {\n case 'message': {\n for (const contentPart of part.content) {\n content.push({\n type: 'text',\n text: contentPart.text,\n providerMetadata: {\n huggingface: {\n itemId: part.id,\n },\n },\n });\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n }\n }\n break;\n }\n\n case 'reasoning': {\n for (const contentPart of part.content) {\n content.push({\n type: 'reasoning',\n text: contentPart.text,\n providerMetadata: {\n huggingface: {\n itemId: part.id,\n },\n },\n });\n }\n break;\n }\n\n case 'mcp_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: part.name,\n input: part.arguments,\n providerExecuted: true,\n });\n\n if (part.output) {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: part.name,\n result: part.output,\n });\n }\n break;\n }\n\n case 'mcp_list_tools': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'list_tools',\n input: JSON.stringify({ server_label: part.server_label }),\n providerExecuted: true,\n });\n\n if (part.tools) {\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'list_tools',\n result: { tools: part.tools },\n });\n }\n break;\n }\n\n case 'function_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n\n if (part.output) {\n content.push({\n type: 'tool-result',\n toolCallId: part.call_id,\n toolName: part.name,\n result: part.output,\n });\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n content,\n finishReason: {\n unified: mapHuggingFaceResponsesFinishReason(\n response.incomplete_details?.reason ?? 'stop',\n ),\n raw: response.incomplete_details?.reason ?? undefined,\n },\n usage: convertHuggingFaceResponsesUsage(response.usage),\n request: { body },\n response: {\n id: response.id,\n timestamp: new Date(response.created_at * 1000),\n modelId: response.model,\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata: {\n huggingface: {\n responseId: response.id,\n },\n },\n warnings,\n };\n }\n\n async doStream(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3StreamResult> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n };\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/responses',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: huggingfaceFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n huggingfaceResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV3FinishReason = {\n unified: 'other',\n raw: undefined,\n };\n let responseId: string | null = null;\n let usage: HuggingFaceResponsesUsage | undefined = undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof huggingfaceResponsesChunkSchema>>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (!chunk.success) {\n finishReason = {\n unified: 'error',\n raw: undefined,\n };\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isResponseCreatedChunk(value)) {\n responseId = value.response.id;\n controller.enqueue({\n type: 'response-metadata',\n id: value.response.id,\n timestamp: new Date(value.response.created_at * 1000),\n modelId: value.response.model,\n });\n return;\n }\n\n if (isResponseOutputItemAddedChunk(value)) {\n if (\n value.item.type === 'message' &&\n value.item.role === 'assistant'\n ) {\n controller.enqueue({\n type: 'text-start',\n id: value.item.id,\n providerMetadata: {\n huggingface: {\n itemId: value.item.id,\n },\n },\n });\n } else if (value.item.type === 'function_call') {\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.call_id,\n toolName: value.item.name,\n });\n } else if (value.item.type === 'reasoning') {\n controller.enqueue({\n type: 'reasoning-start',\n id: value.item.id,\n providerMetadata: {\n huggingface: {\n itemId: value.item.id,\n },\n },\n });\n }\n return;\n }\n\n if (isResponseOutputItemDoneChunk(value)) {\n if (\n value.item.type === 'message' &&\n value.item.role === 'assistant'\n ) {\n controller.enqueue({\n type: 'text-end',\n id: value.item.id,\n });\n } else if (value.item.type === 'function_call') {\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n input: value.item.arguments,\n });\n\n if (value.item.output) {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n result: value.item.output,\n });\n }\n }\n return;\n }\n\n if (isResponseCompletedChunk(value)) {\n responseId = value.response.id;\n finishReason = {\n unified: mapHuggingFaceResponsesFinishReason(\n value.response.incomplete_details?.reason ?? 'stop',\n ),\n raw: value.response.incomplete_details?.reason ?? undefined,\n };\n if (value.response.usage) {\n usage = value.response.usage;\n }\n return;\n }\n\n if (isReasoningDeltaChunk(value)) {\n controller.enqueue({\n type: 'reasoning-delta',\n id: value.item_id,\n delta: value.delta,\n });\n return;\n }\n\n if (isReasoningEndChunk(value)) {\n controller.enqueue({\n type: 'reasoning-end',\n id: value.item_id,\n });\n return;\n }\n\n if (isTextDeltaChunk(value)) {\n controller.enqueue({\n type: 'text-delta',\n id: value.item_id,\n delta: value.delta,\n });\n return;\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: convertHuggingFaceResponsesUsage(usage),\n providerMetadata: {\n huggingface: {\n responseId,\n },\n },\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nconst huggingfaceResponsesProviderOptionsSchema = z.object({\n metadata: z.record(z.string(), z.string()).optional(),\n instructions: z.string().optional(),\n strictJsonSchema: z.boolean().optional(),\n reasoningEffort: z.string().optional(),\n});\n\nconst huggingfaceResponsesOutputSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n role: z.string().optional(),\n status: z.string().optional(),\n content: z.array(\n z.object({\n type: z.literal('output_text'),\n text: z.string(),\n annotations: z.array(z.any()).optional(),\n }),\n ),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n status: z.string().optional(),\n content: z.array(\n z.object({\n type: z.literal('reasoning_text'),\n text: z.string(),\n }),\n ),\n summary: z\n .array(\n z\n .object({\n type: z.literal('reasoning_summary'),\n text: z.string(),\n })\n .optional(),\n )\n .optional(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_call'),\n id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_list_tools'),\n id: z.string(),\n server_label: z.string(),\n tools: z.array(z.any()).optional(),\n status: z.string().optional(),\n }),\n]);\n\nconst huggingfaceResponsesResponseSchema = z.object({\n id: z.string(),\n model: z.string(),\n object: z.string(),\n created_at: z.number(),\n status: z.string(),\n error: z.any().nullable(),\n instructions: z.any().nullable(),\n max_output_tokens: z.any().nullable(),\n metadata: z.any().nullable(),\n tool_choice: z.any(),\n tools: z.array(z.any()),\n temperature: z.number(),\n top_p: z.number(),\n incomplete_details: z\n .object({\n reason: z.string(),\n })\n .nullable()\n .optional(),\n usage: z\n .object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({\n cached_tokens: z.number(),\n })\n .optional(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({\n reasoning_tokens: z.number(),\n })\n .optional(),\n total_tokens: z.number(),\n })\n .nullable()\n .optional(),\n output: z.array(huggingfaceResponsesOutputSchema),\n output_text: z.string().nullable().optional(),\n});\n\nconst responseOutputItemAddedSchema = z.object({\n type: z.literal('response.output_item.added'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n role: z.string().optional(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n summary: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('mcp_list_tools'),\n id: z.string(),\n server_label: z.string(),\n tools: z.array(z.any()).optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_call'),\n id: z.string(),\n server_label: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n ]),\n sequence_number: z.number(),\n});\n\nconst responseOutputItemDoneSchema = z.object({\n type: z.literal('response.output_item.done'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n role: z.string().optional(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('mcp_list_tools'),\n id: z.string(),\n server_label: z.string(),\n tools: z.array(z.any()).optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('mcp_call'),\n id: z.string(),\n server_label: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n status: z.string().optional(),\n content: z.array(z.any()).optional(),\n summary: z.array(z.any()).optional(),\n }),\n ]),\n sequence_number: z.number(),\n});\n\nconst textDeltaChunkSchema = z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n sequence_number: z.number(),\n});\n\nconst reasoningTextDeltaChunkSchema = z.object({\n type: z.literal('response.reasoning_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n sequence_number: z.number(),\n});\n\nconst reasoningTextEndChunkSchema = z.object({\n type: z.literal('response.reasoning_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n sequence_number: z.number(),\n});\n\nconst responseCompletedChunkSchema = z.object({\n type: z.literal('response.completed'),\n response: huggingfaceResponsesResponseSchema,\n sequence_number: z.number(),\n});\n\nconst responseCreatedChunkSchema = z.object({\n type: z.literal('response.created'),\n response: z.object({\n id: z.string(),\n object: z.string(),\n created_at: z.number(),\n status: z.string(),\n model: z.string(),\n }),\n});\n\nconst huggingfaceResponsesChunkSchema = z.union([\n responseOutputItemAddedSchema,\n responseOutputItemDoneSchema,\n reasoningTextDeltaChunkSchema,\n reasoningTextEndChunkSchema,\n textDeltaChunkSchema,\n responseCompletedChunkSchema,\n responseCreatedChunkSchema,\n z.object({ type: z.string() }).loose(), // fallback for unknown chunks\n]);\n\nfunction isResponseOutputItemAddedChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemAddedSchema> {\n return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseOutputItemDoneChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemDoneSchema> {\n return chunk.type === 'response.output_item.done';\n}\n\nfunction isTextDeltaChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof textDeltaChunkSchema> {\n return chunk.type === 'response.output_text.delta';\n}\n\nfunction isReasoningDeltaChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof reasoningTextDeltaChunkSchema> {\n return chunk.type === 'response.reasoning_text.delta';\n}\n\nfunction isReasoningEndChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof reasoningTextEndChunkSchema> {\n return chunk.type === 'response.reasoning_text.done';\n}\n\nfunction isResponseCompletedChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCompletedChunkSchema> {\n return chunk.type === 'response.completed';\n}\n\nfunction isResponseCreatedChunk(\n chunk: z.infer<typeof huggingfaceResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCreatedChunkSchema> {\n return chunk.type === 'response.created';\n}\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst huggingfaceErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().optional(),\n code: z.string().optional(),\n }),\n});\n\nexport type HuggingFaceErrorData = z.infer<typeof huggingfaceErrorDataSchema>;\n\nexport const huggingfaceFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: huggingfaceErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport type HuggingFaceResponsesUsage = {\n input_tokens: number;\n input_tokens_details?: {\n cached_tokens?: number;\n };\n output_tokens: number;\n output_tokens_details?: {\n reasoning_tokens?: number;\n };\n total_tokens: number;\n};\n\nexport function convertHuggingFaceResponsesUsage(\n usage: HuggingFaceResponsesUsage | undefined | null,\n): LanguageModelV3Usage {\n if (usage == null) {\n return {\n inputTokens: {\n total: undefined,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: undefined,\n text: undefined,\n reasoning: undefined,\n },\n raw: undefined,\n };\n }\n\n const inputTokens = usage.input_tokens;\n const outputTokens = usage.output_tokens;\n const cachedTokens = usage.input_tokens_details?.cached_tokens ?? 0;\n const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? 0;\n\n return {\n inputTokens: {\n total: inputTokens,\n noCache: inputTokens - cachedTokens,\n cacheRead: cachedTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens - reasoningTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n };\n}\n","import {\n SharedV3Warning,\n LanguageModelV3Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport async function convertToHuggingFaceResponsesMessages({\n prompt,\n}: {\n prompt: LanguageModelV3Prompt;\n}): Promise<{\n input: string | Array<any>;\n warnings: Array<SharedV3Warning>;\n}> {\n const messages: Array<any> = [];\n const warnings: Array<SharedV3Warning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'input_text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'input_image',\n image_url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${part.data}`,\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part type: ${_exhaustiveCheck}`);\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n messages.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n });\n break;\n }\n case 'tool-call': {\n // tool calls are handled by the responses API\n break;\n }\n\n case 'tool-result': {\n // tool results are handled by the responses API\n break;\n }\n\n case 'reasoning': {\n // include reasoning content in the message text\n messages.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n });\n break;\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n warnings.push({ type: 'unsupported', feature: 'tool messages' });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { input: messages, warnings };\n}\n","import { LanguageModelV3CallOptions, SharedV3Warning } from '@ai-sdk/provider';\n\nexport type HuggingFaceResponsesTool = {\n type: 'function';\n name: string;\n description?: string;\n parameters: unknown;\n};\n\nexport type HuggingFaceResponsesToolChoice =\n | 'auto'\n | 'required'\n | { type: 'function'; function: { name: string } };\n\nexport function prepareResponsesTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): {\n tools?: HuggingFaceResponsesTool[];\n toolChoice?: HuggingFaceResponsesToolChoice;\n toolWarnings: SharedV3Warning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: SharedV3Warning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const huggingfaceTools: HuggingFaceResponsesTool[] = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n huggingfaceTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n });\n break;\n case 'provider':\n toolWarnings.push({\n type: 'unsupported',\n feature: `provider-defined tool ${tool.id}`,\n });\n break;\n default: {\n const _exhaustiveCheck: never = tool;\n throw new Error(`Unsupported tool type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n // prepare tool choice:\n let mappedToolChoice: HuggingFaceResponsesToolChoice | undefined = undefined;\n if (toolChoice) {\n switch (toolChoice.type) {\n case 'auto':\n mappedToolChoice = 'auto';\n break;\n case 'required':\n mappedToolChoice = 'required';\n break;\n case 'none':\n // not supported, ignore\n break;\n case 'tool':\n mappedToolChoice = {\n type: 'function',\n function: { name: toolChoice.toolName },\n };\n break;\n default: {\n const _exhaustiveCheck: never = toolChoice;\n throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n tools: huggingfaceTools,\n toolChoice: mappedToolChoice,\n toolWarnings,\n };\n}\n","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapHuggingFaceResponsesFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV3FinishReason['unified'] {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'tool_calls':\n return 'tool-calls';\n case 'error':\n return 'error';\n default:\n return 'other';\n }\n}\n"],"mappings":"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","names":["generateId","z","z","_a","generateId"]}
|
package/docs/170-huggingface.mdx
CHANGED
|
@@ -95,25 +95,148 @@ Hugging Face language models can be used in the `streamText` function
|
|
|
95
95
|
|
|
96
96
|
You can explore the latest and trending models with their capabilities, context size, throughput and pricing on the [Hugging Face Inference Models](https://huggingface.co/inference/models) page.
|
|
97
97
|
|
|
98
|
+
### Provider Options
|
|
99
|
+
|
|
100
|
+
Hugging Face language models support provider-specific options that you can pass via `providerOptions.huggingface`:
|
|
101
|
+
|
|
102
|
+
```ts
|
|
103
|
+
import { huggingface } from '@ai-sdk/huggingface';
|
|
104
|
+
import { generateText } from 'ai';
|
|
105
|
+
|
|
106
|
+
const { text } = await generateText({
|
|
107
|
+
model: huggingface('deepseek-ai/DeepSeek-R1'),
|
|
108
|
+
prompt: 'Explain the theory of relativity.',
|
|
109
|
+
providerOptions: {
|
|
110
|
+
huggingface: {
|
|
111
|
+
reasoningEffort: 'high',
|
|
112
|
+
instructions: 'Respond in a clear and educational manner.',
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The following provider options are available:
|
|
119
|
+
|
|
120
|
+
- **metadata** _Record<string, string>_
|
|
121
|
+
|
|
122
|
+
Additional metadata to include with the request.
|
|
123
|
+
|
|
124
|
+
- **instructions** _string_
|
|
125
|
+
|
|
126
|
+
Instructions for the model. Can be used to provide additional context or guidance.
|
|
127
|
+
|
|
128
|
+
- **strictJsonSchema** _boolean_
|
|
129
|
+
|
|
130
|
+
Whether to use strict JSON schema validation for structured outputs. Defaults to `false`.
|
|
131
|
+
|
|
132
|
+
- **reasoningEffort** _string_
|
|
133
|
+
|
|
134
|
+
Controls the reasoning effort for reasoning models like DeepSeek-R1. Higher values result in more thorough reasoning.
|
|
135
|
+
|
|
136
|
+
### Reasoning Output
|
|
137
|
+
|
|
138
|
+
For reasoning models like `deepseek-ai/DeepSeek-R1`, you can control the reasoning effort and access the model's reasoning process in the response:
|
|
139
|
+
|
|
140
|
+
```ts
|
|
141
|
+
import { huggingface } from '@ai-sdk/huggingface';
|
|
142
|
+
import { streamText } from 'ai';
|
|
143
|
+
|
|
144
|
+
const result = streamText({
|
|
145
|
+
model: huggingface('deepseek-ai/DeepSeek-R1'),
|
|
146
|
+
prompt: 'How many r letters are in the word strawberry?',
|
|
147
|
+
providerOptions: {
|
|
148
|
+
huggingface: {
|
|
149
|
+
reasoningEffort: 'high',
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
for await (const part of result.fullStream) {
|
|
155
|
+
if (part.type === 'reasoning') {
|
|
156
|
+
console.log(`Reasoning: ${part.textDelta}`);
|
|
157
|
+
} else if (part.type === 'text-delta') {
|
|
158
|
+
process.stdout.write(part.textDelta);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
For non-streaming calls with `generateText`, the reasoning content is available in the `reasoning` field of the response:
|
|
164
|
+
|
|
165
|
+
```ts
|
|
166
|
+
import { huggingface } from '@ai-sdk/huggingface';
|
|
167
|
+
import { generateText } from 'ai';
|
|
168
|
+
|
|
169
|
+
const result = await generateText({
|
|
170
|
+
model: huggingface('deepseek-ai/DeepSeek-R1'),
|
|
171
|
+
prompt: 'What is 25 * 37?',
|
|
172
|
+
providerOptions: {
|
|
173
|
+
huggingface: {
|
|
174
|
+
reasoningEffort: 'medium',
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
console.log('Reasoning:', result.reasoning);
|
|
180
|
+
console.log('Answer:', result.text);
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Image Input
|
|
184
|
+
|
|
185
|
+
For vision-capable models like `Qwen/Qwen2.5-VL-7B-Instruct`, you can pass images as part of the message content:
|
|
186
|
+
|
|
187
|
+
```ts
|
|
188
|
+
import { huggingface } from '@ai-sdk/huggingface';
|
|
189
|
+
import { generateText } from 'ai';
|
|
190
|
+
import { readFileSync } from 'fs';
|
|
191
|
+
|
|
192
|
+
const result = await generateText({
|
|
193
|
+
model: huggingface('Qwen/Qwen2.5-VL-7B-Instruct'),
|
|
194
|
+
messages: [
|
|
195
|
+
{
|
|
196
|
+
role: 'user',
|
|
197
|
+
content: [
|
|
198
|
+
{ type: 'text', text: 'Describe this image in detail.' },
|
|
199
|
+
{
|
|
200
|
+
type: 'image',
|
|
201
|
+
image: readFileSync('./image.png'),
|
|
202
|
+
},
|
|
203
|
+
],
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
});
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
You can also pass image URLs:
|
|
210
|
+
|
|
211
|
+
```ts
|
|
212
|
+
{
|
|
213
|
+
type: 'image',
|
|
214
|
+
image: 'https://example.com/image.png',
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
98
218
|
## Model Capabilities
|
|
99
219
|
|
|
100
|
-
| Model
|
|
101
|
-
|
|
|
102
|
-
| `meta-llama/Llama-3.1-8B-Instruct`
|
|
103
|
-
| `meta-llama/Llama-3.1-70B-Instruct`
|
|
104
|
-
| `meta-llama/Llama-3.3-70B-Instruct`
|
|
105
|
-
| `meta-llama/Llama-4-
|
|
106
|
-
| `deepseek-ai/DeepSeek-V3
|
|
107
|
-
| `deepseek-ai/DeepSeek-
|
|
108
|
-
| `deepseek-ai/DeepSeek-R1
|
|
109
|
-
| `
|
|
110
|
-
| `Qwen/Qwen3-
|
|
111
|
-
| `Qwen/
|
|
112
|
-
| `
|
|
113
|
-
| `
|
|
220
|
+
| Model | Image Input | Object Generation | Tool Usage | Tool Streaming |
|
|
221
|
+
| ----------------------------------------------- | ------------------- | ------------------- | ------------------- | ------------------- |
|
|
222
|
+
| `meta-llama/Llama-3.1-8B-Instruct` | <Cross size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
223
|
+
| `meta-llama/Llama-3.1-70B-Instruct` | <Cross size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
224
|
+
| `meta-llama/Llama-3.3-70B-Instruct` | <Cross size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
225
|
+
| `meta-llama/Llama-4-Maverick-17B-128E-Instruct` | <Cross size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
226
|
+
| `deepseek-ai/DeepSeek-V3.1` | <Cross size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
227
|
+
| `deepseek-ai/DeepSeek-V3-0324` | <Cross size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
228
|
+
| `deepseek-ai/DeepSeek-R1` | <Cross size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
229
|
+
| `deepseek-ai/DeepSeek-R1-Distill-Llama-70B` | <Cross size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
230
|
+
| `Qwen/Qwen3-32B` | <Cross size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
231
|
+
| `Qwen/Qwen3-Coder-480B-A35B-Instruct` | <Cross size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
232
|
+
| `Qwen/Qwen2.5-VL-7B-Instruct` | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
233
|
+
| `google/gemma-3-27b-it` | <Cross size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
234
|
+
| `moonshotai/Kimi-K2-Instruct` | <Cross size={18} /> | <Check size={18} /> | <Check size={18} /> | <Check size={18} /> |
|
|
114
235
|
|
|
115
236
|
<Note>
|
|
116
|
-
The
|
|
117
|
-
|
|
118
|
-
|
|
237
|
+
The table above lists popular models. You can explore all available models on
|
|
238
|
+
the [Hugging Face Inference Models](https://huggingface.co/inference/models)
|
|
239
|
+
page. The capabilities depend on the specific model you're using. Check the
|
|
240
|
+
model documentation on Hugging Face Hub for detailed information about each
|
|
241
|
+
model's features.
|
|
119
242
|
</Note>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/huggingface",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.24",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@ai-sdk/openai-compatible": "2.0.
|
|
32
|
+
"@ai-sdk/openai-compatible": "2.0.22",
|
|
33
33
|
"@ai-sdk/provider": "3.0.5",
|
|
34
34
|
"@ai-sdk/provider-utils": "4.0.10"
|
|
35
35
|
},
|
|
@@ -14,21 +14,21 @@ import { HuggingFaceResponsesModelId } from './responses/huggingface-responses-s
|
|
|
14
14
|
|
|
15
15
|
export interface HuggingFaceProviderSettings {
|
|
16
16
|
/**
|
|
17
|
-
Hugging Face API key.
|
|
18
|
-
*/
|
|
17
|
+
* Hugging Face API key.
|
|
18
|
+
*/
|
|
19
19
|
apiKey?: string;
|
|
20
20
|
/**
|
|
21
|
-
Base URL for the API calls.
|
|
22
|
-
*/
|
|
21
|
+
* Base URL for the API calls.
|
|
22
|
+
*/
|
|
23
23
|
baseURL?: string;
|
|
24
24
|
/**
|
|
25
|
-
Custom headers to include in the requests.
|
|
26
|
-
*/
|
|
25
|
+
* Custom headers to include in the requests.
|
|
26
|
+
*/
|
|
27
27
|
headers?: Record<string, string>;
|
|
28
28
|
/**
|
|
29
|
-
Custom fetch implementation. You can use it as a middleware to intercept requests,
|
|
30
|
-
or to provide a custom fetch implementation for e.g. testing.
|
|
31
|
-
*/
|
|
29
|
+
* Custom fetch implementation. You can use it as a middleware to intercept requests,
|
|
30
|
+
* or to provide a custom fetch implementation for e.g. testing.
|
|
31
|
+
*/
|
|
32
32
|
fetch?: FetchFunction;
|
|
33
33
|
|
|
34
34
|
generateId?: () => string;
|
|
@@ -36,18 +36,18 @@ or to provide a custom fetch implementation for e.g. testing.
|
|
|
36
36
|
|
|
37
37
|
export interface HuggingFaceProvider extends ProviderV3 {
|
|
38
38
|
/**
|
|
39
|
-
Creates a Hugging Face responses model for text generation.
|
|
40
|
-
*/
|
|
39
|
+
* Creates a Hugging Face responses model for text generation.
|
|
40
|
+
*/
|
|
41
41
|
(modelId: HuggingFaceResponsesModelId): LanguageModelV3;
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
|
-
Creates a Hugging Face responses model for text generation.
|
|
45
|
-
*/
|
|
44
|
+
* Creates a Hugging Face responses model for text generation.
|
|
45
|
+
*/
|
|
46
46
|
languageModel(modelId: HuggingFaceResponsesModelId): LanguageModelV3;
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
|
-
Creates a Hugging Face responses model for text generation.
|
|
50
|
-
*/
|
|
49
|
+
* Creates a Hugging Face responses model for text generation.
|
|
50
|
+
*/
|
|
51
51
|
responses(modelId: HuggingFaceResponsesModelId): LanguageModelV3;
|
|
52
52
|
|
|
53
53
|
/**
|
|
@@ -57,7 +57,7 @@ Creates a Hugging Face responses model for text generation.
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
|
-
Create a Hugging Face provider instance.
|
|
60
|
+
* Create a Hugging Face provider instance.
|
|
61
61
|
*/
|
|
62
62
|
export function createHuggingFace(
|
|
63
63
|
options: HuggingFaceProviderSettings = {},
|
|
@@ -114,6 +114,6 @@ export function createHuggingFace(
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
/**
|
|
117
|
-
Default Hugging Face provider instance.
|
|
117
|
+
* Default Hugging Face provider instance.
|
|
118
118
|
*/
|
|
119
119
|
export const huggingface = createHuggingFace();
|