@llumiverse/drivers 0.25.0 → 0.25.1-dev.20260210.145152Z

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 (224) hide show
  1. package/lib/cjs/adobe/firefly.js +120 -0
  2. package/lib/cjs/adobe/firefly.js.map +1 -0
  3. package/lib/cjs/azure/azure_foundry.js +432 -0
  4. package/lib/cjs/azure/azure_foundry.js.map +1 -0
  5. package/lib/cjs/bedrock/converse.js +285 -0
  6. package/lib/cjs/bedrock/converse.js.map +1 -0
  7. package/lib/cjs/bedrock/index.js +1091 -0
  8. package/lib/cjs/bedrock/index.js.map +1 -0
  9. package/lib/cjs/bedrock/nova-image-payload.js +207 -0
  10. package/lib/cjs/bedrock/nova-image-payload.js.map +1 -0
  11. package/lib/cjs/bedrock/payloads.js +3 -0
  12. package/lib/cjs/bedrock/payloads.js.map +1 -0
  13. package/lib/cjs/bedrock/s3.js +107 -0
  14. package/lib/cjs/bedrock/s3.js.map +1 -0
  15. package/lib/cjs/bedrock/twelvelabs.js +87 -0
  16. package/lib/cjs/bedrock/twelvelabs.js.map +1 -0
  17. package/lib/cjs/groq/index.js +323 -0
  18. package/lib/cjs/groq/index.js.map +1 -0
  19. package/lib/cjs/huggingface_ie.js +201 -0
  20. package/lib/cjs/huggingface_ie.js.map +1 -0
  21. package/lib/cjs/index.js +31 -0
  22. package/lib/cjs/index.js.map +1 -0
  23. package/lib/cjs/mistral/index.js +173 -0
  24. package/lib/cjs/mistral/index.js.map +1 -0
  25. package/lib/cjs/mistral/types.js +83 -0
  26. package/lib/cjs/mistral/types.js.map +1 -0
  27. package/lib/cjs/openai/azure_openai.js +72 -0
  28. package/lib/cjs/openai/azure_openai.js.map +1 -0
  29. package/lib/cjs/openai/index.js +665 -0
  30. package/lib/cjs/openai/index.js.map +1 -0
  31. package/lib/cjs/openai/openai.js +21 -0
  32. package/lib/cjs/openai/openai.js.map +1 -0
  33. package/lib/cjs/openai/openai_compatible.js +62 -0
  34. package/lib/cjs/openai/openai_compatible.js.map +1 -0
  35. package/lib/cjs/openai/openai_format.js +131 -0
  36. package/lib/cjs/openai/openai_format.js.map +1 -0
  37. package/lib/cjs/package.json +3 -0
  38. package/lib/cjs/replicate.js +275 -0
  39. package/lib/cjs/replicate.js.map +1 -0
  40. package/lib/cjs/test-driver/TestErrorCompletionStream.js +20 -0
  41. package/lib/cjs/test-driver/TestErrorCompletionStream.js.map +1 -0
  42. package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js +24 -0
  43. package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js.map +1 -0
  44. package/lib/cjs/test-driver/index.js +109 -0
  45. package/lib/cjs/test-driver/index.js.map +1 -0
  46. package/lib/cjs/test-driver/utils.js +30 -0
  47. package/lib/cjs/test-driver/utils.js.map +1 -0
  48. package/lib/cjs/togetherai/index.js +126 -0
  49. package/lib/cjs/togetherai/index.js.map +1 -0
  50. package/lib/cjs/togetherai/interfaces.js +3 -0
  51. package/lib/cjs/togetherai/interfaces.js.map +1 -0
  52. package/lib/cjs/vertexai/debug.js +12 -0
  53. package/lib/cjs/vertexai/debug.js.map +1 -0
  54. package/lib/cjs/vertexai/embeddings/embeddings-image.js +27 -0
  55. package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +1 -0
  56. package/lib/cjs/vertexai/embeddings/embeddings-text.js +23 -0
  57. package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +1 -0
  58. package/lib/cjs/vertexai/index.js +576 -0
  59. package/lib/cjs/vertexai/index.js.map +1 -0
  60. package/lib/cjs/vertexai/models/claude.js +485 -0
  61. package/lib/cjs/vertexai/models/claude.js.map +1 -0
  62. package/lib/cjs/vertexai/models/gemini.js +871 -0
  63. package/lib/cjs/vertexai/models/gemini.js.map +1 -0
  64. package/lib/cjs/vertexai/models/imagen.js +303 -0
  65. package/lib/cjs/vertexai/models/imagen.js.map +1 -0
  66. package/lib/cjs/vertexai/models/llama.js +183 -0
  67. package/lib/cjs/vertexai/models/llama.js.map +1 -0
  68. package/lib/cjs/vertexai/models.js +35 -0
  69. package/lib/cjs/vertexai/models.js.map +1 -0
  70. package/lib/cjs/watsonx/index.js +161 -0
  71. package/lib/cjs/watsonx/index.js.map +1 -0
  72. package/lib/cjs/watsonx/interfaces.js +3 -0
  73. package/lib/cjs/watsonx/interfaces.js.map +1 -0
  74. package/lib/cjs/xai/index.js +65 -0
  75. package/lib/cjs/xai/index.js.map +1 -0
  76. package/lib/esm/adobe/firefly.js +116 -0
  77. package/lib/esm/adobe/firefly.js.map +1 -0
  78. package/lib/esm/azure/azure_foundry.js +426 -0
  79. package/lib/esm/azure/azure_foundry.js.map +1 -0
  80. package/lib/esm/bedrock/converse.js +278 -0
  81. package/lib/esm/bedrock/converse.js.map +1 -0
  82. package/lib/esm/bedrock/index.js +1087 -0
  83. package/lib/esm/bedrock/index.js.map +1 -0
  84. package/lib/esm/bedrock/nova-image-payload.js +203 -0
  85. package/lib/esm/bedrock/nova-image-payload.js.map +1 -0
  86. package/lib/esm/bedrock/payloads.js +2 -0
  87. package/lib/esm/bedrock/payloads.js.map +1 -0
  88. package/lib/esm/bedrock/s3.js +99 -0
  89. package/lib/esm/bedrock/s3.js.map +1 -0
  90. package/lib/esm/bedrock/twelvelabs.js +84 -0
  91. package/lib/esm/bedrock/twelvelabs.js.map +1 -0
  92. package/lib/esm/groq/index.js +316 -0
  93. package/lib/esm/groq/index.js.map +1 -0
  94. package/lib/esm/huggingface_ie.js +197 -0
  95. package/lib/esm/huggingface_ie.js.map +1 -0
  96. package/lib/esm/index.js +15 -0
  97. package/lib/esm/index.js.map +1 -0
  98. package/lib/esm/mistral/index.js +169 -0
  99. package/lib/esm/mistral/index.js.map +1 -0
  100. package/lib/esm/mistral/types.js +80 -0
  101. package/lib/esm/mistral/types.js.map +1 -0
  102. package/lib/esm/openai/azure_openai.js +68 -0
  103. package/lib/esm/openai/azure_openai.js.map +1 -0
  104. package/lib/esm/openai/index.js +660 -0
  105. package/lib/esm/openai/index.js.map +1 -0
  106. package/lib/esm/openai/openai.js +14 -0
  107. package/lib/esm/openai/openai.js.map +1 -0
  108. package/lib/esm/openai/openai_compatible.js +55 -0
  109. package/lib/esm/openai/openai_compatible.js.map +1 -0
  110. package/lib/esm/openai/openai_format.js +127 -0
  111. package/lib/esm/openai/openai_format.js.map +1 -0
  112. package/lib/esm/replicate.js +268 -0
  113. package/lib/esm/replicate.js.map +1 -0
  114. package/lib/esm/test-driver/TestErrorCompletionStream.js +16 -0
  115. package/lib/esm/test-driver/TestErrorCompletionStream.js.map +1 -0
  116. package/lib/esm/test-driver/TestValidationErrorCompletionStream.js +20 -0
  117. package/lib/esm/test-driver/TestValidationErrorCompletionStream.js.map +1 -0
  118. package/lib/esm/test-driver/index.js +91 -0
  119. package/lib/esm/test-driver/index.js.map +1 -0
  120. package/lib/esm/test-driver/utils.js +25 -0
  121. package/lib/esm/test-driver/utils.js.map +1 -0
  122. package/lib/esm/togetherai/index.js +122 -0
  123. package/lib/esm/togetherai/index.js.map +1 -0
  124. package/lib/esm/togetherai/interfaces.js +2 -0
  125. package/lib/esm/togetherai/interfaces.js.map +1 -0
  126. package/lib/esm/vertexai/debug.js +6 -0
  127. package/lib/esm/vertexai/debug.js.map +1 -0
  128. package/lib/esm/vertexai/embeddings/embeddings-image.js +24 -0
  129. package/lib/esm/vertexai/embeddings/embeddings-image.js.map +1 -0
  130. package/lib/esm/vertexai/embeddings/embeddings-text.js +20 -0
  131. package/lib/esm/vertexai/embeddings/embeddings-text.js.map +1 -0
  132. package/lib/esm/vertexai/index.js +571 -0
  133. package/lib/esm/vertexai/index.js.map +1 -0
  134. package/lib/esm/vertexai/models/claude.js +479 -0
  135. package/lib/esm/vertexai/models/claude.js.map +1 -0
  136. package/lib/esm/vertexai/models/gemini.js +866 -0
  137. package/lib/esm/vertexai/models/gemini.js.map +1 -0
  138. package/lib/esm/vertexai/models/imagen.js +299 -0
  139. package/lib/esm/vertexai/models/imagen.js.map +1 -0
  140. package/lib/esm/vertexai/models/llama.js +179 -0
  141. package/lib/esm/vertexai/models/llama.js.map +1 -0
  142. package/lib/esm/vertexai/models.js +32 -0
  143. package/lib/esm/vertexai/models.js.map +1 -0
  144. package/lib/esm/watsonx/index.js +157 -0
  145. package/lib/esm/watsonx/index.js.map +1 -0
  146. package/lib/esm/watsonx/interfaces.js +2 -0
  147. package/lib/esm/watsonx/interfaces.js.map +1 -0
  148. package/lib/esm/xai/index.js +58 -0
  149. package/lib/esm/xai/index.js.map +1 -0
  150. package/lib/types/adobe/firefly.d.ts +30 -0
  151. package/lib/types/adobe/firefly.d.ts.map +1 -0
  152. package/lib/types/azure/azure_foundry.d.ts +52 -0
  153. package/lib/types/azure/azure_foundry.d.ts.map +1 -0
  154. package/lib/types/bedrock/converse.d.ts +9 -0
  155. package/lib/types/bedrock/converse.d.ts.map +1 -0
  156. package/lib/types/bedrock/index.d.ts +68 -0
  157. package/lib/types/bedrock/index.d.ts.map +1 -0
  158. package/lib/types/bedrock/nova-image-payload.d.ts +74 -0
  159. package/lib/types/bedrock/nova-image-payload.d.ts.map +1 -0
  160. package/lib/types/bedrock/payloads.d.ts +12 -0
  161. package/lib/types/bedrock/payloads.d.ts.map +1 -0
  162. package/lib/types/bedrock/s3.d.ts +23 -0
  163. package/lib/types/bedrock/s3.d.ts.map +1 -0
  164. package/lib/types/bedrock/twelvelabs.d.ts +50 -0
  165. package/lib/types/bedrock/twelvelabs.d.ts.map +1 -0
  166. package/lib/types/groq/index.d.ts +27 -0
  167. package/lib/types/groq/index.d.ts.map +1 -0
  168. package/lib/types/huggingface_ie.d.ts +35 -0
  169. package/lib/types/huggingface_ie.d.ts.map +1 -0
  170. package/lib/types/index.d.ts +15 -0
  171. package/lib/types/index.d.ts.map +1 -0
  172. package/lib/types/mistral/index.d.ts +25 -0
  173. package/lib/types/mistral/index.d.ts.map +1 -0
  174. package/lib/types/mistral/types.d.ts +132 -0
  175. package/lib/types/mistral/types.d.ts.map +1 -0
  176. package/lib/types/openai/azure_openai.d.ts +25 -0
  177. package/lib/types/openai/azure_openai.d.ts.map +1 -0
  178. package/lib/types/openai/index.d.ts +31 -0
  179. package/lib/types/openai/index.d.ts.map +1 -0
  180. package/lib/types/openai/openai.d.ts +15 -0
  181. package/lib/types/openai/openai.d.ts.map +1 -0
  182. package/lib/types/openai/openai_compatible.d.ts +26 -0
  183. package/lib/types/openai/openai_compatible.d.ts.map +1 -0
  184. package/lib/types/openai/openai_format.d.ts +21 -0
  185. package/lib/types/openai/openai_format.d.ts.map +1 -0
  186. package/lib/types/replicate.d.ts +48 -0
  187. package/lib/types/replicate.d.ts.map +1 -0
  188. package/lib/types/test-driver/TestErrorCompletionStream.d.ts +9 -0
  189. package/lib/types/test-driver/TestErrorCompletionStream.d.ts.map +1 -0
  190. package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts +9 -0
  191. package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts.map +1 -0
  192. package/lib/types/test-driver/index.d.ts +24 -0
  193. package/lib/types/test-driver/index.d.ts.map +1 -0
  194. package/lib/types/test-driver/utils.d.ts +5 -0
  195. package/lib/types/test-driver/utils.d.ts.map +1 -0
  196. package/lib/types/togetherai/index.d.ts +23 -0
  197. package/lib/types/togetherai/index.d.ts.map +1 -0
  198. package/lib/types/togetherai/interfaces.d.ts +96 -0
  199. package/lib/types/togetherai/interfaces.d.ts.map +1 -0
  200. package/lib/types/vertexai/debug.d.ts +2 -0
  201. package/lib/types/vertexai/debug.d.ts.map +1 -0
  202. package/lib/types/vertexai/embeddings/embeddings-image.d.ts +11 -0
  203. package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +1 -0
  204. package/lib/types/vertexai/embeddings/embeddings-text.d.ts +10 -0
  205. package/lib/types/vertexai/embeddings/embeddings-text.d.ts.map +1 -0
  206. package/lib/types/vertexai/index.d.ts +65 -0
  207. package/lib/types/vertexai/index.d.ts.map +1 -0
  208. package/lib/types/vertexai/models/claude.d.ts +28 -0
  209. package/lib/types/vertexai/models/claude.d.ts.map +1 -0
  210. package/lib/types/vertexai/models/gemini.d.ts +18 -0
  211. package/lib/types/vertexai/models/gemini.d.ts.map +1 -0
  212. package/lib/types/vertexai/models/imagen.d.ts +75 -0
  213. package/lib/types/vertexai/models/imagen.d.ts.map +1 -0
  214. package/lib/types/vertexai/models/llama.d.ts +20 -0
  215. package/lib/types/vertexai/models/llama.d.ts.map +1 -0
  216. package/lib/types/vertexai/models.d.ts +15 -0
  217. package/lib/types/vertexai/models.d.ts.map +1 -0
  218. package/lib/types/watsonx/index.d.ts +27 -0
  219. package/lib/types/watsonx/index.d.ts.map +1 -0
  220. package/lib/types/watsonx/interfaces.d.ts +65 -0
  221. package/lib/types/watsonx/interfaces.d.ts.map +1 -0
  222. package/lib/types/xai/index.d.ts +18 -0
  223. package/lib/types/xai/index.d.ts.map +1 -0
  224. package/package.json +3 -3
