ai.matey.backend 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/index.js +60 -0
  3. package/dist/cjs/index.js.map +1 -0
  4. package/dist/cjs/providers/ai21.js +331 -0
  5. package/dist/cjs/providers/ai21.js.map +1 -0
  6. package/dist/cjs/providers/anthropic.js +664 -0
  7. package/dist/cjs/providers/anthropic.js.map +1 -0
  8. package/dist/cjs/providers/anyscale.js +338 -0
  9. package/dist/cjs/providers/anyscale.js.map +1 -0
  10. package/dist/cjs/providers/aws-bedrock.js +374 -0
  11. package/dist/cjs/providers/aws-bedrock.js.map +1 -0
  12. package/dist/cjs/providers/azure-openai.js +406 -0
  13. package/dist/cjs/providers/azure-openai.js.map +1 -0
  14. package/dist/cjs/providers/cerebras.js +356 -0
  15. package/dist/cjs/providers/cerebras.js.map +1 -0
  16. package/dist/cjs/providers/cloudflare.js +359 -0
  17. package/dist/cjs/providers/cloudflare.js.map +1 -0
  18. package/dist/cjs/providers/cohere.js +368 -0
  19. package/dist/cjs/providers/cohere.js.map +1 -0
  20. package/dist/cjs/providers/deepinfra.js +343 -0
  21. package/dist/cjs/providers/deepinfra.js.map +1 -0
  22. package/dist/cjs/providers/deepseek.js +104 -0
  23. package/dist/cjs/providers/deepseek.js.map +1 -0
  24. package/dist/cjs/providers/fireworks.js +363 -0
  25. package/dist/cjs/providers/fireworks.js.map +1 -0
  26. package/dist/cjs/providers/gemini.js +292 -0
  27. package/dist/cjs/providers/gemini.js.map +1 -0
  28. package/dist/cjs/providers/groq.js +143 -0
  29. package/dist/cjs/providers/groq.js.map +1 -0
  30. package/dist/cjs/providers/huggingface.js +392 -0
  31. package/dist/cjs/providers/huggingface.js.map +1 -0
  32. package/dist/cjs/providers/lmstudio.js +144 -0
  33. package/dist/cjs/providers/lmstudio.js.map +1 -0
  34. package/dist/cjs/providers/mistral.js +288 -0
  35. package/dist/cjs/providers/mistral.js.map +1 -0
  36. package/dist/cjs/providers/nvidia.js +167 -0
  37. package/dist/cjs/providers/nvidia.js.map +1 -0
  38. package/dist/cjs/providers/ollama.js +257 -0
  39. package/dist/cjs/providers/ollama.js.map +1 -0
  40. package/dist/cjs/providers/openai.js +640 -0
  41. package/dist/cjs/providers/openai.js.map +1 -0
  42. package/dist/cjs/providers/openrouter.js +379 -0
  43. package/dist/cjs/providers/openrouter.js.map +1 -0
  44. package/dist/cjs/providers/perplexity.js +372 -0
  45. package/dist/cjs/providers/perplexity.js.map +1 -0
  46. package/dist/cjs/providers/replicate.js +340 -0
  47. package/dist/cjs/providers/replicate.js.map +1 -0
  48. package/dist/cjs/providers/together-ai.js +341 -0
  49. package/dist/cjs/providers/together-ai.js.map +1 -0
  50. package/dist/cjs/providers/xai.js +339 -0
  51. package/dist/cjs/providers/xai.js.map +1 -0
  52. package/dist/cjs/shared.js +279 -0
  53. package/dist/cjs/shared.js.map +1 -0
  54. package/dist/esm/index.js +44 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/providers/ai21.js +327 -0
  57. package/dist/esm/providers/ai21.js.map +1 -0
  58. package/dist/esm/providers/anthropic.js +660 -0
  59. package/dist/esm/providers/anthropic.js.map +1 -0
  60. package/dist/esm/providers/anyscale.js +334 -0
  61. package/dist/esm/providers/anyscale.js.map +1 -0
  62. package/dist/esm/providers/aws-bedrock.js +370 -0
  63. package/dist/esm/providers/aws-bedrock.js.map +1 -0
  64. package/dist/esm/providers/azure-openai.js +402 -0
  65. package/dist/esm/providers/azure-openai.js.map +1 -0
  66. package/dist/esm/providers/cerebras.js +352 -0
  67. package/dist/esm/providers/cerebras.js.map +1 -0
  68. package/dist/esm/providers/cloudflare.js +355 -0
  69. package/dist/esm/providers/cloudflare.js.map +1 -0
  70. package/dist/esm/providers/cohere.js +364 -0
  71. package/dist/esm/providers/cohere.js.map +1 -0
  72. package/dist/esm/providers/deepinfra.js +339 -0
  73. package/dist/esm/providers/deepinfra.js.map +1 -0
  74. package/dist/esm/providers/deepseek.js +99 -0
  75. package/dist/esm/providers/deepseek.js.map +1 -0
  76. package/dist/esm/providers/fireworks.js +359 -0
  77. package/dist/esm/providers/fireworks.js.map +1 -0
  78. package/dist/esm/providers/gemini.js +288 -0
  79. package/dist/esm/providers/gemini.js.map +1 -0
  80. package/dist/esm/providers/groq.js +138 -0
  81. package/dist/esm/providers/groq.js.map +1 -0
  82. package/dist/esm/providers/huggingface.js +387 -0
  83. package/dist/esm/providers/huggingface.js.map +1 -0
  84. package/dist/esm/providers/lmstudio.js +139 -0
  85. package/dist/esm/providers/lmstudio.js.map +1 -0
  86. package/dist/esm/providers/mistral.js +284 -0
  87. package/dist/esm/providers/mistral.js.map +1 -0
  88. package/dist/esm/providers/nvidia.js +162 -0
  89. package/dist/esm/providers/nvidia.js.map +1 -0
  90. package/dist/esm/providers/ollama.js +253 -0
  91. package/dist/esm/providers/ollama.js.map +1 -0
  92. package/dist/esm/providers/openai.js +636 -0
  93. package/dist/esm/providers/openai.js.map +1 -0
  94. package/dist/esm/providers/openrouter.js +375 -0
  95. package/dist/esm/providers/openrouter.js.map +1 -0
  96. package/dist/esm/providers/perplexity.js +368 -0
  97. package/dist/esm/providers/perplexity.js.map +1 -0
  98. package/dist/esm/providers/replicate.js +336 -0
  99. package/dist/esm/providers/replicate.js.map +1 -0
  100. package/dist/esm/providers/together-ai.js +337 -0
  101. package/dist/esm/providers/together-ai.js.map +1 -0
  102. package/dist/esm/providers/xai.js +335 -0
  103. package/dist/esm/providers/xai.js.map +1 -0
  104. package/dist/esm/shared.js +272 -0
  105. package/dist/esm/shared.js.map +1 -0
  106. package/dist/types/index.d.ts +38 -0
  107. package/dist/types/index.d.ts.map +1 -0
  108. package/dist/types/providers/ai21.d.ts +106 -0
  109. package/dist/types/providers/ai21.d.ts.map +1 -0
  110. package/dist/types/providers/anthropic.d.ts +194 -0
  111. package/dist/types/providers/anthropic.d.ts.map +1 -0
  112. package/dist/types/providers/anyscale.d.ts +109 -0
  113. package/dist/types/providers/anyscale.d.ts.map +1 -0
  114. package/dist/types/providers/aws-bedrock.d.ts +152 -0
  115. package/dist/types/providers/aws-bedrock.d.ts.map +1 -0
  116. package/dist/types/providers/azure-openai.d.ts +142 -0
  117. package/dist/types/providers/azure-openai.d.ts.map +1 -0
  118. package/dist/types/providers/cerebras.d.ts +130 -0
  119. package/dist/types/providers/cerebras.d.ts.map +1 -0
  120. package/dist/types/providers/cloudflare.d.ts +125 -0
  121. package/dist/types/providers/cloudflare.d.ts.map +1 -0
  122. package/dist/types/providers/cohere.d.ts +114 -0
  123. package/dist/types/providers/cohere.d.ts.map +1 -0
  124. package/dist/types/providers/deepinfra.d.ts +118 -0
  125. package/dist/types/providers/deepinfra.d.ts.map +1 -0
  126. package/dist/types/providers/deepseek.d.ts +68 -0
  127. package/dist/types/providers/deepseek.d.ts.map +1 -0
  128. package/dist/types/providers/fireworks.d.ts +127 -0
  129. package/dist/types/providers/fireworks.d.ts.map +1 -0
  130. package/dist/types/providers/gemini.d.ts +71 -0
  131. package/dist/types/providers/gemini.d.ts.map +1 -0
  132. package/dist/types/providers/groq.d.ts +83 -0
  133. package/dist/types/providers/groq.d.ts.map +1 -0
  134. package/dist/types/providers/huggingface.d.ts +154 -0
  135. package/dist/types/providers/huggingface.d.ts.map +1 -0
  136. package/dist/types/providers/lmstudio.d.ts +88 -0
  137. package/dist/types/providers/lmstudio.d.ts.map +1 -0
  138. package/dist/types/providers/mistral.d.ts +65 -0
  139. package/dist/types/providers/mistral.d.ts.map +1 -0
  140. package/dist/types/providers/nvidia.d.ts +100 -0
  141. package/dist/types/providers/nvidia.d.ts.map +1 -0
  142. package/dist/types/providers/ollama.d.ts +59 -0
  143. package/dist/types/providers/ollama.d.ts.map +1 -0
  144. package/dist/types/providers/openai.d.ts +205 -0
  145. package/dist/types/providers/openai.d.ts.map +1 -0
  146. package/dist/types/providers/openrouter.d.ts +135 -0
  147. package/dist/types/providers/openrouter.d.ts.map +1 -0
  148. package/dist/types/providers/perplexity.d.ts +116 -0
  149. package/dist/types/providers/perplexity.d.ts.map +1 -0
  150. package/dist/types/providers/replicate.d.ts +91 -0
  151. package/dist/types/providers/replicate.d.ts.map +1 -0
  152. package/dist/types/providers/together-ai.d.ts +118 -0
  153. package/dist/types/providers/together-ai.d.ts.map +1 -0
  154. package/dist/types/providers/xai.d.ts +119 -0
  155. package/dist/types/providers/xai.d.ts.map +1 -0
  156. package/dist/types/shared.d.ts +116 -0
  157. package/dist/types/shared.d.ts.map +1 -0
  158. package/package.json +327 -0
  159. package/readme.md +86 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Groq Backend Adapter
