@llumiverse/core 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 (58) hide show
  1. package/lib/cjs/CompletionStream.js +78 -0
  2. package/lib/cjs/CompletionStream.js.map +1 -0
  3. package/lib/cjs/Driver.js +115 -0
  4. package/lib/cjs/Driver.js.map +1 -0
  5. package/lib/cjs/async.js +107 -0
  6. package/lib/cjs/async.js.map +1 -0
  7. package/lib/cjs/formatters.js +117 -0
  8. package/lib/cjs/formatters.js.map +1 -0
  9. package/lib/cjs/index.js +21 -0
  10. package/lib/cjs/index.js.map +1 -0
  11. package/lib/cjs/json.js +14 -0
  12. package/lib/cjs/json.js.map +1 -0
  13. package/lib/cjs/package.json +3 -0
  14. package/lib/cjs/types.js +67 -0
  15. package/lib/cjs/types.js.map +1 -0
  16. package/lib/cjs/validation.js +35 -0
  17. package/lib/cjs/validation.js.map +1 -0
  18. package/lib/esm/CompletionStream.js +73 -0
  19. package/lib/esm/CompletionStream.js.map +1 -0
  20. package/lib/esm/Driver.js +110 -0
  21. package/lib/esm/Driver.js.map +1 -0
  22. package/lib/esm/async.js +100 -0
  23. package/lib/esm/async.js.map +1 -0
  24. package/lib/esm/formatters.js +113 -0
  25. package/lib/esm/formatters.js.map +1 -0
  26. package/lib/esm/index.js +5 -0
  27. package/lib/esm/index.js.map +1 -0
  28. package/lib/esm/json.js +10 -0
  29. package/lib/esm/json.js.map +1 -0
  30. package/lib/esm/types.js +64 -0
  31. package/lib/esm/types.js.map +1 -0
  32. package/lib/esm/validation.js +30 -0
  33. package/lib/esm/validation.js.map +1 -0
  34. package/lib/types/CompletionStream.d.ts +21 -0
  35. package/lib/types/CompletionStream.d.ts.map +1 -0
  36. package/lib/types/Driver.d.ts +68 -0
  37. package/lib/types/Driver.d.ts.map +1 -0
  38. package/lib/types/async.d.ts +21 -0
  39. package/lib/types/async.d.ts.map +1 -0
  40. package/lib/types/formatters.d.ts +5 -0
  41. package/lib/types/formatters.d.ts.map +1 -0
  42. package/lib/types/index.d.ts +5 -0
  43. package/lib/types/index.d.ts.map +1 -0
  44. package/lib/types/json.d.ts +9 -0
  45. package/lib/types/json.d.ts.map +1 -0
  46. package/lib/types/types.d.ts +153 -0
  47. package/lib/types/types.d.ts.map +1 -0
  48. package/lib/types/validation.d.ts +8 -0
  49. package/lib/types/validation.d.ts.map +1 -0
  50. package/package.json +74 -0
  51. package/src/CompletionStream.ts +92 -0
  52. package/src/Driver.ts +204 -0
  53. package/src/async.ts +120 -0
  54. package/src/formatters.ts +147 -0
  55. package/src/index.ts +4 -0
  56. package/src/json.ts +17 -0
  57. package/src/types.ts +187 -0
  58. package/src/validation.ts +34 -0
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FallbackCompletionStream = exports.DefaultCompletionStream = void 0;
4
+ class DefaultCompletionStream {
5
+ driver;
6
+ options;
7
+ chunks;
8
+ prompt;
9
+ completion;
10
+ constructor(driver, segments, options) {
11
+ this.driver = driver;
12
+ this.options = options;
13
+ this.driver = driver;
14
+ this.prompt = this.driver.createPrompt(segments, options);
15
+ this.chunks = [];
16
+ }
17
+ async *[Symbol.asyncIterator]() {
18
+ // reset state
19
+ this.completion = undefined;
20
+ if (this.chunks.length > 0) {
21
+ this.chunks = [];
22
+ }
23
+ const chunks = this.chunks;
24
+ this.driver.logger.debug(`[${this.driver.provider}] Streaming Execution of ${this.options.model} with prompt`, this.prompt);
25
+ const start = Date.now();
26
+ const stream = await this.driver.requestCompletionStream(this.prompt, this.options);
27
+ for await (const chunk of stream) {
28
+ if (chunk) {
29
+ chunks.push(chunk);
30
+ yield chunk;
31
+ }
32
+ }
33
+ const content = chunks.join('');
34
+ const promptTokens = typeof this.prompt === 'string' ? this.prompt.length : JSON.stringify(this.prompt).length;
35
+ const resultTokens = content.length; //TODO use chunks.length ?
36
+ this.completion = {
37
+ result: content,
38
+ prompt: this.prompt,
39
+ execution_time: Date.now() - start,
40
+ token_usage: {
41
+ prompt: promptTokens,
42
+ result: resultTokens,
43
+ total: resultTokens + promptTokens,
44
+ }
45
+ };
46
+ this.driver.validateResult(this.completion, this.options);
47
+ }
48
+ }
49
+ exports.DefaultCompletionStream = DefaultCompletionStream;
50
+ class FallbackCompletionStream {
51
+ driver;
52
+ options;
53
+ prompt;
54
+ chunks;
55
+ completion;
56
+ constructor(driver, segments, options) {
57
+ this.driver = driver;
58
+ this.options = options;
59
+ this.driver = driver;
60
+ this.prompt = this.driver.createPrompt(segments, options);
61
+ this.chunks = [];
62
+ }
63
+ async *[Symbol.asyncIterator]() {
64
+ // reset state
65
+ this.completion = undefined;
66
+ if (this.chunks.length > 0) {
67
+ this.chunks = [];
68
+ }
69
+ this.driver.logger.debug(`[${this.driver.provider}] Streaming is not supported, falling back to blocking execution`);
70
+ const completion = await this.driver._execute(this.prompt, this.options);
71
+ const content = completion.result === 'string' ? completion.result : JSON.stringify(completion.result);
72
+ this.chunks.push(content);
73
+ yield content;
74
+ this.completion = completion;
75
+ }
76
+ }
77
+ exports.FallbackCompletionStream = FallbackCompletionStream;
78
+ //# sourceMappingURL=CompletionStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompletionStream.js","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ /**
3
+ * Classes to handle the execution of an interaction in an execution environment.
4
+ * Base abstract class is then implemented by each environment
5
+ * (eg: OpenAI, HuggingFace, etc.)
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.AbstractDriver = exports.createLogger = void 0;
9
+ const CompletionStream_js_1 = require("./CompletionStream.js");
10
+ const formatters_js_1 = require("./formatters.js");
11
+ const validation_js_1 = require("./validation.js");
12
+ const ConsoleLogger = {
13
+ debug: console.debug,
14
+ info: console.info,
15
+ warn: console.warn,
16
+ error: console.error,
17
+ };
18
+ const noop = () => void 0;
19
+ const NoopLogger = {
20
+ debug: noop,
21
+ info: noop,
22
+ warn: noop,
23
+ error: noop,
24
+ };
25
+ function createLogger(logger) {
26
+ return logger ? logger : logger === false ? NoopLogger : ConsoleLogger;
27
+ }
28
+ exports.createLogger = createLogger;
29
+ /**
30
+ * To be implemented by each driver
31
+ */
32
+ class AbstractDriver {
33
+ options;
34
+ logger;
35
+ constructor(opts) {
36
+ this.options = opts;
37
+ this.logger = createLogger(opts.logger);
38
+ }
39
+ createTrainingPrompt(options) {
40
+ const prompt = this.createPrompt(options.segments, { resultSchema: options.schema, model: options.model });
41
+ return JSON.stringify({
42
+ prompt,
43
+ completion: typeof options.completion === 'string' ? options.completion : JSON.stringify(options.completion)
44
+ });
45
+ }
46
+ startTraining(_dataset, _options) {
47
+ throw new Error("Method not implemented.");
48
+ }
49
+ cancelTraining(_jobId) {
50
+ throw new Error("Method not implemented.");
51
+ }
52
+ getTrainingJob(_jobId) {
53
+ throw new Error("Method not implemented.");
54
+ }
55
+ validateResult(result, options) {
56
+ if (!result.error && options.resultSchema) {
57
+ try {
58
+ result.result = (0, validation_js_1.validateResult)(result.result, options.resultSchema);
59
+ }
60
+ catch (error) {
61
+ this.logger?.error({ err: error, data: result.result }, `[${this.provider}] [${options.model}] ${error.code ? '[' + error.code + '] ' : ''}Result validation error: ${error.message}`);
62
+ result.error = {
63
+ code: error.code || error.name,
64
+ message: error.message,
65
+ data: result.result,
66
+ };
67
+ }
68
+ }
69
+ }
70
+ async execute(segments, options) {
71
+ const prompt = this.createPrompt(segments, options);
72
+ return this._execute(prompt, options);
73
+ }
74
+ async _execute(prompt, options) {
75
+ this.logger.debug(`[${this.provider}] Executing ${options.model} with prompt`, prompt);
76
+ try {
77
+ const start = Date.now();
78
+ const result = await this.requestCompletion(prompt, options);
79
+ this.validateResult(result, options);
80
+ const execution_time = Date.now() - start;
81
+ return { ...result, prompt, execution_time };
82
+ }
83
+ catch (error) {
84
+ error.prompt = prompt;
85
+ throw error;
86
+ }
87
+ }
88
+ // by default no stream is supported. we block and we return all at once
89
+ async stream(segments, options) {
90
+ const canStream = await this.canStream(options);
91
+ if (canStream) {
92
+ return new CompletionStream_js_1.DefaultCompletionStream(this, segments, options);
93
+ }
94
+ else {
95
+ return new CompletionStream_js_1.FallbackCompletionStream(this, segments, options);
96
+ }
97
+ }
98
+ createPrompt(segments, opts) {
99
+ return formatters_js_1.PromptFormatters[opts.format || this.defaultFormat](segments, opts.resultSchema);
100
+ }
101
+ /**
102
+ * Must be overrided if the implementation cannot stream.
103
+ * Some implementation may be able to stream for certain models but not for others.
104
+ * You must overwrite and return false if the current model doesn't support streaming.
105
+ * The default implementation returns true, so it is assumed that the streaming can be done.
106
+ * If this method returns false then the streaming execution will fallback on a blocking execution streaming the entire response as a single event.
107
+ * @param options the execution options containing the target model name.
108
+ * @returns true if the exeuction can be streamed false otherwise.
109
+ */
110
+ canStream(_options) {
111
+ return Promise.resolve(true);
112
+ }
113
+ }
114
+ exports.AbstractDriver = AbstractDriver;
115
+ //# sourceMappingURL=Driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Driver.js","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transformAsyncIterator = exports.EventStream = exports.oneAsyncIterator = exports.asyncMap = void 0;
4
+ async function* asyncMap(asyncIterable, callback) {
5
+ let i = 0;
6
+ for await (const val of asyncIterable)
7
+ yield callback(val, i++);
8
+ }
9
+ exports.asyncMap = asyncMap;
10
+ function oneAsyncIterator(value) {
11
+ return {
12
+ async *[Symbol.asyncIterator]() {
13
+ yield value;
14
+ }
15
+ };
16
+ }
17
+ exports.oneAsyncIterator = oneAsyncIterator;
18
+ class EventStream {
19
+ queue = [];
20
+ pending;
21
+ done = false;
22
+ push(event) {
23
+ if (this.done) {
24
+ throw new Error('Cannot push to a closed stream');
25
+ }
26
+ if (this.pending) {
27
+ this.pending.resolve({ value: event });
28
+ this.pending = undefined;
29
+ }
30
+ else {
31
+ this.queue.push(event);
32
+ }
33
+ }
34
+ /**
35
+ * Close the stream. This means the stream cannot be feeded anymore.
36
+ * But the consumer can still consume the remaining events.
37
+ */
38
+ close(value) {
39
+ this.done = true;
40
+ if (this.pending) {
41
+ this.pending.resolve({ done: true, value });
42
+ this.pending = undefined;
43
+ }
44
+ }
45
+ [Symbol.asyncIterator]() {
46
+ const self = this;
47
+ return {
48
+ next() {
49
+ const next = self.queue.shift();
50
+ if (next !== undefined) {
51
+ return Promise.resolve({ value: next });
52
+ }
53
+ else if (self.done) {
54
+ return Promise.resolve({ done: true, value: undefined });
55
+ }
56
+ else {
57
+ return new Promise((resolve, reject) => {
58
+ self.pending = { resolve, reject };
59
+ });
60
+ }
61
+ },
62
+ async return(value) {
63
+ self.done = true;
64
+ self.queue = [];
65
+ if (value === undefined) {
66
+ return { done: true, value: undefined };
67
+ }
68
+ const _value = await value;
69
+ return { done: true, value: _value };
70
+ }
71
+ };
72
+ }
73
+ }
74
+ exports.EventStream = EventStream;
75
+ /**
76
+ * Transform an async iterator by applying a function to each value.
77
+ * @param originalGenerator
78
+ * @param transform
79
+ **/
80
+ async function* transformAsyncIterator(originalGenerator, transform) {
81
+ for await (const value of originalGenerator) {
82
+ yield transform(value);
83
+ }
84
+ }
85
+ exports.transformAsyncIterator = transformAsyncIterator;
86
+ //TODO move in a test file
87
+ // const max = 10; let cnt = 0;
88
+ // function feedStream(stream: EventStream<string>) {
89
+ // setTimeout(() => {
90
+ // cnt++;
91
+ // console.log('push: ', cnt, max);
92
+ // stream.push('event ' + cnt);
93
+ // if (cnt < max) {
94
+ // console.log('next: ', cnt, max);
95
+ // setTimeout(() => feedStream(stream), 1000);
96
+ // } else {
97
+ // console.log('end of stream');
98
+ // stream.close();
99
+ // }
100
+ // }, 1000);
101
+ // }
102
+ // const stream = new EventStream<string>();
103
+ // feedStream(stream);
104
+ // for await (const chunk of stream) {
105
+ // console.log('++++chunk:', chunk);
106
+ // }
107
+ //# sourceMappingURL=async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/async.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PromptFormatters = exports.inferFormatterFromModelName = void 0;
4
+ const types_js_1 = require("./types.js");
5
+ function inferFormatterFromModelName(modelName) {
6
+ const name = modelName.toLowerCase();
7
+ if (name.includes("llama")) {
8
+ return types_js_1.PromptFormats.llama2;
9
+ }
10
+ else if (name.includes("gpt")) {
11
+ return types_js_1.PromptFormats.openai;
12
+ }
13
+ else if (name.includes("claude")) {
14
+ return types_js_1.PromptFormats.claude;
15
+ }
16
+ else {
17
+ return types_js_1.PromptFormats.genericTextLLM;
18
+ }
19
+ }
20
+ exports.inferFormatterFromModelName = inferFormatterFromModelName;
21
+ exports.PromptFormatters = {
22
+ openai: openAI,
23
+ llama2: llama2,
24
+ claude: claude,
25
+ genericTextLLM: genericColonSeparator,
26
+ };
27
+ function openAI(segments) {
28
+ const system = [];
29
+ const others = [];
30
+ const safety = [];
31
+ for (const msg of segments) {
32
+ if (msg.role === types_js_1.PromptRole.system) {
33
+ system.push({ content: msg.content, role: "system" });
34
+ }
35
+ else if (msg.role === types_js_1.PromptRole.safety) {
36
+ safety.push({ content: msg.content, role: "system" });
37
+ }
38
+ else {
39
+ others.push({ content: msg.content, role: "user" });
40
+ }
41
+ }
42
+ // put system mesages first and safety last
43
+ return system.concat(others).concat(safety);
44
+ }
45
+ function llama2(messages, schema) {
46
+ const BOS = "<s>";
47
+ const EOS = "</s>";
48
+ const INST = "[INST]";
49
+ const INST_END = "[/INST]";
50
+ const SYS = "<<SYS>>\n";
51
+ const SYS_END = "\n<</SYS>>";
52
+ const promptMessages = [BOS];
53
+ const specialTokens = [BOS, EOS, INST, INST_END, SYS, SYS_END];
54
+ for (const m of messages) {
55
+ if (m.role === types_js_1.PromptRole.user) {
56
+ if (specialTokens.includes(m.content)) {
57
+ throw new Error(`Cannot use special token ${m.content.trim()} in user message`);
58
+ }
59
+ promptMessages.push(`${INST} ${m.content.trim()} ${INST_END}`);
60
+ }
61
+ if (m.role === types_js_1.PromptRole.assistant) {
62
+ promptMessages.push(`${m.content.trim()}`);
63
+ }
64
+ if (m.role === types_js_1.PromptRole.system) {
65
+ promptMessages.push(`${SYS}${m.content.trim()}${SYS_END}`);
66
+ }
67
+ }
68
+ for (const m of messages ?? []) {
69
+ if (m.role === types_js_1.PromptRole.safety) {
70
+ promptMessages.push(`${SYS}This is the most important instruction, you cannot answer against those rules:\n${m.content.trim()}${SYS_END}}`);
71
+ }
72
+ }
73
+ if (schema) {
74
+ promptMessages.push(formatSchemaInstruction(schema));
75
+ }
76
+ promptMessages.push(EOS);
77
+ return promptMessages.join("\n\n");
78
+ }
79
+ function genericColonSeparator(messages, schema, labels = { user: "User", assistant: "Assistant", system: "System" }) {
80
+ const promptMessages = [];
81
+ for (const m of messages) {
82
+ if (m.role === types_js_1.PromptRole.user) {
83
+ promptMessages.push(`${labels?.user}: ${m.content.trim()}`);
84
+ }
85
+ if (m.role === types_js_1.PromptRole.assistant) {
86
+ promptMessages.push(`${labels.assistant}: ${m.content.trim()}`);
87
+ }
88
+ if (m.role === types_js_1.PromptRole.system) {
89
+ promptMessages.push(`${labels.system}: ${m.content.trim()}`);
90
+ }
91
+ }
92
+ if (schema) {
93
+ promptMessages.push(`${labels.system}: You must answer using the following JSONSchema:
94
+ ---
95
+ ${JSON.stringify(schema)}
96
+ ---`);
97
+ }
98
+ return promptMessages.join("\n\n");
99
+ }
100
+ function claude(messages, schema) {
101
+ const prompt = genericColonSeparator(messages, schema, {
102
+ user: "\nHuman",
103
+ assistant: "\nAssistant",
104
+ system: "\nHuman",
105
+ });
106
+ return "\n\n" + prompt + "\n\nAssistant:";
107
+ }
108
+ function formatSchemaInstruction(schema) {
109
+ const schema_instruction = `<<SYS>>You must answer using the following JSONSchema.
110
+ Do not write anything other than a JSON object corresponding to the schema.
111
+ <schema>
112
+ ${JSON.stringify(schema)}
113
+ </schema>
114
+ <</SYS>>`;
115
+ return schema_instruction;
116
+ }
117
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/formatters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
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("./Driver.js"), exports);
18
+ __exportStar(require("./formatters.js"), exports);
19
+ __exportStar(require("./json.js"), exports);
20
+ __exportStar(require("./types.js"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,kDAAgC;AAChC,4CAA0B;AAC1B,6CAA2B"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseJSON = void 0;
4
+ function extractJsonFromText(text) {
5
+ const start = text.indexOf("{");
6
+ const end = text.lastIndexOf("}");
7
+ return text.substring(start, end + 1);
8
+ }
9
+ //TODO LAX parse JSON
10
+ function parseJSON(text) {
11
+ return JSON.parse(extractJsonFromText(text));
12
+ }
13
+ exports.parseJSON = parseJSON;
14
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/json.ts"],"names":[],"mappings":";;;AACA,SAAS,mBAAmB,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,qBAAqB;AACrB,SAAgB,SAAS,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC;AAFD,8BAEC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TrainingJobStatus = exports.BuiltinProviders = exports.PromptFormats = exports.ModelType = exports.AIModelStatus = exports.PromptRole = void 0;
4
+ // ============== Prompts ===============
5
+ var PromptRole;
6
+ (function (PromptRole) {
7
+ PromptRole["safety"] = "safety";
8
+ PromptRole["system"] = "system";
9
+ PromptRole["user"] = "user";
10
+ PromptRole["assistant"] = "assistant";
11
+ })(PromptRole || (exports.PromptRole = PromptRole = {}));
12
+ var AIModelStatus;
13
+ (function (AIModelStatus) {
14
+ AIModelStatus["Available"] = "available";
15
+ AIModelStatus["Pending"] = "pending";
16
+ AIModelStatus["Stopped"] = "stopped";
17
+ AIModelStatus["Unavailable"] = "unavailable";
18
+ AIModelStatus["Unknown"] = "unknown";
19
+ })(AIModelStatus || (exports.AIModelStatus = AIModelStatus = {}));
20
+ var ModelType;
21
+ (function (ModelType) {
22
+ ModelType["Classifier"] = "classifier";
23
+ ModelType["Regressor"] = "regressor";
24
+ ModelType["Clustering"] = "clustering";
25
+ ModelType["AnomalyDetection"] = "anomaly-detection";
26
+ ModelType["TimeSeries"] = "time-series";
27
+ ModelType["Text"] = "text";
28
+ ModelType["Image"] = "image";
29
+ ModelType["Audio"] = "audio";
30
+ ModelType["Video"] = "video";
31
+ ModelType["Embedding"] = "embedding";
32
+ ModelType["Chat"] = "chat";
33
+ ModelType["Code"] = "code";
34
+ ModelType["NLP"] = "nlp";
35
+ ModelType["MultiModal"] = "multi-modal";
36
+ ModelType["Test"] = "test";
37
+ ModelType["Other"] = "other";
38
+ ModelType["Unknown"] = "unknown";
39
+ })(ModelType || (exports.ModelType = ModelType = {}));
40
+ // ============== Built-in formats and drivers =====================
41
+ //TODO
42
+ var PromptFormats;
43
+ (function (PromptFormats) {
44
+ PromptFormats["openai"] = "openai";
45
+ PromptFormats["llama2"] = "llama2";
46
+ PromptFormats["claude"] = "claude";
47
+ PromptFormats["genericTextLLM"] = "genericTextLLM";
48
+ })(PromptFormats || (exports.PromptFormats = PromptFormats = {}));
49
+ var BuiltinProviders;
50
+ (function (BuiltinProviders) {
51
+ BuiltinProviders["openai"] = "openai";
52
+ BuiltinProviders["huggingface_ie"] = "huggingface_ie";
53
+ BuiltinProviders["replicate"] = "replicate";
54
+ BuiltinProviders["bedrock"] = "bedrock";
55
+ BuiltinProviders["vertexai"] = "vertexai";
56
+ BuiltinProviders["togetherai"] = "togetherai";
57
+ //virtual = 'virtual',
58
+ //cohere = 'cohere',
59
+ })(BuiltinProviders || (exports.BuiltinProviders = BuiltinProviders = {}));
60
+ var TrainingJobStatus;
61
+ (function (TrainingJobStatus) {
62
+ TrainingJobStatus["running"] = "running";
63
+ TrainingJobStatus["succeeded"] = "succeeded";
64
+ TrainingJobStatus["failed"] = "failed";
65
+ TrainingJobStatus["cancelled"] = "cancelled";
66
+ })(TrainingJobStatus || (exports.TrainingJobStatus = TrainingJobStatus = {}));
67
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAoDA,yCAAyC;AACzC,IAAY,UAKX;AALD,WAAY,UAAU;IAClB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,qCAAuB,CAAA;AAC3B,CAAC,EALW,UAAU,0BAAV,UAAU,QAKrB;AA8BD,IAAY,aAMX;AAND,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,oCAAmB,CAAA;IACnB,oCAAmB,CAAA;IACnB,4CAA2B,CAAA;IAC3B,oCAAmB,CAAA;AACvB,CAAC,EANW,aAAa,6BAAb,aAAa,QAMxB;AAiBD,IAAY,SAkBX;AAlBD,WAAY,SAAS;IACjB,sCAAyB,CAAA;IACzB,oCAAuB,CAAA;IACvB,sCAAyB,CAAA;IACzB,mDAAsC,CAAA;IACtC,uCAA0B,CAAA;IAC1B,0BAAa,CAAA;IACb,4BAAe,CAAA;IACf,4BAAe,CAAA;IACf,4BAAe,CAAA;IACf,oCAAuB,CAAA;IACvB,0BAAa,CAAA;IACb,0BAAa,CAAA;IACb,wBAAW,CAAA;IACX,uCAA0B,CAAA;IAC1B,0BAAa,CAAA;IACb,4BAAe,CAAA;IACf,gCAAmB,CAAA;AACvB,CAAC,EAlBW,SAAS,yBAAT,SAAS,QAkBpB;AAED,oEAAoE;AACpE,MAAM;AAEN,IAAY,aAKX;AALD,WAAY,aAAa;IACrB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,kDAAiC,CAAA;AACrC,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB;AAED,IAAY,gBASX;AATD,WAAY,gBAAgB;IACxB,qCAAiB,CAAA;IACjB,qDAAiC,CAAA;IACjC,2CAAuB,CAAA;IACvB,uCAAmB,CAAA;IACnB,yCAAqB,CAAA;IACrB,6CAAyB,CAAA;IACzB,0BAA0B;IAC1B,oBAAoB;AACxB,CAAC,EATW,gBAAgB,gCAAhB,gBAAgB,QAS3B;AAwBD,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,wCAAmB,CAAA;IACnB,4CAAuB,CAAA;IACvB,sCAAiB,CAAA;IACjB,4CAAuB,CAAA;AAC3B,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateResult = exports.ValidationError = void 0;
4
+ const json_schema_1 = require("json-schema");
5
+ const json_js_1 = require("./json.js");
6
+ class ValidationError extends Error {
7
+ code;
8
+ constructor(code, message) {
9
+ super(message);
10
+ this.code = code;
11
+ this.name = 'ValidationError';
12
+ }
13
+ }
14
+ exports.ValidationError = ValidationError;
15
+ function validateResult(data, schema) {
16
+ let json;
17
+ if (typeof data === "string") {
18
+ try {
19
+ json = (0, json_js_1.parseJSON)(data);
20
+ }
21
+ catch (error) {
22
+ throw new ValidationError("json_error", error.message);
23
+ }
24
+ }
25
+ else {
26
+ json = data;
27
+ }
28
+ const validation = (0, json_schema_1.validate)(json, schema);
29
+ if (!validation.valid) {
30
+ throw new ValidationError("validation_error", validation.errors.map(e => e.message).join(",\n"));
31
+ }
32
+ return json;
33
+ }
34
+ exports.validateResult = validateResult;
35
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AACpD,uCAAsC;AAGtC,MAAa,eAAgB,SAAQ,KAAK;IAE3B;IADX,YACW,IAAuC,EAC9C,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAA;QAHP,SAAI,GAAJ,IAAI,CAAmC;QAI9C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IACjC,CAAC;CACJ;AARD,0CAQC;AAED,SAAgB,cAAc,CAAC,IAAS,EAAE,MAAmB;IACzD,IAAI,IAAI,CAAC;IACT,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC;YACD,IAAI,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,IAAI,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QAC1D,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,UAAU,GAAG,IAAA,sBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,IAAI,eAAe,CACrB,kBAAkB,EAClB,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAnBD,wCAmBC"}