@llumiverse/drivers 0.8.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 (164) hide show
  1. package/lib/cjs/bedrock/index.js +338 -0
  2. package/lib/cjs/bedrock/index.js.map +1 -0
  3. package/lib/cjs/bedrock/s3.js +61 -0
  4. package/lib/cjs/bedrock/s3.js.map +1 -0
  5. package/lib/cjs/huggingface_ie.js +181 -0
  6. package/lib/cjs/huggingface_ie.js.map +1 -0
  7. package/lib/cjs/index.js +24 -0
  8. package/lib/cjs/index.js.map +1 -0
  9. package/lib/cjs/openai.js +205 -0
  10. package/lib/cjs/openai.js.map +1 -0
  11. package/lib/cjs/package.json +3 -0
  12. package/lib/cjs/replicate.js +290 -0
  13. package/lib/cjs/replicate.js.map +1 -0
  14. package/lib/cjs/test/TestErrorCompletionStream.js +20 -0
  15. package/lib/cjs/test/TestErrorCompletionStream.js.map +1 -0
  16. package/lib/cjs/test/TestValidationErrorCompletionStream.js +24 -0
  17. package/lib/cjs/test/TestValidationErrorCompletionStream.js.map +1 -0
  18. package/lib/cjs/test/index.js +109 -0
  19. package/lib/cjs/test/index.js.map +1 -0
  20. package/lib/cjs/test/utils.js +31 -0
  21. package/lib/cjs/test/utils.js.map +1 -0
  22. package/lib/cjs/togetherai/index.js +92 -0
  23. package/lib/cjs/togetherai/index.js.map +1 -0
  24. package/lib/cjs/togetherai/interfaces.js +3 -0
  25. package/lib/cjs/togetherai/interfaces.js.map +1 -0
  26. package/lib/cjs/vertexai/debug.js +13 -0
  27. package/lib/cjs/vertexai/debug.js.map +1 -0
  28. package/lib/cjs/vertexai/index.js +80 -0
  29. package/lib/cjs/vertexai/index.js.map +1 -0
  30. package/lib/cjs/vertexai/models/codey-chat.js +65 -0
  31. package/lib/cjs/vertexai/models/codey-chat.js.map +1 -0
  32. package/lib/cjs/vertexai/models/codey-text.js +35 -0
  33. package/lib/cjs/vertexai/models/codey-text.js.map +1 -0
  34. package/lib/cjs/vertexai/models/gemini.js +140 -0
  35. package/lib/cjs/vertexai/models/gemini.js.map +1 -0
  36. package/lib/cjs/vertexai/models/palm-model-base.js +65 -0
  37. package/lib/cjs/vertexai/models/palm-model-base.js.map +1 -0
  38. package/lib/cjs/vertexai/models/palm2-chat.js +65 -0
  39. package/lib/cjs/vertexai/models/palm2-chat.js.map +1 -0
  40. package/lib/cjs/vertexai/models/palm2-text.js +35 -0
  41. package/lib/cjs/vertexai/models/palm2-text.js.map +1 -0
  42. package/lib/cjs/vertexai/models.js +93 -0
  43. package/lib/cjs/vertexai/models.js.map +1 -0
  44. package/lib/cjs/vertexai/utils/prompts.js +52 -0
  45. package/lib/cjs/vertexai/utils/prompts.js.map +1 -0
  46. package/lib/cjs/vertexai/utils/tensor.js +87 -0
  47. package/lib/cjs/vertexai/utils/tensor.js.map +1 -0
  48. package/lib/esm/bedrock/index.js +331 -0
  49. package/lib/esm/bedrock/index.js.map +1 -0
  50. package/lib/esm/bedrock/s3.js +53 -0
  51. package/lib/esm/bedrock/s3.js.map +1 -0
  52. package/lib/esm/huggingface_ie.js +177 -0
  53. package/lib/esm/huggingface_ie.js.map +1 -0
  54. package/lib/esm/index.js +8 -0
  55. package/lib/esm/index.js.map +1 -0
  56. package/lib/esm/openai.js +198 -0
  57. package/lib/esm/openai.js.map +1 -0
  58. package/lib/esm/replicate.js +283 -0
  59. package/lib/esm/replicate.js.map +1 -0
  60. package/lib/esm/test/TestErrorCompletionStream.js +16 -0
  61. package/lib/esm/test/TestErrorCompletionStream.js.map +1 -0
  62. package/lib/esm/test/TestValidationErrorCompletionStream.js +20 -0
  63. package/lib/esm/test/TestValidationErrorCompletionStream.js.map +1 -0
  64. package/lib/esm/test/index.js +91 -0
  65. package/lib/esm/test/index.js.map +1 -0
  66. package/lib/esm/test/utils.js +25 -0
  67. package/lib/esm/test/utils.js.map +1 -0
  68. package/lib/esm/togetherai/index.js +88 -0
  69. package/lib/esm/togetherai/index.js.map +1 -0
  70. package/lib/esm/togetherai/interfaces.js +2 -0
  71. package/lib/esm/togetherai/interfaces.js.map +1 -0
  72. package/lib/esm/vertexai/debug.js +6 -0
  73. package/lib/esm/vertexai/debug.js.map +1 -0
  74. package/lib/esm/vertexai/index.js +76 -0
  75. package/lib/esm/vertexai/index.js.map +1 -0
  76. package/lib/esm/vertexai/models/codey-chat.js +61 -0
  77. package/lib/esm/vertexai/models/codey-chat.js.map +1 -0
  78. package/lib/esm/vertexai/models/codey-text.js +31 -0
  79. package/lib/esm/vertexai/models/codey-text.js.map +1 -0
  80. package/lib/esm/vertexai/models/gemini.js +136 -0
  81. package/lib/esm/vertexai/models/gemini.js.map +1 -0
  82. package/lib/esm/vertexai/models/palm-model-base.js +61 -0
  83. package/lib/esm/vertexai/models/palm-model-base.js.map +1 -0
  84. package/lib/esm/vertexai/models/palm2-chat.js +61 -0
  85. package/lib/esm/vertexai/models/palm2-chat.js.map +1 -0
  86. package/lib/esm/vertexai/models/palm2-text.js +31 -0
  87. package/lib/esm/vertexai/models/palm2-text.js.map +1 -0
  88. package/lib/esm/vertexai/models.js +87 -0
  89. package/lib/esm/vertexai/models.js.map +1 -0
  90. package/lib/esm/vertexai/utils/prompts.js +47 -0
  91. package/lib/esm/vertexai/utils/prompts.js.map +1 -0
  92. package/lib/esm/vertexai/utils/tensor.js +82 -0
  93. package/lib/esm/vertexai/utils/tensor.js.map +1 -0
  94. package/lib/types/bedrock/index.d.ts +88 -0
  95. package/lib/types/bedrock/index.d.ts.map +1 -0
  96. package/lib/types/bedrock/s3.d.ts +20 -0
  97. package/lib/types/bedrock/s3.d.ts.map +1 -0
  98. package/lib/types/huggingface_ie.d.ts +36 -0
  99. package/lib/types/huggingface_ie.d.ts.map +1 -0
  100. package/lib/types/index.d.ts +8 -0
  101. package/lib/types/index.d.ts.map +1 -0
  102. package/lib/types/openai.d.ts +36 -0
  103. package/lib/types/openai.d.ts.map +1 -0
  104. package/lib/types/replicate.d.ts +52 -0
  105. package/lib/types/replicate.d.ts.map +1 -0
  106. package/lib/types/test/TestErrorCompletionStream.d.ts +9 -0
  107. package/lib/types/test/TestErrorCompletionStream.d.ts.map +1 -0
  108. package/lib/types/test/TestValidationErrorCompletionStream.d.ts +9 -0
  109. package/lib/types/test/TestValidationErrorCompletionStream.d.ts.map +1 -0
  110. package/lib/types/test/index.d.ts +27 -0
  111. package/lib/types/test/index.d.ts.map +1 -0
  112. package/lib/types/test/utils.d.ts +5 -0
  113. package/lib/types/test/utils.d.ts.map +1 -0
  114. package/lib/types/togetherai/index.d.ts +23 -0
  115. package/lib/types/togetherai/index.d.ts.map +1 -0
  116. package/lib/types/togetherai/interfaces.d.ts +81 -0
  117. package/lib/types/togetherai/interfaces.d.ts.map +1 -0
  118. package/lib/types/vertexai/debug.d.ts +2 -0
  119. package/lib/types/vertexai/debug.d.ts.map +1 -0
  120. package/lib/types/vertexai/index.d.ts +26 -0
  121. package/lib/types/vertexai/index.d.ts.map +1 -0
  122. package/lib/types/vertexai/models/codey-chat.d.ts +51 -0
  123. package/lib/types/vertexai/models/codey-chat.d.ts.map +1 -0
  124. package/lib/types/vertexai/models/codey-text.d.ts +39 -0
  125. package/lib/types/vertexai/models/codey-text.d.ts.map +1 -0
  126. package/lib/types/vertexai/models/gemini.d.ts +11 -0
  127. package/lib/types/vertexai/models/gemini.d.ts.map +1 -0
  128. package/lib/types/vertexai/models/palm-model-base.d.ts +47 -0
  129. package/lib/types/vertexai/models/palm-model-base.d.ts.map +1 -0
  130. package/lib/types/vertexai/models/palm2-chat.d.ts +61 -0
  131. package/lib/types/vertexai/models/palm2-chat.d.ts.map +1 -0
  132. package/lib/types/vertexai/models/palm2-text.d.ts +39 -0
  133. package/lib/types/vertexai/models/palm2-text.d.ts.map +1 -0
  134. package/lib/types/vertexai/models.d.ts +14 -0
  135. package/lib/types/vertexai/models.d.ts.map +1 -0
  136. package/lib/types/vertexai/utils/prompts.d.ts +20 -0
  137. package/lib/types/vertexai/utils/prompts.d.ts.map +1 -0
  138. package/lib/types/vertexai/utils/tensor.d.ts +6 -0
  139. package/lib/types/vertexai/utils/tensor.d.ts.map +1 -0
  140. package/package.json +72 -0
  141. package/src/bedrock/index.ts +456 -0
  142. package/src/bedrock/s3.ts +62 -0
  143. package/src/huggingface_ie.ts +269 -0
  144. package/src/index.ts +7 -0
  145. package/src/openai.ts +254 -0
  146. package/src/replicate.ts +333 -0
  147. package/src/test/TestErrorCompletionStream.ts +17 -0
  148. package/src/test/TestValidationErrorCompletionStream.ts +21 -0
  149. package/src/test/index.ts +102 -0
  150. package/src/test/utils.ts +28 -0
  151. package/src/togetherai/index.ts +105 -0
  152. package/src/togetherai/interfaces.ts +88 -0
  153. package/src/vertexai/README.md +257 -0
  154. package/src/vertexai/debug.ts +6 -0
  155. package/src/vertexai/index.ts +99 -0
  156. package/src/vertexai/models/codey-chat.ts +115 -0
  157. package/src/vertexai/models/codey-text.ts +69 -0
  158. package/src/vertexai/models/gemini.ts +152 -0
  159. package/src/vertexai/models/palm-model-base.ts +122 -0
  160. package/src/vertexai/models/palm2-chat.ts +119 -0
  161. package/src/vertexai/models/palm2-text.ts +69 -0
  162. package/src/vertexai/models.ts +104 -0
  163. package/src/vertexai/utils/prompts.ts +66 -0
  164. package/src/vertexai/utils/tensor.ts +82 -0
