@llumiverse/drivers 0.25.0 → 0.25.1

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,109 @@
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
+ exports.TestDriver = exports.TestDriverModels = void 0;
18
+ const core_1 = require("@llumiverse/core");
19
+ const TestErrorCompletionStream_js_1 = require("./TestErrorCompletionStream.js");
20
+ const TestValidationErrorCompletionStream_js_1 = require("./TestValidationErrorCompletionStream.js");
21
+ const utils_js_1 = require("./utils.js");
22
+ __exportStar(require("./TestErrorCompletionStream.js"), exports);
23
+ __exportStar(require("./TestValidationErrorCompletionStream.js"), exports);
24
+ var TestDriverModels;
25
+ (function (TestDriverModels) {
26
+ TestDriverModels["executionError"] = "execution-error";
27
+ TestDriverModels["validationError"] = "validation-error";
28
+ })(TestDriverModels || (exports.TestDriverModels = TestDriverModels = {}));
29
+ class TestDriver {
30
+ provider = "test";
31
+ createTrainingPrompt() {
32
+ throw new Error("Method not implemented.");
33
+ }
34
+ startTraining() {
35
+ throw new Error("Method not implemented.");
36
+ }
37
+ cancelTraining() {
38
+ throw new Error("Method not implemented.");
39
+ }
40
+ getTrainingJob(_jobId) {
41
+ throw new Error("Method not implemented.");
42
+ }
43
+ async createPrompt(segments, _opts) {
44
+ return segments;
45
+ }
46
+ execute(segments, options) {
47
+ switch (options.model) {
48
+ case TestDriverModels.executionError:
49
+ return this.executeError(segments, options);
50
+ case TestDriverModels.validationError:
51
+ return this.executeValidationError(segments, options);
52
+ default:
53
+ (0, utils_js_1.throwError)("[test driver] Unknown model: " + options.model, segments);
54
+ }
55
+ }
56
+ async stream(segments, options) {
57
+ switch (options.model) {
58
+ case TestDriverModels.executionError:
59
+ return new TestErrorCompletionStream_js_1.TestErrorCompletionStream(segments, options);
60
+ case TestDriverModels.validationError:
61
+ return new TestValidationErrorCompletionStream_js_1.TestValidationErrorCompletionStream(segments, options);
62
+ default:
63
+ (0, utils_js_1.throwError)("[test driver] Unknown model: " + options.model, segments);
64
+ }
65
+ }
66
+ async listTrainableModels() {
67
+ return [];
68
+ }
69
+ async listModels() {
70
+ return [
71
+ {
72
+ id: TestDriverModels.executionError,
73
+ name: "Execution Error",
74
+ type: core_1.ModelType.Test,
75
+ provider: this.provider,
76
+ status: core_1.AIModelStatus.Available,
77
+ description: "Test execution errors",
78
+ tags: [],
79
+ },
80
+ {
81
+ id: TestDriverModels.validationError,
82
+ name: "Validation Error",
83
+ type: core_1.ModelType.Test,
84
+ provider: this.provider,
85
+ status: core_1.AIModelStatus.Available,
86
+ description: "Test validation errors",
87
+ tags: [],
88
+ },
89
+ ];
90
+ }
91
+ validateConnection() {
92
+ throw new Error("Method not implemented.");
93
+ }
94
+ generateEmbeddings() {
95
+ throw new Error("Method not implemented.");
96
+ }
97
+ // ============== execution error ==================
98
+ async executeError(segments, _options) {
99
+ await (0, utils_js_1.sleep)(1000);
100
+ (0, utils_js_1.throwError)("Testing stream completion error.", segments);
101
+ }
102
+ // ============== validation error ==================
103
+ async executeValidationError(segments, _options) {
104
+ await (0, utils_js_1.sleep)(3000);
105
+ return (0, utils_js_1.createValidationErrorCompletion)(segments);
106
+ }
107
+ }
108
+ exports.TestDriver = TestDriver;
109
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test-driver/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.throwError = throwError;
4
+ exports.createValidationErrorCompletion = createValidationErrorCompletion;
5
+ exports.sleep = sleep;
6
+ function throwError(message, prompt) {
7
+ const err = new Error(message);
8
+ err.prompt = prompt;
9
+ throw err;
10
+ }
11
+ function createValidationErrorCompletion(segments) {
12
+ return {
13
+ result: [{ type: "text", value: "An invalid result" }],
14
+ prompt: segments,
15
+ execution_time: 3000,
16
+ error: {
17
+ code: "validation_error",
18
+ message: "Result cannot be validated!",
19
+ },
20
+ token_usage: {
21
+ result: 10,
22
+ prompt: 10,
23
+ total: 20,
24
+ },
25
+ };
26
+ }
27
+ function sleep(ms) {
28
+ return new Promise(resolve => setTimeout(resolve, ms));
29
+ }
30
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/test-driver/utils.ts"],"names":[],"mappings":";;AAEA,gCAIC;AAED,0EAeC;AAED,sBAEC;AAzBD,SAAgB,UAAU,CAAC,OAAe,EAAE,MAAuB;IAC/D,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,GAAW,CAAC,MAAM,GAAG,MAAM,CAAC;IAC7B,MAAM,GAAG,CAAC;AACd,CAAC;AAED,SAAgB,+BAA+B,CAAC,QAAyB;IACrE,OAAO;QACH,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;QACtD,MAAM,EAAE,QAAQ;QAChB,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE;YACH,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,6BAA6B;SACzC;QACD,WAAW,EAAE;YACT,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;SACZ;KACkC,CAAC;AAC5C,CAAC;AAED,SAAgB,KAAK,CAAC,EAAU;IAC5B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TogetherAIDriver = void 0;
4
+ const core_1 = require("@llumiverse/core");
5
+ const async_1 = require("@llumiverse/core/async");
6
+ const api_fetch_client_1 = require("@vertesia/api-fetch-client");
7
+ class TogetherAIDriver extends core_1.AbstractDriver {
8
+ static PROVIDER = "togetherai";
9
+ provider = TogetherAIDriver.PROVIDER;
10
+ apiKey;
11
+ fetchClient;
12
+ constructor(options) {
13
+ super(options);
14
+ this.apiKey = options.apiKey;
15
+ this.fetchClient = new api_fetch_client_1.FetchClient('https://api.together.xyz').withHeaders({
16
+ authorization: `Bearer ${this.apiKey}`
17
+ });
18
+ }
19
+ getResponseFormat = (options) => {
20
+ return options.result_schema ?
21
+ {
22
+ type: "json_object",
23
+ schema: options.result_schema
24
+ } : undefined;
25
+ };
26
+ async requestTextCompletion(prompt, options) {
27
+ if (options.model_options?._option_id !== "text-fallback") {
28
+ this.logger.warn({ options: options.model_options }, "Invalid model options");
29
+ }
30
+ options.model_options = options.model_options;
31
+ const stop_seq = options.model_options?.stop_sequence ?? [];
32
+ const res = await this.fetchClient.post('/v1/completions', {
33
+ payload: {
34
+ model: options.model,
35
+ prompt: prompt,
36
+ response_format: this.getResponseFormat(options),
37
+ max_tokens: options.model_options?.max_tokens,
38
+ temperature: options.model_options?.temperature,
39
+ top_p: options.model_options?.top_p,
40
+ top_k: options.model_options?.top_k,
41
+ //logprobs: options.top_logprobs, //Logprobs output currently not supported
42
+ frequency_penalty: options.model_options?.frequency_penalty,
43
+ presence_penalty: options.model_options?.presence_penalty,
44
+ stop: [
45
+ "</s>",
46
+ "[/INST]",
47
+ ...stop_seq,
48
+ ],
49
+ }
50
+ });
51
+ const choice = res.choices[0];
52
+ const text = choice.text ?? '';
53
+ const usage = res.usage || {};
54
+ return {
55
+ result: [{ type: "text", value: text }],
56
+ token_usage: {
57
+ prompt: usage.prompt_tokens,
58
+ result: usage.completion_tokens,
59
+ total: usage.total_tokens,
60
+ },
61
+ finish_reason: choice.finish_reason, //Uses expected "stop" , "length" format
62
+ original_response: options.include_original_response ? res : undefined,
63
+ };
64
+ }
65
+ async requestTextCompletionStream(prompt, options) {
66
+ if (options.model_options?._option_id !== "text-fallback") {
67
+ this.logger.warn({ options: options.model_options }, "Invalid model options");
68
+ }
69
+ options.model_options = options.model_options;
70
+ const stop_seq = options.model_options?.stop_sequence ?? [];
71
+ const stream = await this.fetchClient.post('/v1/completions', {
72
+ payload: {
73
+ model: options.model,
74
+ prompt: prompt,
75
+ max_tokens: options.model_options?.max_tokens,
76
+ temperature: options.model_options?.temperature,
77
+ response_format: this.getResponseFormat(options),
78
+ top_p: options.model_options?.top_p,
79
+ top_k: options.model_options?.top_k,
80
+ //logprobs: options.top_logprobs, //Logprobs output currently not supported
81
+ frequency_penalty: options.model_options?.frequency_penalty,
82
+ presence_penalty: options.model_options?.presence_penalty,
83
+ stream: true,
84
+ stop: [
85
+ "</s>",
86
+ "[/INST]",
87
+ ...stop_seq,
88
+ ],
89
+ },
90
+ reader: 'sse'
91
+ });
92
+ return (0, async_1.transformSSEStream)(stream, (data) => {
93
+ const json = JSON.parse(data);
94
+ return {
95
+ result: [{ type: "text", value: json.choices[0]?.text ?? '' }],
96
+ finish_reason: json.choices[0]?.finish_reason, //Uses expected "stop" , "length" format
97
+ token_usage: {
98
+ prompt: json.usage?.prompt_tokens,
99
+ result: json.usage?.completion_tokens,
100
+ total: json.usage?.prompt_tokens + json.usage?.completion_tokens,
101
+ }
102
+ };
103
+ });
104
+ }
105
+ async listModels() {
106
+ const models = await this.fetchClient.get("/models/info");
107
+ // logObject('#### LIST MODELS RESULT IS', models[0]);
108
+ const aiModels = models.map(m => {
109
+ return {
110
+ id: m.name,
111
+ name: m.display_name,
112
+ description: m.description,
113
+ provider: this.provider,
114
+ };
115
+ });
116
+ return aiModels;
117
+ }
118
+ validateConnection() {
119
+ throw new Error("Method not implemented.");
120
+ }
121
+ generateEmbeddings() {
122
+ throw new Error("Method not implemented.");
123
+ }
124
+ }
125
+ exports.TogetherAIDriver = TogetherAIDriver;
126
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/togetherai/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/togetherai/interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
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.logObject = logObject;
7
+ const util_1 = __importDefault(require("util"));
8
+ function logObject(prefix, obj) {
9
+ const fullObj = util_1.default.inspect(obj, { showHidden: false, depth: null, colors: true });
10
+ console.log(prefix, fullObj);
11
+ }
12
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/vertexai/debug.ts"],"names":[],"mappings":";;;;;AAEA,8BAGC;AALD,gDAAwB;AAExB,SAAgB,SAAS,CAAC,MAAc,EAAE,GAAQ;IAC9C,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAChC,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEmbeddingsForImages = getEmbeddingsForImages;
4
+ //Currently we are only supporting either text or images sent to the multimodal model.
5
+ async function getEmbeddingsForImages(driver, options) {
6
+ // API is returns a 400 Error if a property is empty, so you undefined and "as" to remove the property entirely.
7
+ const prompt = {
8
+ instances: [{
9
+ text: options.image ? undefined : options.text,
10
+ image: options.image ?
11
+ {
12
+ bytesBase64Encoded: options.image
13
+ }
14
+ : undefined,
15
+ }]
16
+ };
17
+ const model = options.model || "multimodalembedding@001";
18
+ const client = driver.getFetchClient();
19
+ const result = await client.post(`/publishers/google/models/${model}:predict`, {
20
+ payload: prompt
21
+ });
22
+ return {
23
+ values: result.predictions[0].imageEmbedding ?? result.predictions[0].textEmbedding,
24
+ model: model,
25
+ };
26
+ }
27
+ //# sourceMappingURL=embeddings-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings-image.js","sourceRoot":"","sources":["../../../../src/vertexai/embeddings/embeddings-image.ts"],"names":[],"mappings":";;AAyBA,wDA0BC;AA3BD,sFAAsF;AAC/E,KAAK,UAAU,sBAAsB,CAAC,MAAsB,EAAE,OAA0B;IAE3F,gHAAgH;IAChH,MAAM,MAAM,GAAG;QACX,SAAS,EAAE,CAAC;gBACR,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;gBAC9C,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;oBAClB;wBACI,kBAAkB,EAAE,OAAO,CAAC,KAAK;qBACpC;oBACD,CAAC,CAAC,SAAS;aAClB,CAAC;KACuB,CAAC;IAE9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,yBAAyB,CAAC;IAEzD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,KAAK,UAAU,EAAE;QAC3E,OAAO,EAAE,MAAM;KAClB,CAA0B,CAAC;IAE5B,OAAO;QACH,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa;QACnF,KAAK,EAAE,KAAK;KACf,CAAC;AACN,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEmbeddingsForText = getEmbeddingsForText;
4
+ async function getEmbeddingsForText(driver, options) {
5
+ const prompt = {
6
+ instances: [{
7
+ task_type: options.task_type,
8
+ title: options.title,
9
+ content: options.content
10
+ }]
11
+ };
12
+ const model = options.model || "gemini-embedding-001";
13
+ const client = driver.getFetchClient();
14
+ const result = await client.post(`/publishers/google/models/${model}:predict`, {
15
+ payload: prompt
16
+ });
17
+ return {
18
+ ...result.predictions[0].embeddings,
19
+ model,
20
+ token_count: result.predictions[0].embeddings.statistics?.token_count
21
+ };
22
+ }
23
+ //# sourceMappingURL=embeddings-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings-text.js","sourceRoot":"","sources":["../../../../src/vertexai/embeddings/embeddings-text.ts"],"names":[],"mappings":";;AA+BA,oDAsBC;AAtBM,KAAK,UAAU,oBAAoB,CAAC,MAAsB,EAAE,OAA8B;IAC7F,MAAM,MAAM,GAAG;QACX,SAAS,EAAE,CAAC;gBACR,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;aAC3B,CAAC;KAC6B,CAAC;IAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,sBAAsB,CAAC;IAEtD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,KAAK,UAAU,EAAE;QAC3E,OAAO,EAAE,MAAM;KAClB,CAAyB,CAAC;IAE3B,OAAO;QACH,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU;QACnC,KAAK;QACL,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW;KACxE,CAAC;AACN,CAAC"}