@@ -0,0 +1,316 @@
1
+ import { AbstractDriver } from "@llumiverse/core";
2
+ import { transformAsyncIterator } from "@llumiverse/core/async";
3
+ import { formatOpenAILikeMultimodalPrompt } from "../openai/openai_format.js";
4
+ import Groq from "groq-sdk";
5
+ export class GroqDriver extends AbstractDriver {
6
+ static PROVIDER = "groq";
7
+ provider = GroqDriver.PROVIDER;
8
+ apiKey;
9
+ client;
10
+ endpointUrl;
11
+ constructor(options) {
12
+ super(options);
13
+ this.apiKey = options.apiKey;
14
+ this.client = new Groq({
15
+ apiKey: options.apiKey,
16
+ baseURL: options.endpoint_url
17
+ });
18
+ }
19
+ // protected canStream(options: ExecutionOptions): Promise<boolean> {
20
+ // if (options.result_schema) {
21
+ // // not yet streaming json responses
22
+ // return Promise.resolve(false);
23
+ // } else {
24
+ // return Promise.resolve(true);
25
+ // }
26
+ // }
27
+ getResponseFormat(_options) {
28
+ //TODO: when forcing json_object type the streaming is not supported.
29
+ // either implement canStream as above or comment the code below:
30
+ // const responseFormatJson: Groq.Chat.Completions.CompletionCreateParams.ResponseFormat = {
31
+ // type: "json_object",
32
+ // }
33
+ // return _options.result_schema ? responseFormatJson : undefined;
34
+ return undefined;
35
+ }
36
+ async formatPrompt(segments, opts) {
37
+ // Use OpenAI's multimodal formatter as base then convert to Groq types
38
+ const responseItems = await formatOpenAILikeMultimodalPrompt(segments, {
39
+ ...opts,
40
+ multimodal: true,
41
+ });
42
+ // Convert ResponseInputItem[] to Groq ChatCompletionMessageParam[]
43
+ return convertResponseItemsToGroqMessages(responseItems);
44
+ }
45
+ getToolDefinitions(tools) {
46
+ if (!tools || tools.length === 0) {
47
+ return undefined;
48
+ }
49
+ return tools.map(tool => ({
50
+ type: 'function',
51
+ function: {
52
+ name: tool.name,
53
+ description: tool.description,
54
+ parameters: tool.input_schema,
55
+ }
56
+ }));
57
+ }
58
+ extractToolUse(message) {
59
+ if (!message.tool_calls || message.tool_calls.length === 0) {
60
+ return undefined;
61
+ }
62
+ return message.tool_calls.map((toolCall) => ({
63
+ id: toolCall.id,
64
+ tool_name: toolCall.function.name,
65
+ tool_input: JSON.parse(toolCall.function.arguments || '{}'),
66
+ }));
67
+ }
68
+ sanitizeMessagesForGroq(messages) {
69
+ return messages.map(message => {
70
+ // Remove any reasoning field from message objects
71
+ const { reasoning, ...sanitizedMessage } = message;
72
+ // If message has content array, filter out reasoning content types
73
+ if (Array.isArray(sanitizedMessage.content)) {
74
+ sanitizedMessage.content = sanitizedMessage.content.filter((part) => {
75
+ // Filter out any reasoning-related content parts
76
+ return part.type !== 'reasoning' && !('reasoning' in part);
77
+ });
78
+ }
79
+ return sanitizedMessage;
80
+ });
81
+ }
82
+ async requestTextCompletion(messages, options) {
83
+ if (options.model_options?._option_id !== "text-fallback" && options.model_options?._option_id !== "groq-deepseek-thinking") {
84
+ this.logger.warn({ options: options.model_options }, "Invalid model options");
85
+ }
86
+ options.model_options = options.model_options;
87
+ // Update conversation with current messages
88
+ let conversation = updateConversation(options.conversation, messages);
89
+ // Filter out any reasoning content that Groq doesn't support
90
+ conversation = this.sanitizeMessagesForGroq(conversation);
91
+ const tools = this.getToolDefinitions(options.tools);
92
+ const res = await this.client.chat.completions.create({
93
+ model: options.model,
94
+ messages: conversation,
95
+ max_completion_tokens: options.model_options?.max_tokens,
96
+ temperature: options.model_options?.temperature,
97
+ top_p: options.model_options?.top_p,
98
+ //top_logprobs: options.top_logprobs, //Logprobs output currently not supported
99
+ //logprobs: options.top_logprobs ? true : false,
100
+ presence_penalty: options.model_options?.presence_penalty,
101
+ frequency_penalty: options.model_options?.frequency_penalty,
102
+ response_format: this.getResponseFormat(options),
103
+ tools: tools,
104
+ });
105
+ const choice = res.choices[0];
106
+ const result = choice.message.content;
107
+ // Extract tool use from the response
108
+ const tool_use = this.extractToolUse(choice.message);
109
+ // Update conversation with the response
110
+ conversation = updateConversation(conversation, [choice.message]);
111
+ let finish_reason = choice.finish_reason;
112
+ if (tool_use && tool_use.length > 0) {
113
+ finish_reason = "tool_calls";
114
+ }
115
+ return {
116
+ result: result ? [{ type: "text", value: result }] : [],
117
+ token_usage: {
118
+ prompt: res.usage?.prompt_tokens,
119
+ result: res.usage?.completion_tokens,
120
+ total: res.usage?.total_tokens,
121
+ },
122
+ finish_reason: finish_reason,
123
+ original_response: options.include_original_response ? res : undefined,
124
+ conversation,
125
+ tool_use,
126
+ };
127
+ }
128
+ async requestTextCompletionStream(messages, options) {
129
+ if (options.model_options?._option_id !== "text-fallback") {
130
+ this.logger.warn({ options: options.model_options }, "Invalid model options");
131
+ }
132
+ options.model_options = options.model_options;
133
+ // Update conversation with current messages
134
+ let conversation = updateConversation(options.conversation, messages);
135
+ // Filter out any reasoning content that Groq doesn't support
136
+ conversation = this.sanitizeMessagesForGroq(conversation);
137
+ const tools = this.getToolDefinitions(options.tools);
138
+ const res = await this.client.chat.completions.create({
139
+ model: options.model,
140
+ messages: conversation,
141
+ max_completion_tokens: options.model_options?.max_tokens,
142
+ temperature: options.model_options?.temperature,
143
+ top_p: options.model_options?.top_p,
144
+ //top_logprobs: options.top_logprobs, //Logprobs output currently not supported
145
+ //logprobs: options.top_logprobs ? true : false,
146
+ presence_penalty: options.model_options?.presence_penalty,
147
+ frequency_penalty: options.model_options?.frequency_penalty,
148
+ stream: true,
149
+ tools: tools,
150
+ });
151
+ return transformAsyncIterator(res, (chunk) => {
152
+ const choice = chunk.choices[0];
153
+ let finish_reason = choice.finish_reason;
154
+ // Check for tool calls in the delta
155
+ if (choice.delta.tool_calls && choice.delta.tool_calls.length > 0) {
156
+ finish_reason = "tool_calls";
157
+ }
158
+ return {
159
+ result: choice.delta.content ? [{ type: "text", value: choice.delta.content }] : [],
160
+ finish_reason: finish_reason ?? undefined,
161
+ token_usage: {
162
+ prompt: chunk.x_groq?.usage?.prompt_tokens,
163
+ result: chunk.x_groq?.usage?.completion_tokens,
164
+ total: chunk.x_groq?.usage?.total_tokens,
165
+ },
166
+ };
167
+ });
168
+ }
169
+ async listModels() {
170
+ const models = await this.client.models.list();
171
+ if (!models.data) {
172
+ throw new Error("No models found");
173
+ }
174
+ const aiModels = models.data?.map(m => {
175
+ if (!m.id) {
176
+ throw new Error("Model id is missing");
177
+ }
178
+ return {
179
+ id: m.id,
180
+ name: m.id,
181
+ description: undefined,
182
+ provider: this.provider,
183
+ owner: m.owned_by || '',
184
+ };
185
+ });
186
+ return aiModels;
187
+ }
188
+ validateConnection() {
189
+ throw new Error("Method not implemented.");
190
+ }
191
+ async generateEmbeddings({}) {
192
+ throw new Error("Method not implemented.");
193
+ }
194
+ }
195
+ /**
196
+ * Update the conversation messages by combining existing conversation with new messages
197
+ * @param conversation Existing conversation messages
198
+ * @param messages New messages to add
199
+ * @returns Combined conversation
200
+ */
201
+ function updateConversation(conversation, messages) {
202
+ return (conversation || []).concat(messages);
203
+ }
204
+ /**
205
+ * Convert ResponseInputItem[] to Groq ChatCompletionMessageParam[]
206
+ */
207
+ function convertResponseItemsToGroqMessages(items) {
208
+ const messages = [];
209
+ for (const item of items) {
210
+ // Handle EasyInputMessage (has role and content)
211
+ if ('role' in item && 'content' in item) {
212
+ const msg = item;
213
+ const role = msg.role;
214
+ // Handle system/developer messages
215
+ if (role === 'system' || role === 'developer') {
216
+ let content;
217
+ if (typeof msg.content === 'string') {
218
+ content = msg.content;
219
+ }
220
+ else if (Array.isArray(msg.content)) {
221
+ content = msg.content
222
+ .filter((part) => part.type === 'input_text')
223
+ .map(part => part.text)
224
+ .join('\n');
225
+ }
226
+ else {
227
+ content = '';
228
+ }
229
+ messages.push({ role: 'system', content });
230
+ continue;
231
+ }
232
+ // Handle user messages
233
+ if (role === 'user') {
234
+ let content;
235
+ if (typeof msg.content === 'string') {
236
+ content = msg.content;
237
+ }
238
+ else if (Array.isArray(msg.content)) {
239
+ const parts = [];
240
+ for (const part of msg.content) {
241
+ if (part.type === 'input_text') {
242
+ parts.push({ type: 'text', text: part.text });
243
+ }
244
+ else if (part.type === 'input_image') {
245
+ const imgPart = part;
246
+ if (imgPart.image_url) {
247
+ parts.push({
248
+ type: 'image_url',
249
+ image_url: {
250
+ url: imgPart.image_url,
251
+ ...(imgPart.detail && { detail: imgPart.detail })
252
+ }
253
+ });
254
+ }
255
+ }
256
+ }
257
+ content = parts.length > 0 ? parts : '';
258
+ }
259
+ else {
260
+ content = '';
261
+ }
262
+ messages.push({ role: 'user', content });
263
+ continue;
264
+ }
265
+ // Handle assistant messages
266
+ if (role === 'assistant') {
267
+ let content;
268
+ if (typeof msg.content === 'string') {
269
+ content = msg.content;
270
+ }
271
+ else if (Array.isArray(msg.content)) {
272
+ content = msg.content
273
+ .filter((part) => part.type === 'input_text')
274
+ .map(part => part.text)
275
+ .join('\n') || null;
276
+ }
277
+ else {
278
+ content = null;
279
+ }
280
+ messages.push({ role: 'assistant', content });
281
+ continue;
282
+ }
283
+ }
284
+ // Handle function_call_output (tool response)
285
+ if ('type' in item && item.type === 'function_call_output') {
286
+ const output = item;
287
+ messages.push({
288
+ role: 'tool',
289
+ tool_call_id: output.call_id,
290
+ content: typeof output.output === 'string' ? output.output : JSON.stringify(output.output),
291
+ });
292
+ continue;
293
+ }
294
+ // Handle function_call (assistant tool call)
295
+ if ('type' in item && item.type === 'function_call') {
296
+ const call = item;
297
+ // Groq expects tool_calls in assistant message, but we handle them separately
298
+ // This is a simplification - in practice tool_calls come from model responses
299
+ messages.push({
300
+ role: 'assistant',
301
+ content: null,
302
+ tool_calls: [{
303
+ id: call.call_id,
304
+ type: 'function',
305
+ function: {
306
+ name: call.name,
307
+ arguments: call.arguments,
308
+ }
309
+ }]
310
+ });
311
+ continue;
312
+ }
313
+ }
314
+ return messages;
315
+ }
316
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/groq/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,197 @@
1
+ import { InferenceClient, } from "@huggingface/inference";
2
+ import { AIModelStatus, AbstractDriver, } from "@llumiverse/core";
3
+ import { transformAsyncIterator } from "@llumiverse/core/async";
4
+ import { FetchClient } from "@vertesia/api-fetch-client";
5
+ export class HuggingFaceIEDriver extends AbstractDriver {
6
+ static PROVIDER = "huggingface_ie";
7
+ provider = HuggingFaceIEDriver.PROVIDER;
8
+ service;
9
+ _executor;
10
+ constructor(options) {
11
+ super(options);
12
+ if (!options.endpoint_url) {
13
+ throw new Error(`Endpoint URL is required for ${this.provider}`);
14
+ }
15
+ this.service = new FetchClient(this.options.endpoint_url);
16
+ this.service.headers["Authorization"] = `Bearer ${this.options.apiKey}`;
17
+ }
18
+ async getModelURLEndpoint(modelId) {
19
+ const res = (await this.service.get(`/${modelId}`));
20
+ return {
21
+ url: res.status.url,
22
+ status: getStatus(res),
23
+ };
24
+ }
25
+ async getExecutor(model) {
26
+ if (!this._executor) {
27
+ const endpoint = await this.getModelURLEndpoint(model);
28
+ if (!endpoint.url)
29
+ throw new Error(`Endpoint URL not found for model ${model}`);
30
+ if (endpoint.status !== AIModelStatus.Available)
31
+ throw new Error(`Endpoint ${model} is not running - current status: ${endpoint.status}`);
32
+ // Use the new InferenceClient and bind it to the endpoint URL
33
+ this._executor = new InferenceClient(this.options.apiKey).endpoint(endpoint.url);
34
+ }
35
+ return this._executor;
36
+ }
37
+ async requestTextCompletionStream(prompt, options) {
38
+ if (options.model_options?._option_id !== "text-fallback") {
39
+ this.logger.warn({ options: options.model_options }, "Invalid model options");
40
+ }
41
+ options.model_options = options.model_options;
42
+ const executor = await this.getExecutor(options.model);
43
+ const req = executor.textGenerationStream({
44
+ inputs: prompt,
45
+ parameters: {
46
+ temperature: options.model_options?.temperature,
47
+ max_new_tokens: options.model_options?.max_tokens,
48
+ },
49
+ });
50
+ return transformAsyncIterator(req, (val) => {
51
+ //special like <s> are not part of the result
52
+ if (val.token.special)
53
+ return { result: [] };
54
+ let finish_reason = val.details?.finish_reason;
55
+ if (finish_reason === "eos_token") {
56
+ finish_reason = "stop";
57
+ }
58
+ return {
59
+ result: val.token.text ? [{ type: "text", value: val.token.text }] : [],
60
+ finish_reason: finish_reason,
61
+ token_usage: {
62
+ result: val.details?.generated_tokens ?? 0,
63
+ }
64
+ };
65
+ });
66
+ }
67
+ async requestTextCompletion(prompt, options) {
68
+ if (options.model_options?._option_id !== "text-fallback") {
69
+ this.logger.warn({ options: options.model_options }, "Invalid model options");
70
+ }
71
+ options.model_options = options.model_options;
72
+ const executor = await this.getExecutor(options.model);
73
+ const res = await executor.textGeneration({
74
+ inputs: prompt,
75
+ parameters: {
76
+ temperature: options.model_options?.temperature,
77
+ max_new_tokens: options.model_options?.max_tokens,
78
+ },
79
+ });
80
+ let finish_reason = res.details?.finish_reason;
81
+ if (finish_reason === "eos_token") {
82
+ finish_reason = "stop";
83
+ }
84
+ return {
85
+ result: [{ type: "text", value: res.generated_text }],
86
+ finish_reason: finish_reason,
87
+ token_usage: {
88
+ result: res.details?.generated_tokens
89
+ },
90
+ original_response: options.include_original_response ? res : undefined,
91
+ };
92
+ }
93
+ // ============== management API ==============
94
+ async listModels() {
95
+ const res = await this.service.get("/");
96
+ const hfModels = res.items;
97
+ if (!hfModels || !hfModels.length)
98
+ return [];
99
+ const models = hfModels.map((model) => ({
100
+ id: model.name,
101
+ name: `${model.name} [${model.model.repository}:${model.model.task}]`,
102
+ provider: this.provider,
103
+ tags: [model.model.task],
104
+ status: getStatus(model),
105
+ }));
106
+ return models;
107
+ }
108
+ async validateConnection() {
109
+ try {
110
+ await this.service.get("/models");
111
+ return true;
112
+ }
113
+ catch (error) {
114
+ return false;
115
+ }
116
+ }
117
+ async generateEmbeddings() {
118
+ throw new Error("Method not implemented.");
119
+ }
120
+ }
121
+ //get status from HF status
122
+ function getStatus(hfModel) {
123
+ //[ pending, initializing, updating, updateFailed, running, paused, failed, scaledToZero ]
124
+ switch (hfModel.status.state) {
125
+ case "running":
126
+ return AIModelStatus.Available;
127
+ case "initializing":
128
+ return AIModelStatus.Pending;
129
+ case "updating":
130
+ return AIModelStatus.Pending;
131
+ case "updateFailed":
132
+ return AIModelStatus.Unavailable;
133
+ case "paused":
134
+ return AIModelStatus.Stopped;
135
+ case "failed":
136
+ return AIModelStatus.Unavailable;
137
+ case "scaledToZero":
138
+ return AIModelStatus.Available;
139
+ default:
140
+ return AIModelStatus.Unknown;
141
+ }
142
+ }
143
+ /*
144
+ Example of model returned by the API
145
+ {
146
+ "items": [
147
+ {
148
+ "accountId": "string",
149
+ "compute": {
150
+ "accelerator": "cpu",
151
+ "instanceSize": "large",
152
+ "instanceType": "c6i",
153
+ "scaling": {
154
+ "maxReplica": 8,
155
+ "minReplica": 2
156
+ }
157
+ },
158
+ "model": {
159
+ "framework": "custom",
160
+ "image": {
161
+ "huggingface": {}
162
+ },
163
+ "repository": "gpt2",
164
+ "revision": "6c0e6080953db56375760c0471a8c5f2929baf11",
165
+ "task": "text-classification"
166
+ },
167
+ "name": "my-endpoint",
168
+ "provider": {
169
+ "region": "us-east-1",
170
+ "vendor": "aws"
171
+ },
172
+ "status": {
173
+ "createdAt": "2023-10-19T05:04:17.305Z",
174
+ "createdBy": {
175
+ "id": "string",
176
+ "name": "string"
177
+ },
178
+ "message": "Endpoint is ready",
179
+ "private": {
180
+ "serviceName": "string"
181
+ },
182
+ "readyReplica": 2,
183
+ "state": "pending",
184
+ "targetReplica": 4,
185
+ "updatedAt": "2023-10-19T05:04:17.305Z",
186
+ "updatedBy": {
187
+ "id": "string",
188
+ "name": "string"
189
+ },
190
+ "url": "https://endpoint-id.region.vendor.endpoints.huggingface.cloud"
191
+ },
192
+ "type": "public"
193
+ }
194
+ ]
195
+ }
196
+ */
197
+ //# sourceMappingURL=huggingface_ie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"huggingface_ie.js","sourceRoot":"","sources":["../../src/huggingface_ie.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export * from "./azure/azure_foundry.js";
2
+ export * from "./bedrock/index.js";
3
+ export * from "./groq/index.js";
4
+ export * from "./huggingface_ie.js";
5
+ export * from "./mistral/index.js";
6
+ export * from "./openai/azure_openai.js";
7
+ export * from "./openai/openai.js";
8
+ export * from "./openai/openai_compatible.js";
9
+ export * from "./replicate.js";
10
+ export * from "./test-driver/index.js";
11
+ export * from "./togetherai/index.js";
12
+ export * from "./vertexai/index.js";
13
+ export * from "./watsonx/index.js";
14
+ export * from "./xai/index.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC"}