@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,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractPalmModelDefinition = void 0;
4
+ const tensor_js_1 = require("../utils/tensor.js");
5
+ class AbstractPalmModelDefinition {
6
+ createPrompt(driver, segments, options) {
7
+ return this.createNonStreamingPrompt(driver, segments, options);
8
+ }
9
+ async requestCompletion(driver, prompt, options) {
10
+ const nonStreamingPrompt = prompt;
11
+ Object.assign((nonStreamingPrompt).parameters, {
12
+ temperature: options.temperature,
13
+ maxOutputTokens: options.max_tokens,
14
+ });
15
+ const response = await driver.fetchClient.post(`/publishers/google/models/${this.model.id}:predict`, {
16
+ payload: nonStreamingPrompt
17
+ });
18
+ const metadata = response.metadata;
19
+ const inputTokens = metadata.tokenMetadata.inputTokenCount.totalTokens;
20
+ const outputTokens = metadata.tokenMetadata.outputTokenCount.totalTokens;
21
+ const result = this.extractContentFromResponse(response);
22
+ return {
23
+ result,
24
+ token_usage: {
25
+ prompt: inputTokens,
26
+ result: outputTokens,
27
+ total: inputTokens && outputTokens ? inputTokens + outputTokens : undefined,
28
+ }
29
+ };
30
+ }
31
+ async requestCompletionStream(driver, prompt, options) {
32
+ const inPrompt = prompt;
33
+ Object.assign(inPrompt.parameters, {
34
+ temperature: options.temperature,
35
+ maxOutputTokens: options.max_tokens,
36
+ });
37
+ const path = `/publishers/google/models/${this.model.id}:serverStreamingPredict?alt=sse`;
38
+ const newPrompt = (0, tensor_js_1.generateStreamingPrompt)(inPrompt);
39
+ // we need to modify the existing prompt since it is not the final one
40
+ const outPrompt = prompt;
41
+ delete outPrompt.instances;
42
+ outPrompt.inputs = newPrompt.inputs;
43
+ outPrompt.parameters = newPrompt.parameters;
44
+ const eventStrean = await driver.fetchClient.post(path, {
45
+ payload: newPrompt,
46
+ reader: 'sse'
47
+ });
48
+ return eventStrean.pipeThrough(new ChunkTransformStream(this));
49
+ }
50
+ }
51
+ exports.AbstractPalmModelDefinition = AbstractPalmModelDefinition;
52
+ class ChunkTransformStream extends TransformStream {
53
+ constructor(def) {
54
+ super({
55
+ transform(event, controller) {
56
+ if (event.type === 'event' && event.data) {
57
+ const data = JSON.parse(event.data);
58
+ const stringChunk = def.extractContentFromResponseChunk(data);
59
+ controller.enqueue(Array.isArray(stringChunk) ? stringChunk.join('') : stringChunk);
60
+ }
61
+ }
62
+ });
63
+ }
64
+ }
65
+ //# sourceMappingURL=palm-model-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palm-model-base.js","sourceRoot":"","sources":["../../../../src/vertexai/models/palm-model-base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Palm2ChatDefinition = void 0;
4
+ const core_1 = require("@llumiverse/core");
5
+ const prompts_js_1 = require("../utils/prompts.js");
6
+ const palm_model_base_js_1 = require("./palm-model-base.js");
7
+ class Palm2ChatDefinition extends palm_model_base_js_1.AbstractPalmModelDefinition {
8
+ versions = [];
9
+ model = {
10
+ id: "chat-bison",
11
+ name: "PaLM 2 for Chat",
12
+ provider: "vertexai",
13
+ owner: "google",
14
+ type: core_1.ModelType.Chat,
15
+ canStream: true,
16
+ };
17
+ createNonStreamingPrompt(_driver, segments, opts) {
18
+ const system = [];
19
+ const messages = [];
20
+ const safety = [];
21
+ for (const segment of segments) {
22
+ switch (segment.role) {
23
+ case core_1.PromptRole.user:
24
+ messages.push({ author: 'user', content: segment.content });
25
+ break;
26
+ case core_1.PromptRole.assistant:
27
+ messages.push({ author: 'assistant', content: segment.content });
28
+ break;
29
+ case core_1.PromptRole.system:
30
+ system.push(segment.content);
31
+ break;
32
+ case core_1.PromptRole.safety:
33
+ safety.push(segment.content);
34
+ break;
35
+ }
36
+ }
37
+ if (opts.resultSchema) {
38
+ safety.push((0, prompts_js_1.getJSONSafetyNotice)(opts.resultSchema));
39
+ }
40
+ const context = [];
41
+ if (system.length > 0) {
42
+ context.push(system.join('\n'));
43
+ }
44
+ if (safety.length > 0) {
45
+ context.push('IMPORTANT: ' + safety.join('\n'));
46
+ }
47
+ return {
48
+ instances: [{
49
+ context: context.length > 0 ? context.join('\n') : undefined,
50
+ messages
51
+ }],
52
+ parameters: {
53
+ // put defauilts here
54
+ }
55
+ };
56
+ }
57
+ extractContentFromResponse(response) {
58
+ return response.predictions[0].candidates[0].content ?? '';
59
+ }
60
+ extractContentFromResponseChunk(chunk) {
61
+ return chunk.outputs[0]?.structVal.candidates.listVal[0].structVal.content.stringVal || '';
62
+ }
63
+ }
64
+ exports.Palm2ChatDefinition = Palm2ChatDefinition;
65
+ //# sourceMappingURL=palm2-chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palm2-chat.js","sourceRoot":"","sources":["../../../../src/vertexai/models/palm2-chat.ts"],"names":[],"mappings":";;;AAAA,2CAAgG;AAEhG,oDAA0D;AAC1D,6DAAsI;AAqDtI,MAAa,mBAAoB,SAAQ,gDAAsE;IAC3G,QAAQ,GAAa,EAAE,CAAC;IACxB,KAAK,GAAY;QACb,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,gBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI;KAClB,CAAA;IAED,wBAAwB,CAAC,OAAuB,EAAE,QAAyB,EAAE,IAAmB;QAC5F,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,iBAAU,CAAC,IAAI;oBAChB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC5D,MAAM;gBACV,KAAK,iBAAU,CAAC,SAAS;oBACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBACjE,MAAM;gBACV,KAAK,iBAAU,CAAC,MAAM;oBAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC7B,MAAM;gBACV,KAAK,iBAAU,CAAC,MAAM;oBAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC7B,MAAM;YACd,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,IAAA,gCAAmB,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,CAAA;QAClB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO;YACH,SAAS,EAAE,CAAC;oBACR,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC5D,QAAQ;iBACX,CAAC;YACF,UAAU,EAAE;YACR,qBAAqB;aACxB;SACe,CAAC;IACzB,CAAC;IAED,0BAA0B,CAAC,QAA2B;QAClD,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;IAC/D,CAAC;IAED,+BAA+B,CAAC,KAAU;QACtC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAA;IAC9F,CAAC;CACJ;AA9DD,kDA8DC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Palm2TextDefinition = void 0;
4
+ const core_1 = require("@llumiverse/core");
5
+ const prompts_js_1 = require("../utils/prompts.js");
6
+ const palm_model_base_js_1 = require("./palm-model-base.js");
7
+ class Palm2TextDefinition extends palm_model_base_js_1.AbstractPalmModelDefinition {
8
+ versions = [];
9
+ model = {
10
+ id: "text-bison",
11
+ name: "PaLM 2 for Text",
12
+ provider: "vertexai",
13
+ owner: "google",
14
+ type: core_1.ModelType.Text,
15
+ canStream: true,
16
+ };
17
+ createNonStreamingPrompt(_driver, segments, opts) {
18
+ return {
19
+ instances: [{
20
+ prompt: (0, prompts_js_1.getPromptAsText)(segments, opts)
21
+ }],
22
+ parameters: {
23
+ // put defauilts here
24
+ }
25
+ };
26
+ }
27
+ extractContentFromResponse(response) {
28
+ return response.predictions[0].content ?? '';
29
+ }
30
+ extractContentFromResponseChunk(chunk) {
31
+ return chunk.outputs[0]?.structVal.content.stringVal || '';
32
+ }
33
+ }
34
+ exports.Palm2TextDefinition = Palm2TextDefinition;
35
+ //# sourceMappingURL=palm2-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palm2-text.js","sourceRoot":"","sources":["../../../../src/vertexai/models/palm2-text.ts"],"names":[],"mappings":";;;AAAA,2CAAoF;AAEpF,oDAAsD;AACtD,6DAAsI;AAmCtI,MAAa,mBAAoB,SAAQ,gDAAsE;IAC3G,QAAQ,GAAa,EAAE,CAAC;IACxB,KAAK,GAAY;QACb,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,gBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI;KAClB,CAAA;IAED,wBAAwB,CAAC,OAAuB,EAAE,QAAyB,EAAE,IAAmB;QAC5F,OAAO;YACH,SAAS,EAAE,CAAC;oBACR,MAAM,EAAE,IAAA,4BAAe,EAAC,QAAQ,EAAE,IAAI,CAAC;iBAC1C,CAAC;YACF,UAAU,EAAE;YACR,qBAAqB;aACxB;SACe,CAAC;IACzB,CAAC;IAED,0BAA0B,CAAC,QAA2B;QAClD,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,+BAA+B,CAAC,KAAU;QACtC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAC/D,CAAC;CAEJ;AA9BD,kDA8BC"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BuiltinModels = exports.getAIModels = exports.getModelDefinition = exports.getModelName = void 0;
4
+ const core_1 = require("@llumiverse/core");
5
+ const gemini_js_1 = require("./models/gemini.js");
6
+ const palm2_text_js_1 = require("./models/palm2-text.js");
7
+ const palm2_chat_js_1 = require("./models/palm2-chat.js");
8
+ const codey_chat_js_1 = require("./models/codey-chat.js");
9
+ const codey_text_js_1 = require("./models/codey-text.js");
10
+ const Models = {
11
+ "gemini-pro": new gemini_js_1.GeminiModelDefinition(),
12
+ "text-bison": new palm2_text_js_1.Palm2TextDefinition(),
13
+ "chat-bison": new palm2_chat_js_1.Palm2ChatDefinition(),
14
+ "code-bison": new codey_text_js_1.CodeyTextDefinition(),
15
+ "codechat-bison": new codey_chat_js_1.CodeyChatDefinition(),
16
+ };
17
+ function getModelName(model) {
18
+ const i = model.lastIndexOf('@');
19
+ return i > -1 ? model.substring(0, i) : model;
20
+ }
21
+ exports.getModelName = getModelName;
22
+ function getModelDefinition(model) {
23
+ const def = Models[getModelName(model)];
24
+ if (!def) {
25
+ throw new Error(`Unknown model ${model}`);
26
+ }
27
+ return def;
28
+ }
29
+ exports.getModelDefinition = getModelDefinition;
30
+ function getAIModels() {
31
+ return Object.values(Models).map(m => m.model);
32
+ }
33
+ exports.getAIModels = getAIModels;
34
+ // Builtin models. VertexAI doesn't provide an API to list models. so we have to hardcode them here.
35
+ exports.BuiltinModels = [
36
+ {
37
+ id: "gemini-pro",
38
+ name: "Gemini Pro",
39
+ provider: "vertexai",
40
+ owner: "google",
41
+ type: core_1.ModelType.Text,
42
+ },
43
+ {
44
+ id: "chat-bison",
45
+ name: "PaLM 2 Chat Bison",
46
+ provider: "vertexai",
47
+ owner: "google",
48
+ type: core_1.ModelType.Chat,
49
+ },
50
+ {
51
+ id: "text-bison", // versions 001, 002
52
+ name: "PaLM 2 Text Bison",
53
+ provider: "vertexai",
54
+ owner: "google",
55
+ type: core_1.ModelType.Text,
56
+ },
57
+ {
58
+ id: "code-gecko",
59
+ name: "Codey for Code Completion",
60
+ provider: "vertexai",
61
+ owner: "google",
62
+ type: core_1.ModelType.Code,
63
+ },
64
+ {
65
+ id: "code-bison",
66
+ name: "Codey for Code Generation",
67
+ provider: "vertexai",
68
+ owner: "google",
69
+ type: core_1.ModelType.Code,
70
+ },
71
+ {
72
+ id: "codechat-bison",
73
+ name: "Codey for Code Chat",
74
+ provider: "vertexai",
75
+ owner: "google",
76
+ type: core_1.ModelType.Code,
77
+ },
78
+ {
79
+ id: "tablextembedding-gecko",
80
+ name: "Gecko Text Embeddings",
81
+ provider: "vertexai",
82
+ owner: "google",
83
+ type: core_1.ModelType.Embedding,
84
+ },
85
+ {
86
+ id: "textembedding-gecko-multilingual",
87
+ name: "Gecko Multilingual Text Embeddings",
88
+ provider: "vertexai",
89
+ owner: "google",
90
+ type: core_1.ModelType.Embedding,
91
+ },
92
+ ];
93
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/vertexai/models.ts"],"names":[],"mappings":";;;AAAA,2CAAkH;AAClH,kDAA2D;AAE3D,0DAA6D;AAC7D,0DAA6D;AAC7D,0DAA6D;AAC7D,0DAA6D;AAG7D,MAAM,MAAM,GAAoC;IAC5C,YAAY,EAAE,IAAI,iCAAqB,EAAE;IACzC,YAAY,EAAE,IAAI,mCAAmB,EAAE;IACvC,YAAY,EAAE,IAAI,mCAAmB,EAAE;IACvC,YAAY,EAAE,IAAI,mCAAmB,EAAE;IACvC,gBAAgB,EAAE,IAAI,mCAAmB,EAAE;CAC9C,CAAA;AAUD,SAAgB,YAAY,CAAC,KAAa;IACtC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC;AAHD,oCAGC;AAED,SAAgB,kBAAkB,CAAC,KAAa;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAND,gDAMC;AAED,SAAgB,WAAW;IACvB,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AAFD,kCAEC;AAED,oGAAoG;AACvF,QAAA,aAAa,GAAsB;IAC5C;QACI,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,gBAAS,CAAC,IAAI;KACvB;IACD;QACI,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,gBAAS,CAAC,IAAI;KACvB;IACD;QACI,EAAE,EAAE,YAAY,EAAE,oBAAoB;QACtC,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,gBAAS,CAAC,IAAI;KACvB;IACD;QACI,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,gBAAS,CAAC,IAAI;KACvB;IACD;QACI,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,gBAAS,CAAC,IAAI;KACvB;IACD;QACI,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,gBAAS,CAAC,IAAI;KACvB;IACD;QACI,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,gBAAS,CAAC,SAAS;KAC5B;IACD;QACI,EAAE,EAAE,kCAAkC;QACtC,IAAI,EAAE,oCAAoC;QAC1C,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,gBAAS,CAAC,SAAS;KAC5B;CAIJ,CAAA"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPromptAsText = exports.getJSONSafetyNotice = void 0;
4
+ const core_1 = require("@llumiverse/core");
5
+ function getJSONSafetyNotice(schema) {
6
+ return "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(schema);
7
+ }
8
+ exports.getJSONSafetyNotice = getJSONSafetyNotice;
9
+ function getPromptAsText(segments, options) {
10
+ const isChat = segments.find(m => m.role === core_1.PromptRole.assistant);
11
+ const context = [];
12
+ const content = [];
13
+ const safety = [];
14
+ for (const segment of segments) {
15
+ switch (segment.role) {
16
+ case core_1.PromptRole.user:
17
+ if (isChat) {
18
+ content.push('USER: ' + segment.content);
19
+ }
20
+ else {
21
+ content.push(segment.content);
22
+ }
23
+ break;
24
+ case core_1.PromptRole.assistant:
25
+ content.push('ASSISTANT: ' + segment.content);
26
+ break;
27
+ case core_1.PromptRole.system:
28
+ context.push(segment.content);
29
+ break;
30
+ case core_1.PromptRole.safety:
31
+ safety.push(segment.content);
32
+ break;
33
+ }
34
+ }
35
+ if (options.resultSchema) {
36
+ safety.push(getJSONSafetyNotice(options.resultSchema));
37
+ }
38
+ const out = [];
39
+ if (context.length > 0) {
40
+ out.push('CONTEXT: ' + context.join('\n'));
41
+ }
42
+ if (content.length > 0) {
43
+ const prefix = context.length > 0 && !isChat ? 'INSTRUCTION: ' : '';
44
+ out.push(prefix + content.join('\n'));
45
+ }
46
+ if (safety.length > 0) {
47
+ out.push('IMPORTANT: ' + safety.join('\n'));
48
+ }
49
+ return out.join('\n');
50
+ }
51
+ exports.getPromptAsText = getPromptAsText;
52
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../src/vertexai/utils/prompts.ts"],"names":[],"mappings":";;;AAAA,2CAA4E;AAmB5E,SAAgB,mBAAmB,CAAC,MAAmB;IACnD,OAAO,qEAAqE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AACzG,CAAC;AAFD,kDAEC;AAED,SAAgB,eAAe,CAAC,QAAyB,EAAE,OAAsB;IAC7E,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAU,CAAC,SAAS,CAAC,CAAC;IACnE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,iBAAU,CAAC,IAAI;gBAChB,IAAI,MAAM,EAAE,CAAC;oBACT,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM;YACV,KAAK,iBAAU,CAAC,SAAS;gBACrB,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC9C,MAAM;YACV,KAAK,iBAAU,CAAC,MAAM;gBAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM;YACV,KAAK,iBAAU,CAAC,MAAM;gBAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC7B,MAAM;QACd,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AA1CD,0CA0CC"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateStreamingPrompt = exports.formatArrayAsTensor = void 0;
4
+ function getTensorType(val) {
5
+ if (val == null) {
6
+ return null;
7
+ }
8
+ if (Array.isArray(val)) {
9
+ if (val.length > 0) {
10
+ val = val[0];
11
+ }
12
+ else {
13
+ return 'listVal';
14
+ }
15
+ }
16
+ const type = typeof val;
17
+ if (type === 'string') {
18
+ return 'stringVal';
19
+ }
20
+ if (type === 'number') {
21
+ if (val % 1 === 0) { // is interger
22
+ return 'intVal';
23
+ }
24
+ else {
25
+ return 'floatVal';
26
+ }
27
+ }
28
+ if (type === 'boolean') {
29
+ return 'boolVal';
30
+ }
31
+ if (type === 'object') {
32
+ return 'structVal';
33
+ }
34
+ return undefined;
35
+ }
36
+ function formatArrayAsTensor(arr) {
37
+ return arr.map(item => {
38
+ const type = typeof item;
39
+ if (type === 'string' || type === 'number' || type === 'boolean') {
40
+ return item; // primitve values
41
+ }
42
+ else {
43
+ return formatObjectAsTensor(item);
44
+ }
45
+ });
46
+ }
47
+ exports.formatArrayAsTensor = formatArrayAsTensor;
48
+ /**
49
+ * Do not support nested array or nested object arrays
50
+ * @param obj
51
+ * @returns
52
+ */
53
+ function formatObjectAsTensor(obj, isField = false) {
54
+ const struct = {};
55
+ const keys = Object.keys(obj);
56
+ for (const key of keys) {
57
+ //console.log('###', key);
58
+ const val = obj[key];
59
+ const type = getTensorType(val);
60
+ if (type === 'structVal') {
61
+ if (Array.isArray(val)) {
62
+ struct[key] = { listVal: formatArrayAsTensor(val) };
63
+ }
64
+ else {
65
+ struct[key] = {
66
+ [type]: formatObjectAsTensor(val, true)
67
+ };
68
+ }
69
+ }
70
+ else if (type) {
71
+ struct[key] = {
72
+ [type]: val
73
+ };
74
+ }
75
+ }
76
+ return isField ? struct : {
77
+ structVal: struct
78
+ };
79
+ }
80
+ function generateStreamingPrompt(prompt) {
81
+ return {
82
+ inputs: prompt.instances.map((inst) => formatObjectAsTensor(inst)),
83
+ parameters: formatObjectAsTensor(prompt.parameters)
84
+ };
85
+ }
86
+ exports.generateStreamingPrompt = generateStreamingPrompt;
87
+ //# sourceMappingURL=tensor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tensor.js","sourceRoot":"","sources":["../../../../src/vertexai/utils/tensor.ts"],"names":[],"mappings":"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"}