@@ -0,0 +1,338 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BedrockDriver = void 0;
7
+ const client_bedrock_1 = require("@aws-sdk/client-bedrock");
8
+ const client_bedrock_runtime_1 = require("@aws-sdk/client-bedrock-runtime");
9
+ const client_s3_1 = require("@aws-sdk/client-s3");
10
+ const core_1 = require("@llumiverse/core");
11
+ const async_1 = require("@llumiverse/core/async");
12
+ const mnemonist_1 = __importDefault(require("mnemonist"));
13
+ const s3_js_1 = require("./s3.js");
14
+ const { LRUCache } = mnemonist_1.default;
15
+ const supportStreamingCache = new LRUCache(4096);
16
+ class BedrockDriver extends core_1.AbstractDriver {
17
+ provider = core_1.BuiltinProviders.bedrock;
18
+ _executor;
19
+ _service;
20
+ defaultFormat = core_1.PromptFormats.genericTextLLM;
21
+ constructor(options) {
22
+ super(options);
23
+ if (!options.region) {
24
+ throw new Error("No region found. Set the region in the environment's endpoint URL.");
25
+ }
26
+ }
27
+ getExecutor() {
28
+ if (!this._executor) {
29
+ this._executor = new client_bedrock_runtime_1.BedrockRuntime({
30
+ region: this.options.region,
31
+ credentials: this.options.credentials,
32
+ });
33
+ }
34
+ return this._executor;
35
+ }
36
+ getService() {
37
+ if (!this._service) {
38
+ this._service = new client_bedrock_1.Bedrock({
39
+ region: this.options.region,
40
+ credentials: this.options.credentials,
41
+ });
42
+ }
43
+ return this._service;
44
+ }
45
+ extractDataFromResponse(prompt, response) {
46
+ const decoder = new TextDecoder();
47
+ const body = decoder.decode(response.body);
48
+ const result = JSON.parse(body);
49
+ const getText = () => {
50
+ if (result.completion) {
51
+ return result.completion;
52
+ }
53
+ else if (result.generation) {
54
+ return result.generation;
55
+ }
56
+ else if (result.generations) {
57
+ return result.generations[0].text;
58
+ }
59
+ else if (result.completions) {
60
+ //A21
61
+ return result.completions[0].data?.text;
62
+ }
63
+ else {
64
+ result.toString();
65
+ }
66
+ };
67
+ const text = getText();
68
+ return {
69
+ result: text,
70
+ token_usage: {
71
+ result: text?.length,
72
+ prompt: prompt.length,
73
+ total: text?.length + prompt.length,
74
+ }
75
+ };
76
+ }
77
+ async requestCompletion(prompt, options) {
78
+ const payload = this.preparePayload(prompt, options);
79
+ const executor = this.getExecutor();
80
+ const res = await executor.invokeModel({
81
+ modelId: options.model,
82
+ contentType: "application/json",
83
+ body: JSON.stringify(payload),
84
+ });
85
+ return this.extractDataFromResponse(prompt, res);
86
+ }
87
+ async canStream(options) {
88
+ let canStream = supportStreamingCache.get(options.model);
89
+ if (canStream == null) {
90
+ const response = await this.getService().getFoundationModel({
91
+ modelIdentifier: options.model
92
+ });
93
+ canStream = response.modelDetails?.responseStreamingSupported ?? false;
94
+ supportStreamingCache.set(options.model, canStream);
95
+ }
96
+ return canStream;
97
+ }
98
+ async requestCompletionStream(prompt, options) {
99
+ const payload = this.preparePayload(prompt, options);
100
+ const executor = this.getExecutor();
101
+ return executor.invokeModelWithResponseStream({
102
+ modelId: options.model,
103
+ contentType: "application/json",
104
+ body: JSON.stringify(payload),
105
+ }).then((res) => {
106
+ if (!res.body) {
107
+ throw new Error("Body not found");
108
+ }
109
+ const decoder = new TextDecoder();
110
+ return (0, async_1.transformAsyncIterator)(res.body, (stream) => {
111
+ const segment = JSON.parse(decoder.decode(stream.chunk?.bytes));
112
+ if (segment.completion) {
113
+ return segment.completion;
114
+ }
115
+ else if (segment.completions) {
116
+ return segment.completions[0].data?.text;
117
+ }
118
+ else if (segment.generation) {
119
+ return segment.generation;
120
+ }
121
+ else if (segment.generations) {
122
+ return segment.generations[0].text;
123
+ }
124
+ else {
125
+ segment.toString();
126
+ }
127
+ });
128
+ }).catch((err) => {
129
+ this.logger.error("[Bedrock] Failed to stream", err);
130
+ throw err;
131
+ });
132
+ }
133
+ preparePayload(prompt, options) {
134
+ //split arn on / should give provider
135
+ //TODO: check if works with custom models
136
+ //const provider = options.model.split("/")[0];
137
+ const contains = (str, substr) => str.indexOf(substr) !== -1;
138
+ if (contains(options.model, "meta")) {
139
+ return {
140
+ prompt,
141
+ temperature: options.temperature,
142
+ max_gen_len: options.max_tokens,
143
+ };
144
+ }
145
+ else if (contains(options.model, "anthropic")) {
146
+ return {
147
+ prompt: prompt,
148
+ temperature: options.temperature,
149
+ max_tokens_to_sample: options.max_tokens ?? 256,
150
+ };
151
+ }
152
+ else if (contains(options.model, "ai21")) {
153
+ return {
154
+ prompt: prompt,
155
+ temperature: options.temperature,
156
+ maxTokens: options.max_tokens,
157
+ };
158
+ }
159
+ else if (contains(options.model, "cohere")) {
160
+ return {
161
+ prompt: prompt,
162
+ temperature: options.temperature,
163
+ max_tokens: options.max_tokens,
164
+ p: 0.9,
165
+ };
166
+ }
167
+ else if (contains(options.model, "amazon")) {
168
+ return {
169
+ inputText: prompt,
170
+ textGenerationConfig: {
171
+ temperature: options.temperature,
172
+ topP: 0.9,
173
+ maxTokenCount: options.max_tokens,
174
+ stopSequences: ["\n"],
175
+ },
176
+ };
177
+ }
178
+ else {
179
+ throw new Error("Cannot prepare payload for unknown provider: " + options.model);
180
+ }
181
+ }
182
+ async startTraining(dataset, options) {
183
+ //convert options.params to Record<string, string>
184
+ const params = {};
185
+ for (const [key, value] of Object.entries(options.params || {})) {
186
+ params[key] = String(value);
187
+ }
188
+ if (!this.options.training_bucket) {
189
+ throw new Error("Training cannot nbe used since the 'training_bucket' property was not specified in driver options");
190
+ }
191
+ const s3 = new client_s3_1.S3Client({ region: this.options.region, credentials: this.options.credentials });
192
+ const upload = await (0, s3_js_1.forceUploadFile)(s3, dataset.getStream(), this.options.training_bucket, dataset.name);
193
+ const service = this.getService();
194
+ const response = await service.send(new client_bedrock_1.CreateModelCustomizationJobCommand({
195
+ jobName: options.name + "-job",
196
+ customModelName: options.name,
197
+ roleArn: this.options.training_role_arn || undefined,
198
+ baseModelIdentifier: options.model,
199
+ clientRequestToken: "llumiverse-" + Date.now(),
200
+ trainingDataConfig: {
201
+ s3Uri: `s3://${upload.Bucket}/${upload.Key}`,
202
+ },
203
+ outputDataConfig: undefined,
204
+ hyperParameters: params,
205
+ //TODO not supported?
206
+ //customizationType: "FINE_TUNING",
207
+ }));
208
+ const job = await service.send(new client_bedrock_1.GetModelCustomizationJobCommand({
209
+ jobIdentifier: response.jobArn
210
+ }));
211
+ return jobInfo(job, response.jobArn);
212
+ }
213
+ async cancelTraining(jobId) {
214
+ const service = this.getService();
215
+ await service.send(new client_bedrock_1.StopModelCustomizationJobCommand({
216
+ jobIdentifier: jobId
217
+ }));
218
+ const job = await service.send(new client_bedrock_1.GetModelCustomizationJobCommand({
219
+ jobIdentifier: jobId
220
+ }));
221
+ return jobInfo(job, jobId);
222
+ }
223
+ async getTrainingJob(jobId) {
224
+ const service = this.getService();
225
+ const job = await service.send(new client_bedrock_1.GetModelCustomizationJobCommand({
226
+ jobIdentifier: jobId
227
+ }));
228
+ return jobInfo(job, jobId);
229
+ }
230
+ // ===================== management API ==================
231
+ async validateConnection() {
232
+ const service = this.getService();
233
+ this.logger.debug("[Bedrock] validating connection", service.config.credentials.name);
234
+ //return true as if the client has been initialized, it means the connection is valid
235
+ return true;
236
+ }
237
+ async listTrainableModels() {
238
+ this.logger.debug("[Bedrock] listing trainable models");
239
+ return this._listModels(m => m.customizationsSupported ? m.customizationsSupported.includes("FINE_TUNING") : false);
240
+ }
241
+ async listModels(_params) {
242
+ this.logger.debug("[Bedrock] listing models");
243
+ // exclude trainable models since they are not executable
244
+ const filter = (m) => m.inferenceTypesSupported?.includes("ON_DEMAND") ?? false;
245
+ return this._listModels(filter);
246
+ }
247
+ async _listModels(foundationFilter) {
248
+ const service = this.getService();
249
+ const [foundationals, customs] = await Promise.all([
250
+ service.listFoundationModels({}),
251
+ service.listCustomModels({}),
252
+ ]);
253
+ if (!foundationals.modelSummaries) {
254
+ throw new Error("Foundation models not found");
255
+ }
256
+ let fmodels = foundationals.modelSummaries || [];
257
+ if (foundationFilter) {
258
+ fmodels = fmodels.filter(foundationFilter);
259
+ }
260
+ const aimodels = fmodels.map((m) => {
261
+ if (!m.modelId) {
262
+ throw new Error("modelId not found");
263
+ }
264
+ const model = {
265
+ id: m.modelArn ?? m.modelId,
266
+ name: `${m.providerName} ${m.modelName}`,
267
+ provider: this.provider,
268
+ description: `id: ${m.modelId}`,
269
+ owner: m.providerName,
270
+ canStream: m.responseStreamingSupported ?? false,
271
+ tags: m.outputModalities ?? [],
272
+ };
273
+ return model;
274
+ });
275
+ //add custom models
276
+ if (customs.modelSummaries) {
277
+ customs.modelSummaries.forEach((m) => {
278
+ if (!m.modelArn) {
279
+ throw new Error("Model ID not found");
280
+ }
281
+ const model = {
282
+ id: m.modelArn,
283
+ name: m.modelName ?? m.modelArn,
284
+ provider: this.provider,
285
+ description: `Custom model from ${m.baseModelName}`,
286
+ isCustom: true,
287
+ };
288
+ aimodels.push(model);
289
+ this.validateConnection;
290
+ });
291
+ }
292
+ return aimodels;
293
+ }
294
+ async generateEmbeddings(content, model = "amazon.titan-embed-text-v1") {
295
+ this.logger.info("[Bedrock] Generating embeddings with model " + model);
296
+ const executor = this.getExecutor();
297
+ const res = await executor.invokeModel({
298
+ modelId: model,
299
+ contentType: "text/plain",
300
+ body: content,
301
+ });
302
+ const decoder = new TextDecoder();
303
+ const body = decoder.decode(res.body);
304
+ const result = JSON.parse(body);
305
+ if (!result.embedding) {
306
+ throw new Error("Embeddings not found");
307
+ }
308
+ return result.embedding;
309
+ }
310
+ }
311
+ exports.BedrockDriver = BedrockDriver;
312
+ function jobInfo(job, jobId) {
313
+ const jobStatus = job.status;
314
+ let status = core_1.TrainingJobStatus.running;
315
+ let details;
316
+ if (jobStatus === client_bedrock_1.ModelCustomizationJobStatus.COMPLETED) {
317
+ status = core_1.TrainingJobStatus.succeeded;
318
+ }
319
+ else if (jobStatus === client_bedrock_1.ModelCustomizationJobStatus.FAILED) {
320
+ status = core_1.TrainingJobStatus.failed;
321
+ details = job.failureMessage || "error";
322
+ }
323
+ else if (jobStatus === client_bedrock_1.ModelCustomizationJobStatus.STOPPED) {
324
+ status = core_1.TrainingJobStatus.cancelled;
325
+ }
326
+ else {
327
+ status = core_1.TrainingJobStatus.running;
328
+ details = jobStatus;
329
+ }
330
+ job.baseModelArn;
331
+ return {
332
+ id: jobId,
333
+ model: job.outputModelArn,
334
+ status,
335
+ details
336
+ };
337
+ }
338
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bedrock/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.forceUploadFile = exports.uploadFile = exports.tryCreateBucket = exports.createBucket = exports.doesBucketExist = void 0;
4
+ const client_s3_1 = require("@aws-sdk/client-s3");
5
+ const lib_storage_1 = require("@aws-sdk/lib-storage");
6
+ async function doesBucketExist(s3, bucketName) {
7
+ try {
8
+ await s3.send(new client_s3_1.HeadBucketCommand({ Bucket: bucketName }));
9
+ return true;
10
+ }
11
+ catch (err) {
12
+ if (err.name === 'NotFound') {
13
+ return false;
14
+ }
15
+ throw err;
16
+ }
17
+ }
18
+ exports.doesBucketExist = doesBucketExist;
19
+ function createBucket(s3, bucketName) {
20
+ return s3.send(new client_s3_1.CreateBucketCommand({
21
+ Bucket: bucketName
22
+ }));
23
+ }
24
+ exports.createBucket = createBucket;
25
+ async function tryCreateBucket(s3, bucketName) {
26
+ const exists = await doesBucketExist(s3, bucketName);
27
+ if (!exists) {
28
+ return createBucket(s3, bucketName);
29
+ }
30
+ }
31
+ exports.tryCreateBucket = tryCreateBucket;
32
+ async function uploadFile(s3, source, bucketName, file, onProgress) {
33
+ const upload = new lib_storage_1.Upload({
34
+ client: s3,
35
+ params: {
36
+ Bucket: bucketName,
37
+ Key: file,
38
+ Body: source,
39
+ }
40
+ });
41
+ onProgress && upload.on("httpUploadProgress", onProgress);
42
+ const result = await upload.done();
43
+ return result;
44
+ }
45
+ exports.uploadFile = uploadFile;
46
+ /**
47
+ * Create the bucket if not already exists and then upload the file.
48
+ * @param s3
49
+ * @param source
50
+ * @param bucketName
51
+ * @param file
52
+ * @param onProgress
53
+ * @returns
54
+ */
55
+ async function forceUploadFile(s3, source, bucketName, file, onProgress) {
56
+ // make sure the bucket exists
57
+ await tryCreateBucket(s3, bucketName);
58
+ return uploadFile(s3, source, bucketName, file, onProgress);
59
+ }
60
+ exports.forceUploadFile = forceUploadFile;
61
+ //# sourceMappingURL=s3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.js","sourceRoot":"","sources":["../../../src/bedrock/s3.ts"],"names":[],"mappings":";;;AAAA,kDAAsF;AACtF,sDAAwD;AAGjD,KAAK,UAAU,eAAe,CAAC,EAAY,EAAE,UAAkB;IAClE,IAAI,CAAC;QACD,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,6BAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,GAAG,CAAC;IACd,CAAC;AACL,CAAC;AAVD,0CAUC;AAED,SAAgB,YAAY,CAAC,EAAY,EAAE,UAAkB;IACzD,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,+BAAmB,CAAC;QACnC,MAAM,EAAE,UAAU;KACrB,CAAC,CAAC,CAAC;AACR,CAAC;AAJD,oCAIC;AAGM,KAAK,UAAU,eAAe,CAAC,EAAY,EAAE,UAAkB;IAClE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;AACL,CAAC;AALD,0CAKC;AAGM,KAAK,UAAU,UAAU,CAAC,EAAY,EAAE,MAAkC,EAAE,UAAkB,EAAE,IAAY,EAAE,UAAyC;IAE1J,MAAM,MAAM,GAAG,IAAI,oBAAM,CAAC;QACtB,MAAM,EAAE,EAAE;QACV,MAAM,EAAE;YACJ,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,MAAM;SACf;KACJ,CAAC,CAAC;IAEH,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC;AAClB,CAAC;AAfD,gCAeC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,eAAe,CAAC,EAAY,EAAE,MAAkC,EAAE,UAAkB,EAAE,IAAY,EAAE,UAAyC;IAC/J,8BAA8B;IAC9B,MAAM,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACtC,OAAO,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAChE,CAAC;AAJD,0CAIC"}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HuggingFaceIEDriver = void 0;
4
+ const core_1 = require("@llumiverse/core");
5
+ const async_1 = require("@llumiverse/core/async");
6
+ const inference_1 = require("@huggingface/inference");
7
+ const api_fetch_client_1 = require("api-fetch-client");
8
+ class HuggingFaceIEDriver extends core_1.AbstractDriver {
9
+ service;
10
+ provider = core_1.BuiltinProviders.huggingface_ie;
11
+ _executor;
12
+ defaultFormat = core_1.PromptFormats.genericTextLLM;
13
+ constructor(options) {
14
+ super(options);
15
+ if (!options.endpoint_url) {
16
+ throw new Error(`Endpoint URL is required for ${this.provider}`);
17
+ }
18
+ this.service = new api_fetch_client_1.FetchClient(this.options.endpoint_url);
19
+ this.service.headers["Authorization"] = `Bearer ${this.options.apiKey}`;
20
+ }
21
+ async getModelURLEndpoint(modelId) {
22
+ const res = (await this.service.get(`/${modelId}`));
23
+ return {
24
+ url: res.status.url,
25
+ status: getStatus(res),
26
+ };
27
+ }
28
+ async getExecutor(model) {
29
+ if (!this._executor) {
30
+ const endpoint = await this.getModelURLEndpoint(model);
31
+ if (!endpoint.url)
32
+ throw new Error(`Endpoint URL not found for model ${model}`);
33
+ if (endpoint.status !== core_1.AIModelStatus.Available)
34
+ throw new Error(`Endpoint ${model} is not running - current status: ${endpoint.status}`);
35
+ this._executor = new inference_1.HfInference(this.options.apiKey).endpoint(endpoint.url);
36
+ }
37
+ return this._executor;
38
+ }
39
+ async requestCompletionStream(prompt, options) {
40
+ const executor = await this.getExecutor(options.model);
41
+ const req = executor.textGenerationStream({
42
+ inputs: prompt,
43
+ parameters: {
44
+ temperature: options.temperature,
45
+ max_new_tokens: options.max_tokens,
46
+ },
47
+ });
48
+ return (0, async_1.transformAsyncIterator)(req, (val) => {
49
+ //special like <s> are not part of the result
50
+ if (val.token.special)
51
+ return "";
52
+ return val.token.text;
53
+ });
54
+ }
55
+ async requestCompletion(prompt, options) {
56
+ const executor = await this.getExecutor(options.model);
57
+ const res = await executor.textGeneration({
58
+ inputs: prompt,
59
+ parameters: {
60
+ temperature: options.temperature,
61
+ max_new_tokens: options.max_tokens,
62
+ },
63
+ });
64
+ return {
65
+ result: res.generated_text,
66
+ token_usage: {
67
+ result: res.generated_text.length,
68
+ prompt: prompt.length,
69
+ total: res.generated_text.length + prompt.length,
70
+ },
71
+ };
72
+ }
73
+ // ============== management API ==============
74
+ // Not implemented
75
+ async listTrainableModels() {
76
+ return [];
77
+ }
78
+ async listModels() {
79
+ const res = await this.service.get("/");
80
+ const hfModels = res.items;
81
+ const models = hfModels.map((model) => ({
82
+ id: model.name,
83
+ name: `${model.name} [${model.model.repository}:${model.model.task}]`,
84
+ provider: this.provider,
85
+ tags: [model.model.task],
86
+ status: getStatus(model),
87
+ }));
88
+ return models;
89
+ }
90
+ async validateConnection() {
91
+ try {
92
+ await this.service.get("/models");
93
+ return true;
94
+ }
95
+ catch (error) {
96
+ return false;
97
+ }
98
+ }
99
+ async generateEmbeddings(content, model) {
100
+ this.logger?.debug(`[Huggingface] Generating embeddings for ${content} on ${model}`);
101
+ throw new Error("Method not implemented.");
102
+ }
103
+ }
104
+ exports.HuggingFaceIEDriver = HuggingFaceIEDriver;
105
+ //get status from HF status
106
+ function getStatus(hfModel) {
107
+ //[ pending, initializing, updating, updateFailed, running, paused, failed, scaledToZero ]
108
+ switch (hfModel.status.state) {
109
+ case "running":
110
+ return core_1.AIModelStatus.Available;
111
+ case "initializing":
112
+ return core_1.AIModelStatus.Pending;
113
+ case "updating":
114
+ return core_1.AIModelStatus.Pending;
115
+ case "updateFailed":
116
+ return core_1.AIModelStatus.Unavailable;
117
+ case "paused":
118
+ return core_1.AIModelStatus.Stopped;
119
+ case "failed":
120
+ return core_1.AIModelStatus.Unavailable;
121
+ case "scaledToZero":
122
+ return core_1.AIModelStatus.Available;
123
+ default:
124
+ return core_1.AIModelStatus.Unknown;
125
+ }
126
+ }
127
+ /*
128
+ Example of model returned by the API
129
+ {
130
+ "items": [
131
+ {
132
+ "accountId": "string",
133
+ "compute": {
134
+ "accelerator": "cpu",
135
+ "instanceSize": "large",
136
+ "instanceType": "c6i",
137
+ "scaling": {
138
+ "maxReplica": 8,
139
+ "minReplica": 2
140
+ }
141
+ },
142
+ "model": {
143
+ "framework": "custom",
144
+ "image": {
145
+ "huggingface": {}
146
+ },
147
+ "repository": "gpt2",
148
+ "revision": "6c0e6080953db56375760c0471a8c5f2929baf11",
149
+ "task": "text-classification"
150
+ },
151
+ "name": "my-endpoint",
152
+ "provider": {
153
+ "region": "us-east-1",
154
+ "vendor": "aws"
155
+ },
156
+ "status": {
157
+ "createdAt": "2023-10-19T05:04:17.305Z",
158
+ "createdBy": {
159
+ "id": "string",
160
+ "name": "string"
161
+ },
162
+ "message": "Endpoint is ready",
163
+ "private": {
164
+ "serviceName": "string"
165
+ },
166
+ "readyReplica": 2,
167
+ "state": "pending",
168
+ "targetReplica": 4,
169
+ "updatedAt": "2023-10-19T05:04:17.305Z",
170
+ "updatedBy": {
171
+ "id": "string",
172
+ "name": "string"
173
+ },
174
+ "url": "https://endpoint-id.region.vendor.endpoints.huggingface.cloud"
175
+ },
176
+ "type": "public"
177
+ }
178
+ ]
179
+ }
180
+ */
181
+ //# 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,24 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./bedrock/index.js"), exports);
18
+ __exportStar(require("./huggingface_ie.js"), exports);
19
+ __exportStar(require("./openai.js"), exports);
20
+ __exportStar(require("./replicate.js"), exports);
21
+ __exportStar(require("./vertexai/index.js"), exports);
22
+ __exportStar(require("./togetherai/index.js"), exports);
23
+ __exportStar(require("./test/index.js"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,sDAAoC;AACpC,8CAA4B;AAC5B,iDAA+B;AAC/B,sDAAoC;AACpC,wDAAsC;AACtC,kDAAgC"}