3
+ *
4
+ * Adapts Universal IR to Groq API (OpenAI-compatible).
5
+ * Groq provides ultra-fast inference with LPU (Language Processing Unit) technology.
6
+ *
7
+ * @module
8
+ */
9
+ import { OpenAIBackendAdapter } from './openai.js';
10
+ /**
11
+ * Backend adapter for Groq API.
12
+ *
13
+ * Groq uses an OpenAI-compatible API with ultra-fast inference speeds.
14
+ * Known for extremely low latency responses.
15
+ *
16
+ * @example Basic Usage
17
+ * ```typescript
18
+ * import { GroqBackendAdapter } from 'ai.matey';
19
+ *
20
+ * const adapter = new GroqBackendAdapter({
21
+ * apiKey: process.env.GROQ_API_KEY,
22
+ * });
23
+ * ```
24
+ *
25
+ * @example With Fast Models
26
+ * ```typescript
27
+ * const adapter = new GroqBackendAdapter({
28
+ * apiKey: process.env.GROQ_API_KEY,
29
+ * });
30
+ *
31
+ * const response = await adapter.execute({
32
+ * messages: [{ role: 'user', content: 'Hello!' }],
33
+ * parameters: {
34
+ * model: 'llama-3.3-70b-versatile', // Fast and capable
35
+ * },
36
+ * });
37
+ * ```
38
+ *
39
+ * @example Streaming for Ultra-Fast Responses
40
+ * ```typescript
41
+ * const stream = adapter.executeStream({
42
+ * messages: [{ role: 'user', content: 'Tell me a story' }],
43
+ * parameters: {
44
+ * model: 'llama-3.1-8b-instant', // Optimized for speed
45
+ * },
46
+ * });
47
+ *
48
+ * for await (const chunk of stream) {
49
+ * if (chunk.type === 'content') {
50
+ * console.log(chunk.delta);
51
+ * }
52
+ * }
53
+ * ```
54
+ */
55
+ export class GroqBackendAdapter extends OpenAIBackendAdapter {
56
+ constructor(config) {
57
+ // Groq API endpoint
58
+ const groqConfig = {
59
+ ...config,
60
+ baseURL: config.baseURL || 'https://api.groq.com/openai/v1',
61
+ };
62
+ // Pass Groq-specific metadata to parent constructor
63
+ super(groqConfig, {
64
+ name: 'groq-backend',
65
+ version: '1.0.0',
66
+ provider: 'Groq',
67
+ capabilities: {
68
+ streaming: true,
69
+ multiModal: false, // Groq currently focuses on text
70
+ tools: true,
71
+ maxContextTokens: 128000, // Varies by model, some support 128K
72
+ systemMessageStrategy: 'in-messages',
73
+ supportsMultipleSystemMessages: false,
74
+ supportsTemperature: true,
75
+ supportsTopP: true,
76
+ supportsTopK: false,
77
+ supportsSeed: true,
78
+ supportsFrequencyPenalty: true,
79
+ supportsPresencePenalty: true,
80
+ maxStopSequences: 4,
81
+ },
82
+ config: {
83
+ baseURL: groqConfig.baseURL,
84
+ },
85
+ });
86
+ }
87
+ /**
88
+ * Health check for Groq API.
89
+ */
90
+ async healthCheck() {
91
+ try {
92
+ const response = await fetch(`${this.baseURL}/models`, {
93
+ method: 'GET',
94
+ headers: {
95
+ 'Content-Type': 'application/json',
96
+ Authorization: `Bearer ${this.config.apiKey}`,
97
+ ...this.config.headers,
98
+ },
99
+ signal: AbortSignal.timeout(5000),
100
+ });
101
+ return response.ok;
102
+ }
103
+ catch {
104
+ return false;
105
+ }
106
+ }
107
+ /**
108
+ * Estimate cost for Groq (very low cost, optimized for speed).
109
+ */
110
+ async estimateCost(request) {
111
+ // Groq pricing: ~$0.05 per 1M input tokens, ~$0.10 per 1M output tokens
112
+ // (Extremely competitive pricing)
113
+ const estimatedInputTokens = (await super.estimateCost(request)) || 0;
114
+ const estimatedOutputTokens = Math.min(request.parameters?.maxTokens || 1000, 4000);
115
+ const inputCost = (estimatedInputTokens * 1000 * 0.05) / 1_000_000;
116
+ const outputCost = (estimatedOutputTokens / 1_000_000) * 0.1;
117
+ return inputCost + outputCost;
118
+ }
119
+ }
120
+ /**
121
+ * Create a Groq backend adapter.
122
+ *
123
+ * @param config - Adapter configuration
124
+ * @returns Groq backend adapter
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * import { createGroqAdapter } from 'ai.matey';
129
+ *
130
+ * const adapter = createGroqAdapter({
131
+ * apiKey: process.env.GROQ_API_KEY,
132
+ * });
133
+ * ```
134
+ */
135
+ export function createGroqAdapter(config) {
136
+ return new GroqBackendAdapter(config);
137
+ }
138
+ //# sourceMappingURL=groq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groq.js","sourceRoot":"","sources":["../../../src/providers/groq.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAA2C,MAAM,aAAa,CAAC;AAG5F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,OAAO,kBACX,SAAQ,oBAAoB;IAG5B,YAAY,MAA4B;QACtC,oBAAoB;QACpB,MAAM,UAAU,GAAyB;YACvC,GAAG,MAAM;YACT,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,gCAAgC;SAC5D,CAAC;QAEF,oDAAoD;QACpD,KAAK,CAAC,UAAU,EAAE;YAChB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,MAAM;YAChB,YAAY,EAAE;gBACZ,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,KAAK,EAAE,iCAAiC;gBACpD,KAAK,EAAE,IAAI;gBACX,gBAAgB,EAAE,MAAM,EAAE,qCAAqC;gBAC/D,qBAAqB,EAAE,aAAa;gBACpC,8BAA8B,EAAE,KAAK;gBACrC,mBAAmB,EAAE,IAAI;gBACzB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,KAAK;gBACnB,YAAY,EAAE,IAAI;gBAClB,wBAAwB,EAAE,IAAI;gBAC9B,uBAAuB,EAAE,IAAI;gBAC7B,gBAAgB,EAAE,CAAC;aACpB;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS,EAAE;gBACrD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC7C,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;iBACvB;gBACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAAsB;QACvC,wEAAwE;QACxE,kCAAkC;QAClC,MAAM,oBAAoB,GAAG,CAAC,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC;QAEpF,MAAM,SAAS,GAAG,CAAC,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;QACnE,MAAM,UAAU,GAAG,CAAC,qBAAqB,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC;QAE7D,OAAO,SAAS,GAAG,UAAU,CAAC;IAChC,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA4B;IAC5D,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,387 @@
1
+ /**
2
+ * Hugging Face Backend Adapter
3
+ *
4
+ * Adapts Universal IR to Hugging Face Inference API.
5
+ * Access thousands of models through Hugging Face's unified API.
6
+ *
7
+ * @module
8
+ */
9
+ import { AdapterConversionError, NetworkError, ProviderError, ErrorCode, createErrorFromHttpResponse, } from 'ai.matey.errors';
10
+ /**
11
+ * Backend adapter for Hugging Face Inference API.
12
+ *
13
+ * Supports text generation models from Hugging Face Hub.
14
+ *
15
+ * @example Basic Usage
16
+ * ```typescript
17
+ * import { HuggingFaceBackendAdapter } from 'ai.matey';
18
+ *
19
+ * const adapter = new HuggingFaceBackendAdapter({
20
+ * apiKey: process.env.HUGGINGFACE_API_KEY,
21
+ * });
22
+ * ```
23
+ *
24
+ * @example With Specific Model
25
+ * ```typescript
26
+ * const adapter = new HuggingFaceBackendAdapter({
27
+ * apiKey: process.env.HUGGINGFACE_API_KEY,
28
+ * });
29
+ *
30
+ * const response = await adapter.execute({
31
+ * messages: [{ role: 'user', content: 'Hello!' }],
32
+ * parameters: {
33
+ * model: 'mistralai/Mixtral-8x7B-Instruct-v0.1',
34
+ * },
35
+ * });
36
+ * ```
37
+ *
38
+ * @example With Inference Endpoints
39
+ * ```typescript
40
+ * const adapter = new HuggingFaceBackendAdapter({
41
+ * apiKey: process.env.HUGGINGFACE_API_KEY,
42
+ * baseURL: 'https://your-endpoint.aws.endpoints.huggingface.cloud',
43
+ * });
44
+ * ```
45
+ */
46
+ export class HuggingFaceBackendAdapter {
47
+ metadata;
48
+ config;
49
+ baseURL;
50
+ constructor(config) {
51
+ this.config = config;
52
+ this.baseURL = config.baseURL || 'https://api-inference.huggingface.co';
53
+ this.metadata = {
54
+ name: 'huggingface-backend',
55
+ version: '1.0.0',
56
+ provider: 'Hugging Face',
57
+ capabilities: {
58
+ streaming: false, // Hugging Face Inference API doesn't support streaming in the same way
59
+ multiModal: false, // Text-only for standard inference
60
+ tools: false,
61
+ maxContextTokens: 4096, // Varies by model
62
+ systemMessageStrategy: 'in-messages',
63
+ supportsMultipleSystemMessages: false,
64
+ supportsTemperature: true,
65
+ supportsTopP: true,
66
+ supportsTopK: true,
67
+ supportsSeed: false,
68
+ supportsFrequencyPenalty: false,
69
+ supportsPresencePenalty: false,
70
+ maxStopSequences: 0,
71
+ },
72
+ config: {
73
+ baseURL: this.baseURL,
74
+ },
75
+ };
76
+ }
77
+ /**
78
+ * Execute non-streaming chat completion request.
79
+ */
80
+ async execute(request, signal) {
81
+ try {
82
+ // Convert IR to Hugging Face format
83
+ const hfRequest = this.fromIR(request);
84
+ // Make HTTP request
85
+ const startTime = Date.now();
86
+ const response = await this.makeRequest(request.parameters?.model || '', hfRequest, signal);
87
+ // Convert response to IR
88
+ const irResponse = this.toIR(response, request, Date.now() - startTime);
89
+ return irResponse;
90
+ }
91
+ catch (error) {
92
+ // Re-throw adapter errors
93
+ if (error instanceof AdapterConversionError ||
94
+ error instanceof NetworkError ||
95
+ error instanceof ProviderError) {
96
+ throw error;
97
+ }
98
+ // Wrap unknown errors
99
+ throw new ProviderError({
100
+ code: ErrorCode.PROVIDER_ERROR,
101
+ message: `Hugging Face request failed: ${error instanceof Error ? error.message : String(error)}`,
102
+ isRetryable: true,
103
+ provenance: {
104
+ backend: this.metadata.name,
105
+ },
106
+ cause: error instanceof Error ? error : undefined,
107
+ });
108
+ }
109
+ }
110
+ /**
111
+ * Execute streaming chat completion request.
112
+ */
113
+ async *executeStream(request, _signal) {
114
+ // Hugging Face Inference API doesn't support streaming in the standard way
115
+ // We'll simulate it by making a regular request and yielding chunks
116
+ yield {
117
+ type: 'start',
118
+ sequence: 0,
119
+ metadata: request.metadata,
120
+ };
121
+ try {
122
+ const response = await this.execute(request, _signal);
123
+ // Yield content as single chunk
124
+ const content = typeof response.message.content === 'string'
125
+ ? response.message.content
126
+ : response.message.content
127
+ .filter((c) => c.type === 'text')
128
+ .map((c) => c.text)
129
+ .join('');
130
+ yield {
131
+ type: 'content',
132
+ sequence: 1,
133
+ delta: content,
134
+ role: 'assistant',
135
+ };
136
+ yield {
137
+ type: 'done',
138
+ sequence: 2,
139
+ finishReason: response.finishReason,
140
+ usage: response.usage,
141
+ message: response.message,
142
+ };
143
+ }
144
+ catch (error) {
145
+ yield {
146
+ type: 'error',
147
+ sequence: 0,
148
+ error: {
149
+ code: error instanceof Error ? error.name : 'UNKNOWN_ERROR',
150
+ message: error instanceof Error ? error.message : String(error),
151
+ },
152
+ };
153
+ }
154
+ }
155
+ /**
156
+ * Health check for Hugging Face API.
157
+ */
158
+ async healthCheck() {
159
+ try {
160
+ // Simple test request
161
+ const response = await fetch(this.baseURL, {
162
+ method: 'GET',
163
+ headers: this.getHeaders(),
164
+ signal: AbortSignal.timeout(5000),
165
+ });
166
+ // HF returns various status codes, 200 or 404 are both "healthy"
167
+ return response.status === 200 || response.status === 404;
168
+ }
169
+ catch {
170
+ return false;
171
+ }
172
+ }
173
+ /**
174
+ * Estimate cost for Hugging Face.
175
+ */
176
+ estimateCost(request) {
177
+ // Hugging Face Inference API is free for public models (with rate limits)
178
+ // Inference Endpoints are charged separately
179
+ const estimatedTokens = this.estimateTokens(request);
180
+ // If using a private Inference Endpoint, estimate ~$0.06 per 1000 tokens
181
+ if (this.baseURL !== 'https://api-inference.huggingface.co') {
182
+ return Promise.resolve((estimatedTokens / 1000) * 0.06);
183
+ }
184
+ // Free tier
185
+ return Promise.resolve(0);
186
+ }
187
+ // ==========================================================================
188
+ // Private Helper Methods
189
+ // ==========================================================================
190
+ /**
191
+ * Convert IR request to Hugging Face format.
192
+ *
193
+ * Public method for testing and debugging - see what will be sent to Hugging Face.
194
+ */
195
+ fromIR(request) {
196
+ try {
197
+ // Convert messages to prompt text
198
+ const prompt = this.messagesToPrompt(request.messages);
199
+ return {
200
+ inputs: prompt,
201
+ parameters: {
202
+ temperature: request.parameters?.temperature,
203
+ max_new_tokens: request.parameters?.maxTokens,
204
+ top_p: request.parameters?.topP,
205
+ top_k: request.parameters?.topK,
206
+ repetition_penalty: request.parameters?.frequencyPenalty
207
+ ? 1 + request.parameters.frequencyPenalty
208
+ : undefined,
209
+ do_sample: request.parameters?.temperature !== undefined && request.parameters.temperature > 0,
210
+ return_full_text: false,
211
+ },
212
+ options: {
213
+ wait_for_model: true,
214
+ use_cache: true,
215
+ },
216
+ };
217
+ }
218
+ catch (error) {
219
+ throw new AdapterConversionError({
220
+ code: ErrorCode.ADAPTER_CONVERSION_ERROR,
221
+ message: `Failed to convert IR to Hugging Face format: ${error instanceof Error ? error.message : String(error)}`,
222
+ provenance: {
223
+ backend: this.metadata.name,
224
+ },
225
+ cause: error instanceof Error ? error : undefined,
226
+ });
227
+ }
228
+ }
229
+ /**
230
+ * Convert Hugging Face response to IR format.
231
+ *
232
+ * Public method for testing and debugging - parse Hugging Face responses manually.
233
+ */
234
+ toIR(response, originalRequest, latencyMs) {
235
+ try {
236
+ // Handle array response
237
+ const hfResponse = Array.isArray(response) ? response[0] : response;
238
+ if (!hfResponse || hfResponse.error) {
239
+ throw new Error(hfResponse?.error || 'Empty response from Hugging Face');
240
+ }
241
+ const text = hfResponse.generated_text || '';
242
+ const message = {
243
+ role: 'assistant',
244
+ content: text,
245
+ };
246
+ return {
247
+ message,
248
+ finishReason: 'stop',
249
+ usage: {
250
+ promptTokens: this.estimateTokens(originalRequest),
251
+ completionTokens: Math.ceil(text.length / 4),
252
+ totalTokens: this.estimateTokens(originalRequest) + Math.ceil(text.length / 4),
253
+ },
254
+ metadata: {
255
+ ...originalRequest.metadata,
256
+ provenance: {
257
+ ...originalRequest.metadata.provenance,
258
+ backend: this.metadata.name,
259
+ },
260
+ custom: {
261
+ ...originalRequest.metadata.custom,
262
+ latencyMs,
263
+ },
264
+ },
265
+ };
266
+ }
267
+ catch (error) {
268
+ throw new AdapterConversionError({
269
+ code: ErrorCode.ADAPTER_CONVERSION_ERROR,
270
+ message: `Failed to convert Hugging Face response to IR: ${error instanceof Error ? error.message : String(error)}`,
271
+ provenance: {
272
+ backend: this.metadata.name,
273
+ },
274
+ cause: error instanceof Error ? error : undefined,
275
+ });
276
+ }
277
+ }
278
+ /**
279
+ * Convert messages to prompt text.
280
+ */
281
+ messagesToPrompt(messages) {
282
+ const parts = [];
283
+ for (const message of messages) {
284
+ const text = typeof message.content === 'string'
285
+ ? message.content
286
+ : message.content
287
+ .filter((c) => c.type === 'text')
288
+ .map((c) => c.text)
289
+ .join('\n');
290
+ if (message.role === 'system') {
291
+ parts.push(`System: ${text}`);
292
+ }
293
+ else if (message.role === 'user') {
294
+ parts.push(`User: ${text}`);
295
+ }
296
+ else if (message.role === 'assistant') {
297
+ parts.push(`Assistant: ${text}`);
298
+ }
299
+ }
300
+ // Add final assistant prompt
301
+ parts.push('Assistant:');
302
+ return parts.join('\n\n');
303
+ }
304
+ /**
305
+ * Make HTTP request to Hugging Face API.
306
+ */
307
+ async makeRequest(model, request, signal) {
308
+ try {
309
+ const url = model ? `${this.baseURL}/models/${model}` : this.baseURL;
310
+ const response = await fetch(url, {
311
+ method: 'POST',
312
+ headers: this.getHeaders(),
313
+ body: JSON.stringify(request),
314
+ signal,
315
+ });
316
+ if (!response.ok) {
317
+ const errorBody = await response.text();
318
+ throw createErrorFromHttpResponse(response.status, response.statusText, errorBody, {
319
+ backend: this.metadata.name,
320
+ });
321
+ }
322
+ const data = (await response.json());
323
+ return data;
324
+ }
325
+ catch (error) {
326
+ if (error instanceof TypeError && error.message.includes('fetch')) {
327
+ throw new NetworkError({
328
+ code: ErrorCode.NETWORK_ERROR,
329
+ message: `Network request failed: ${error.message}`,
330
+ provenance: {
331
+ backend: this.metadata.name,
332
+ },
333
+ cause: error,
334
+ });
335
+ }
336
+ throw error;
337
+ }
338
+ }
339
+ /**
340
+ * Get HTTP headers for Hugging Face API requests.
341
+ */
342
+ getHeaders() {
343
+ return {
344
+ 'Content-Type': 'application/json',
345
+ Authorization: `Bearer ${this.config.apiKey}`,
346
+ ...this.config.headers,
347
+ };
348
+ }
349
+ /**
350
+ * Estimate token count for a request.
351
+ */
352
+ estimateTokens(request) {
353
+ let totalChars = 0;
354
+ for (const message of request.messages) {
355
+ if (typeof message.content === 'string') {
356
+ totalChars += message.content.length;
357
+ }
358
+ else {
359
+ for (const block of message.content) {
360
+ if (block.type === 'text') {
361
+ totalChars += block.text.length;
362
+ }
363
+ }
364
+ }
365
+ }
366
+ return Math.ceil(totalChars / 4);
367
+ }
368
+ }
369
+ /**
370
+ * Create a Hugging Face backend adapter.
371
+ *
372
+ * @param config - Adapter configuration
373
+ * @returns Hugging Face backend adapter
374
+ *
375
+ * @example
376
+ * ```typescript
377
+ * import { createHuggingFaceAdapter } from 'ai.matey';
378
+ *
379
+ * const adapter = createHuggingFaceAdapter({
380
+ * apiKey: process.env.HUGGINGFACE_API_KEY,
381
+ * });
382
+ * ```
383
+ */
384
+ export function createHuggingFaceAdapter(config) {
385
+ return new HuggingFaceBackendAdapter(config);
386
+ }
387
+ //# sourceMappingURL=huggingface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"huggingface.js","sourceRoot":"","sources":["../../../src/providers/huggingface.ts"],"names":[],"mappings":"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"}