@llumiverse/core 0.23.0 → 0.24.0-dev.20260203.164053Z
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.
- package/README.md +141 -218
- package/package.json +3 -3
- package/src/CompletionStream.ts +70 -1
- package/src/Driver.ts +20 -0
- package/src/conversation-utils.ts +497 -0
- package/src/index.ts +1 -0
- package/src/stream.ts +1 -0
- package/lib/cjs/CompletionStream.js +0 -179
- package/lib/cjs/CompletionStream.js.map +0 -1
- package/lib/cjs/Driver.js +0 -180
- package/lib/cjs/Driver.js.map +0 -1
- package/lib/cjs/async.js +0 -131
- package/lib/cjs/async.js.map +0 -1
- package/lib/cjs/formatters/commons.js +0 -7
- package/lib/cjs/formatters/commons.js.map +0 -1
- package/lib/cjs/formatters/generic.js +0 -59
- package/lib/cjs/formatters/generic.js.map +0 -1
- package/lib/cjs/formatters/index.js +0 -20
- package/lib/cjs/formatters/index.js.map +0 -1
- package/lib/cjs/formatters/nova.js +0 -99
- package/lib/cjs/formatters/nova.js.map +0 -1
- package/lib/cjs/index.js +0 -21
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/json.js +0 -29
- package/lib/cjs/json.js.map +0 -1
- package/lib/cjs/package.json +0 -3
- package/lib/cjs/resolver.js +0 -45
- package/lib/cjs/resolver.js.map +0 -1
- package/lib/cjs/stream.js +0 -30
- package/lib/cjs/stream.js.map +0 -1
- package/lib/cjs/validation.js +0 -96
- package/lib/cjs/validation.js.map +0 -1
- package/lib/esm/CompletionStream.js +0 -174
- package/lib/esm/CompletionStream.js.map +0 -1
- package/lib/esm/Driver.js +0 -175
- package/lib/esm/Driver.js.map +0 -1
- package/lib/esm/async.js +0 -123
- package/lib/esm/async.js.map +0 -1
- package/lib/esm/formatters/commons.js +0 -4
- package/lib/esm/formatters/commons.js.map +0 -1
- package/lib/esm/formatters/generic.js +0 -55
- package/lib/esm/formatters/generic.js.map +0 -1
- package/lib/esm/formatters/index.js +0 -4
- package/lib/esm/formatters/index.js.map +0 -1
- package/lib/esm/formatters/nova.js +0 -96
- package/lib/esm/formatters/nova.js.map +0 -1
- package/lib/esm/index.js +0 -5
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/json.js +0 -25
- package/lib/esm/json.js.map +0 -1
- package/lib/esm/resolver.js +0 -42
- package/lib/esm/resolver.js.map +0 -1
- package/lib/esm/stream.js +0 -25
- package/lib/esm/stream.js.map +0 -1
- package/lib/esm/validation.js +0 -88
- package/lib/esm/validation.js.map +0 -1
- package/lib/types/CompletionStream.d.ts +0 -20
- package/lib/types/CompletionStream.d.ts.map +0 -1
- package/lib/types/Driver.d.ts +0 -75
- package/lib/types/Driver.d.ts.map +0 -1
- package/lib/types/async.d.ts +0 -27
- package/lib/types/async.d.ts.map +0 -1
- package/lib/types/formatters/commons.d.ts +0 -3
- package/lib/types/formatters/commons.d.ts.map +0 -1
- package/lib/types/formatters/generic.d.ts +0 -13
- package/lib/types/formatters/generic.d.ts.map +0 -1
- package/lib/types/formatters/index.d.ts +0 -4
- package/lib/types/formatters/index.d.ts.map +0 -1
- package/lib/types/formatters/nova.d.ts +0 -40
- package/lib/types/formatters/nova.d.ts.map +0 -1
- package/lib/types/index.d.ts +0 -5
- package/lib/types/index.d.ts.map +0 -1
- package/lib/types/json.d.ts +0 -4
- package/lib/types/json.d.ts.map +0 -1
- package/lib/types/resolver.d.ts +0 -2
- package/lib/types/resolver.d.ts.map +0 -1
- package/lib/types/stream.d.ts +0 -4
- package/lib/types/stream.d.ts.map +0 -1
- package/lib/types/validation.d.ts +0 -7
- package/lib/types/validation.d.ts.map +0 -1
package/lib/esm/async.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
export async function* asyncMap(asyncIterable, callback) {
|
|
2
|
-
let i = 0;
|
|
3
|
-
for await (const val of asyncIterable)
|
|
4
|
-
yield callback(val, i++);
|
|
5
|
-
}
|
|
6
|
-
export function oneAsyncIterator(value) {
|
|
7
|
-
return {
|
|
8
|
-
async *[Symbol.asyncIterator]() {
|
|
9
|
-
yield value;
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Given a ReadableStream of server sent events, tran
|
|
15
|
-
*/
|
|
16
|
-
export function transformSSEStream(stream, transform) {
|
|
17
|
-
// on node and bun the ReadableStream is an async iterable
|
|
18
|
-
return stream.pipeThrough(new TransformStream({
|
|
19
|
-
transform(event, controller) {
|
|
20
|
-
if (event.type === 'event' && event.data && event.data !== '[DONE]') {
|
|
21
|
-
try {
|
|
22
|
-
const result = transform(event.data) ?? '';
|
|
23
|
-
controller.enqueue(result);
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
// double check for the last event which is not a JSON - at this time togetherai and mistralai returns the string [DONE]
|
|
27
|
-
// do nothing - happens if data is not a JSON - the last event data is the [DONE] string
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}));
|
|
32
|
-
}
|
|
33
|
-
export class EventStream {
|
|
34
|
-
queue = [];
|
|
35
|
-
pending;
|
|
36
|
-
done = false;
|
|
37
|
-
push(event) {
|
|
38
|
-
if (this.done) {
|
|
39
|
-
throw new Error('Cannot push to a closed stream');
|
|
40
|
-
}
|
|
41
|
-
if (this.pending) {
|
|
42
|
-
this.pending.resolve({ value: event });
|
|
43
|
-
this.pending = undefined;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
this.queue.push(event);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Close the stream. This means the stream cannot be fed anymore.
|
|
51
|
-
* But the consumer can still consume the remaining events.
|
|
52
|
-
*/
|
|
53
|
-
close(value) {
|
|
54
|
-
this.done = true;
|
|
55
|
-
if (this.pending) {
|
|
56
|
-
this.pending.resolve({ done: true, value });
|
|
57
|
-
this.pending = undefined;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
[Symbol.asyncIterator]() {
|
|
61
|
-
const self = this;
|
|
62
|
-
return {
|
|
63
|
-
next() {
|
|
64
|
-
const next = self.queue.shift();
|
|
65
|
-
if (next !== undefined) {
|
|
66
|
-
return Promise.resolve({ value: next });
|
|
67
|
-
}
|
|
68
|
-
else if (self.done) {
|
|
69
|
-
return Promise.resolve({ done: true, value: undefined });
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
return new Promise((resolve, reject) => {
|
|
73
|
-
self.pending = { resolve, reject };
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
async return(value) {
|
|
78
|
-
self.done = true;
|
|
79
|
-
self.queue = [];
|
|
80
|
-
if (value === undefined) {
|
|
81
|
-
return { done: true, value: undefined };
|
|
82
|
-
}
|
|
83
|
-
const _value = await value;
|
|
84
|
-
return { done: true, value: _value };
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Transform an async iterator by applying a function to each value.
|
|
91
|
-
* @param originalGenerator
|
|
92
|
-
* @param transform
|
|
93
|
-
**/
|
|
94
|
-
export async function* transformAsyncIterator(originalGenerator, transform, initCallback) {
|
|
95
|
-
if (initCallback) {
|
|
96
|
-
yield initCallback();
|
|
97
|
-
}
|
|
98
|
-
for await (const value of originalGenerator) {
|
|
99
|
-
yield transform(value);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
//TODO move in a test file
|
|
103
|
-
// const max = 10; let cnt = 0;
|
|
104
|
-
// function feedStream(stream: EventStream<string>) {
|
|
105
|
-
// setTimeout(() => {
|
|
106
|
-
// cnt++;
|
|
107
|
-
// console.log('push: ', cnt, max);
|
|
108
|
-
// stream.push('event ' + cnt);
|
|
109
|
-
// if (cnt < max) {
|
|
110
|
-
// console.log('next: ', cnt, max);
|
|
111
|
-
// setTimeout(() => feedStream(stream), 1000);
|
|
112
|
-
// } else {
|
|
113
|
-
// console.log('end of stream');
|
|
114
|
-
// stream.close();
|
|
115
|
-
// }
|
|
116
|
-
// }, 1000);
|
|
117
|
-
// }
|
|
118
|
-
// const stream = new EventStream<string>();
|
|
119
|
-
// feedStream(stream);
|
|
120
|
-
// for await (const chunk of stream) {
|
|
121
|
-
// console.log('++++chunk:', chunk);
|
|
122
|
-
// }
|
|
123
|
-
//# sourceMappingURL=async.js.map
|
package/lib/esm/async.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/async.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/formatters/commons.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,MAAkB;IAClD,OAAO,qEAAqE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AACxH,CAAC"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { PromptRole } from "@llumiverse/common";
|
|
2
|
-
import { getJSONSafetyNotice } from "./commons.js";
|
|
3
|
-
export function createTextPromptFormatter(labels = {
|
|
4
|
-
user: "USER",
|
|
5
|
-
system: "CONTEXT",
|
|
6
|
-
assistant: "ASSISTANT",
|
|
7
|
-
safety: "IMPORTANT",
|
|
8
|
-
instruction: "INSTRUCTION"
|
|
9
|
-
}) {
|
|
10
|
-
return function genericTextPrompt(segments, schema) {
|
|
11
|
-
const isChat = segments.find(m => m.role === PromptRole.assistant);
|
|
12
|
-
const context = [];
|
|
13
|
-
const content = [];
|
|
14
|
-
const safety = [];
|
|
15
|
-
for (const segment of segments) {
|
|
16
|
-
switch (segment.role) {
|
|
17
|
-
case PromptRole.user:
|
|
18
|
-
if (isChat) {
|
|
19
|
-
content.push(`${labels.user}: ${segment.content}`);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
content.push(segment.content);
|
|
23
|
-
}
|
|
24
|
-
break;
|
|
25
|
-
case PromptRole.assistant:
|
|
26
|
-
content.push(`${labels.assistant}: ${segment.content}`);
|
|
27
|
-
break;
|
|
28
|
-
case PromptRole.system:
|
|
29
|
-
context.push(segment.content);
|
|
30
|
-
break;
|
|
31
|
-
case PromptRole.safety:
|
|
32
|
-
safety.push(segment.content);
|
|
33
|
-
break;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (schema) {
|
|
37
|
-
safety.push(getJSONSafetyNotice(schema));
|
|
38
|
-
}
|
|
39
|
-
const out = [];
|
|
40
|
-
if (context.length > 0) {
|
|
41
|
-
out.push(`${labels.system}: ${context.join('\n')}`);
|
|
42
|
-
}
|
|
43
|
-
if (content.length > 0) {
|
|
44
|
-
const prefix = context.length > 0 && !isChat ? `${labels.instruction}: ` : '';
|
|
45
|
-
out.push(prefix + content.join('\n'));
|
|
46
|
-
}
|
|
47
|
-
if (safety.length > 0) {
|
|
48
|
-
out.push(`${labels.safety}: ${safety.join('\n')}`);
|
|
49
|
-
}
|
|
50
|
-
return out.join('\n');
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
const formatTextPrompt = createTextPromptFormatter();
|
|
54
|
-
export { formatTextPrompt };
|
|
55
|
-
//# sourceMappingURL=generic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../src/formatters/generic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAUnD,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACvD,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,aAAa;CAC7B;IACG,OAAO,SAAS,iBAAiB,CAAC,QAAyB,EAAE,MAAmB;QAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,UAAU,CAAC,IAAI;oBAChB,IAAI,MAAM,EAAE,CAAC;wBACT,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvD,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAClC,CAAC;oBACD,MAAM;gBACV,KAAK,UAAU,CAAC,SAAS;oBACrB,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBACxD,MAAM;gBACV,KAAK,UAAU,CAAC,MAAM;oBAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC9B,MAAM;gBACV,KAAK,UAAU,CAAC,MAAM;oBAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC7B,MAAM;YACd,CAAC;QACL,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAA;AACL,CAAC;AAED,MAAM,gBAAgB,GAAG,yBAAyB,EAAE,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatters/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { PromptRole } from "@llumiverse/common";
|
|
2
|
-
import { readStreamAsBase64 } from "../stream.js";
|
|
3
|
-
import { getJSONSafetyNotice } from "./commons.js";
|
|
4
|
-
/**
|
|
5
|
-
* A formatter used by Bedrock to format prompts for nova related models
|
|
6
|
-
*/
|
|
7
|
-
export async function formatNovaPrompt(segments, schema) {
|
|
8
|
-
const system = [];
|
|
9
|
-
const safety = [];
|
|
10
|
-
const messages = [];
|
|
11
|
-
let negative = "";
|
|
12
|
-
let mask = "";
|
|
13
|
-
for (const segment of segments) {
|
|
14
|
-
const parts = [];
|
|
15
|
-
if (segment.files)
|
|
16
|
-
for (const f of segment.files) {
|
|
17
|
-
//TODO add video support
|
|
18
|
-
if (!f.mime_type?.startsWith('image')) {
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
const source = await f.getStream();
|
|
22
|
-
const data = await readStreamAsBase64(source);
|
|
23
|
-
const format = f.mime_type?.split('/')[1] || 'png';
|
|
24
|
-
parts.push({
|
|
25
|
-
image: {
|
|
26
|
-
format: format,
|
|
27
|
-
source: {
|
|
28
|
-
bytes: data
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
if (segment.content) {
|
|
34
|
-
parts.push({
|
|
35
|
-
text: segment.content
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
if (segment.role === PromptRole.system) {
|
|
39
|
-
system.push(segment.content);
|
|
40
|
-
}
|
|
41
|
-
else if (segment.role === PromptRole.safety) {
|
|
42
|
-
safety.push(segment.content);
|
|
43
|
-
}
|
|
44
|
-
else if (messages.length > 0 && messages[messages.length - 1].role === segment.role) {
|
|
45
|
-
//Maybe can remove for nova?
|
|
46
|
-
//concatenate messages of the same role (Claude requires alternative user and assistant roles)
|
|
47
|
-
messages[messages.length - 1].content.push(...parts);
|
|
48
|
-
}
|
|
49
|
-
else if (segment.role === PromptRole.negative) {
|
|
50
|
-
negative = negative.concat(segment.content, ', ');
|
|
51
|
-
}
|
|
52
|
-
else if (segment.role === PromptRole.mask) {
|
|
53
|
-
mask = mask.concat(segment.content, ' ');
|
|
54
|
-
}
|
|
55
|
-
else if (segment.role !== PromptRole.tool) {
|
|
56
|
-
messages.push({
|
|
57
|
-
role: segment.role,
|
|
58
|
-
content: parts
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (schema) {
|
|
63
|
-
safety.push("IMPORTANT: " + getJSONSafetyNotice(schema));
|
|
64
|
-
}
|
|
65
|
-
// messages must contains at least 1 item. If the prompt does not contains a user message (but only system messages)
|
|
66
|
-
// we need to put the system messages in the messages array
|
|
67
|
-
let systemMessage = system.join('\n').trim();
|
|
68
|
-
if (messages.length === 0) {
|
|
69
|
-
if (!systemMessage) {
|
|
70
|
-
throw new Error('Prompt must contain at least one message');
|
|
71
|
-
}
|
|
72
|
-
messages.push({ content: [{ text: systemMessage }], role: 'user' });
|
|
73
|
-
systemMessage = safety.join('\n');
|
|
74
|
-
}
|
|
75
|
-
else if (safety.length > 0) {
|
|
76
|
-
systemMessage = systemMessage + '\n\nIMPORTANT: ' + safety.join('\n');
|
|
77
|
-
}
|
|
78
|
-
/*start Nova's message to make sure it answers properly in JSON
|
|
79
|
-
if enabled, this requires to add the { to Nova's response*/
|
|
80
|
-
if (schema) {
|
|
81
|
-
messages.push({
|
|
82
|
-
role: "assistant",
|
|
83
|
-
content: [{
|
|
84
|
-
text: "{"
|
|
85
|
-
}]
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
// put system messages first and safety last
|
|
89
|
-
return {
|
|
90
|
-
system: systemMessage ? [{ text: systemMessage }] : [{ text: "" }],
|
|
91
|
-
messages: messages,
|
|
92
|
-
negative: negative || undefined,
|
|
93
|
-
mask: mask || undefined,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=nova.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nova.js","sourceRoot":"","sources":["../../../src/formatters/nova.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/index.js
DELETED
package/lib/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
|
package/lib/esm/json.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { jsonrepair } from 'jsonrepair';
|
|
2
|
-
function extractJsonFromText(text) {
|
|
3
|
-
const start = text.indexOf("{");
|
|
4
|
-
const end = text.lastIndexOf("}");
|
|
5
|
-
return text.substring(start, end + 1);
|
|
6
|
-
}
|
|
7
|
-
export function extractAndParseJSON(text) {
|
|
8
|
-
return parseJSON(extractJsonFromText(text));
|
|
9
|
-
}
|
|
10
|
-
export function parseJSON(text) {
|
|
11
|
-
text = text.trim();
|
|
12
|
-
try {
|
|
13
|
-
return JSON.parse(text);
|
|
14
|
-
}
|
|
15
|
-
catch (err) {
|
|
16
|
-
// use a relaxed parser
|
|
17
|
-
try {
|
|
18
|
-
return JSON.parse(jsonrepair(text));
|
|
19
|
-
}
|
|
20
|
-
catch (err2) { // throw the original error
|
|
21
|
-
throw err;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=json.js.map
|
package/lib/esm/json.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,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,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC5C,OAAO,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IAClC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,uBAAuB;QACvB,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,IAAS,EAAE,CAAC,CAAC,2BAA2B;YAC7C,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;AACL,CAAC"}
|
package/lib/esm/resolver.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Get the property named by "name" of the given object
|
|
3
|
-
* If an array is indexed using a string key then a map is done and an array with the content of the properties with that name are returned
|
|
4
|
-
* Ex: docs.text => will return an array of text properties of the docs array
|
|
5
|
-
* @param object the object
|
|
6
|
-
* @param name the name of the property.
|
|
7
|
-
* @returns the property value
|
|
8
|
-
*/
|
|
9
|
-
function _prop(object, name) {
|
|
10
|
-
if (object === undefined) {
|
|
11
|
-
return undefined;
|
|
12
|
-
}
|
|
13
|
-
if (Array.isArray(object)) {
|
|
14
|
-
const index = +name;
|
|
15
|
-
if (isNaN(index)) {
|
|
16
|
-
// map array to property
|
|
17
|
-
return object.map(item => item[name]);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
return object[index];
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
return object[name];
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
export function resolveField(object, path) {
|
|
28
|
-
let p = object;
|
|
29
|
-
if (!p)
|
|
30
|
-
return p;
|
|
31
|
-
if (!path.length)
|
|
32
|
-
return p;
|
|
33
|
-
const last = path.length - 1;
|
|
34
|
-
for (let i = 0; i < last; i++) {
|
|
35
|
-
p = _prop(p, path[i]);
|
|
36
|
-
if (!p) {
|
|
37
|
-
return undefined;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return _prop(p, path[last]);
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=resolver.js.map
|
package/lib/esm/resolver.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,SAAS,KAAK,CAAC,MAAW,EAAE,IAAY;IACpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC;QACpB,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACf,wBAAwB;YACxB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACJ,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;AAEL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAW,EAAE,IAAc;IACpD,IAAI,CAAC,GAAG,MAAa,CAAC;IACtB,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,CAAC,EAAE,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC"}
|
package/lib/esm/stream.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export async function readStreamAsBase64(stream) {
|
|
2
|
-
const uint8Array = await readStreamAsUint8Array(stream);
|
|
3
|
-
return Buffer.from(uint8Array).toString('base64');
|
|
4
|
-
}
|
|
5
|
-
export async function readStreamAsString(stream) {
|
|
6
|
-
const uint8Array = await readStreamAsUint8Array(stream);
|
|
7
|
-
return Buffer.from(uint8Array).toString();
|
|
8
|
-
}
|
|
9
|
-
export async function readStreamAsUint8Array(stream) {
|
|
10
|
-
const chunks = [];
|
|
11
|
-
let totalLength = 0;
|
|
12
|
-
for await (const chunk of stream) {
|
|
13
|
-
const uint8Chunk = chunk instanceof Uint8Array ? chunk : new Uint8Array(chunk);
|
|
14
|
-
chunks.push(uint8Chunk);
|
|
15
|
-
totalLength += uint8Chunk.length;
|
|
16
|
-
}
|
|
17
|
-
const combined = new Uint8Array(totalLength);
|
|
18
|
-
let offset = 0;
|
|
19
|
-
for (const chunk of chunks) {
|
|
20
|
-
combined.set(chunk, offset);
|
|
21
|
-
offset += chunk.length;
|
|
22
|
-
}
|
|
23
|
-
return combined;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=stream.js.map
|
package/lib/esm/stream.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAsB;IAC/D,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/E,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,WAAW,IAAI,UAAU,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
package/lib/esm/validation.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { Ajv } from 'ajv';
|
|
2
|
-
import addFormats from 'ajv-formats';
|
|
3
|
-
import { extractAndParseJSON } from "./json.js";
|
|
4
|
-
import { resolveField } from './resolver.js';
|
|
5
|
-
const ajv = new Ajv({
|
|
6
|
-
coerceTypes: 'array',
|
|
7
|
-
allowDate: true,
|
|
8
|
-
strict: false,
|
|
9
|
-
useDefaults: true,
|
|
10
|
-
removeAdditional: "failing"
|
|
11
|
-
});
|
|
12
|
-
//use ts ignore to avoid error with ESM and ajv-formats
|
|
13
|
-
// @ts-ignore This expression is not callable
|
|
14
|
-
addFormats(ajv);
|
|
15
|
-
export class ValidationError extends Error {
|
|
16
|
-
code;
|
|
17
|
-
constructor(code, message) {
|
|
18
|
-
super(message);
|
|
19
|
-
this.code = code;
|
|
20
|
-
this.name = 'ValidationError';
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function parseCompletionAsJson(data) {
|
|
24
|
-
let lastError;
|
|
25
|
-
for (const part of data) {
|
|
26
|
-
if (part.type === "text") {
|
|
27
|
-
const text = part.value.trim();
|
|
28
|
-
try {
|
|
29
|
-
return extractAndParseJSON(text);
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
lastError = new ValidationError("json_error", error.message);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (!lastError) {
|
|
37
|
-
lastError = new ValidationError("json_error", "No JSON compatible response found in completion result");
|
|
38
|
-
}
|
|
39
|
-
throw lastError;
|
|
40
|
-
}
|
|
41
|
-
export function validateResult(data, schema) {
|
|
42
|
-
let json;
|
|
43
|
-
if (Array.isArray(data)) {
|
|
44
|
-
const jsonResults = data.filter(r => r.type === "json");
|
|
45
|
-
if (jsonResults.length > 0) {
|
|
46
|
-
json = jsonResults[0].value;
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
try {
|
|
50
|
-
json = parseCompletionAsJson(data);
|
|
51
|
-
}
|
|
52
|
-
catch (error) {
|
|
53
|
-
throw new ValidationError("json_error", error.message);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
throw new Error("Data to validate must be an array");
|
|
59
|
-
}
|
|
60
|
-
const validate = ajv.compile(schema);
|
|
61
|
-
const valid = validate(json);
|
|
62
|
-
if (!valid && validate.errors) {
|
|
63
|
-
let errors = [];
|
|
64
|
-
for (const e of validate.errors) {
|
|
65
|
-
const path = e.instancePath.split("/").slice(1);
|
|
66
|
-
const value = resolveField(json, path);
|
|
67
|
-
const schemaPath = e.schemaPath.split("/").slice(1);
|
|
68
|
-
const schemaFieldFormat = resolveField(schema, schemaPath);
|
|
69
|
-
const schemaField = resolveField(schema, schemaPath.slice(0, -3));
|
|
70
|
-
//ignore date if empty or null
|
|
71
|
-
if (!value
|
|
72
|
-
&& ["date", "date-time"].includes(schemaFieldFormat)
|
|
73
|
-
&& !schemaField?.required?.includes(path[path.length - 1])) {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
errors.push(e);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//console.log("Errors", errors)
|
|
81
|
-
if (errors.length > 0) {
|
|
82
|
-
const errorsMessage = errors.map(e => `${e.instancePath}: ${e.message}\n${JSON.stringify(e.params)}`).join(",\n\n");
|
|
83
|
-
throw new ValidationError("validation_error", errorsMessage);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return [{ type: "json", value: json }];
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { CompletionStream, DriverOptions, ExecutionOptions, ExecutionResponse } from "@llumiverse/common";
|
|
2
|
-
import { AbstractDriver } from "./Driver.js";
|
|
3
|
-
export declare class DefaultCompletionStream<PromptT = any> implements CompletionStream<PromptT> {
|
|
4
|
-
driver: AbstractDriver<DriverOptions, PromptT>;
|
|
5
|
-
prompt: PromptT;
|
|
6
|
-
options: ExecutionOptions;
|
|
7
|
-
chunks: number;
|
|
8
|
-
completion: ExecutionResponse<PromptT> | undefined;
|
|
9
|
-
constructor(driver: AbstractDriver<DriverOptions, PromptT>, prompt: PromptT, options: ExecutionOptions);
|
|
10
|
-
[Symbol.asyncIterator](): AsyncGenerator<string, void, unknown>;
|
|
11
|
-
}
|
|
12
|
-
export declare class FallbackCompletionStream<PromptT = any> implements CompletionStream<PromptT> {
|
|
13
|
-
driver: AbstractDriver<DriverOptions, PromptT>;
|
|
14
|
-
prompt: PromptT;
|
|
15
|
-
options: ExecutionOptions;
|
|
16
|
-
completion: ExecutionResponse<PromptT> | undefined;
|
|
17
|
-
constructor(driver: AbstractDriver<DriverOptions, PromptT>, prompt: PromptT, options: ExecutionOptions);
|
|
18
|
-
[Symbol.asyncIterator](): AsyncGenerator<string, void, unknown>;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=CompletionStream.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CompletionStream.d.ts","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAuB,MAAM,oBAAoB,CAAC;AAC/H,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,qBAAa,uBAAuB,CAAC,OAAO,GAAG,GAAG,CAAE,YAAW,gBAAgB,CAAC,OAAO,CAAC;IAKjE,MAAM,EAAE,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC;IACtD,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,gBAAgB;IALpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;gBAEhC,MAAM,EAAE,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,EACtD,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,gBAAgB;IAI7B,CAAC,MAAM,CAAC,aAAa,CAAC;CA6HhC;AAED,qBAAa,wBAAwB,CAAC,OAAO,GAAG,GAAG,CAAE,YAAW,gBAAgB,CAAC,OAAO,CAAC;IAIlE,MAAM,EAAE,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC;IACtD,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,gBAAgB;IAJpC,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;gBAEhC,MAAM,EAAE,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,EACtD,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,gBAAgB;IAG7B,CAAC,MAAM,CAAC,aAAa,CAAC;CA8BhC"}
|
package/lib/types/Driver.d.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Classes to handle the execution of an interaction in an execution environment.
|
|
3
|
-
* Base abstract class is then implemented by each environment
|
|
4
|
-
* (eg: OpenAI, HuggingFace, etc.)
|
|
5
|
-
*/
|
|
6
|
-
import { AIModel, Completion, CompletionChunkObject, CompletionStream, DataSource, DriverOptions, EmbeddingsOptions, EmbeddingsResult, ExecutionOptions, ExecutionResponse, Logger, ModelSearchPayload, PromptOptions, PromptSegment, TrainingJob, TrainingOptions, TrainingPromptOptions } from "@llumiverse/common";
|
|
7
|
-
export declare function createLogger(logger: Logger | "console" | undefined): Logger;
|
|
8
|
-
export interface Driver<PromptT = unknown> {
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* @param segments
|
|
12
|
-
* @param completion
|
|
13
|
-
* @param model the model to train
|
|
14
|
-
*/
|
|
15
|
-
createTrainingPrompt(options: TrainingPromptOptions): Promise<string>;
|
|
16
|
-
createPrompt(segments: PromptSegment[], opts: ExecutionOptions): Promise<PromptT>;
|
|
17
|
-
execute(segments: PromptSegment[], options: ExecutionOptions): Promise<ExecutionResponse<PromptT>>;
|
|
18
|
-
stream(segments: PromptSegment[], options: ExecutionOptions): Promise<CompletionStream<PromptT>>;
|
|
19
|
-
startTraining(dataset: DataSource, options: TrainingOptions): Promise<TrainingJob>;
|
|
20
|
-
cancelTraining(jobId: string): Promise<TrainingJob>;
|
|
21
|
-
getTrainingJob(jobId: string): Promise<TrainingJob>;
|
|
22
|
-
listModels(params?: ModelSearchPayload): Promise<AIModel[]>;
|
|
23
|
-
listTrainableModels(): Promise<AIModel[]>;
|
|
24
|
-
validateConnection(): Promise<boolean>;
|
|
25
|
-
generateEmbeddings(options: EmbeddingsOptions): Promise<EmbeddingsResult>;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* To be implemented by each driver
|
|
29
|
-
*/
|
|
30
|
-
export declare abstract class AbstractDriver<OptionsT extends DriverOptions = DriverOptions, PromptT = unknown> implements Driver<PromptT> {
|
|
31
|
-
options: OptionsT;
|
|
32
|
-
logger: Logger;
|
|
33
|
-
abstract provider: string;
|
|
34
|
-
constructor(opts: OptionsT);
|
|
35
|
-
createTrainingPrompt(options: TrainingPromptOptions): Promise<string>;
|
|
36
|
-
startTraining(_dataset: DataSource, _options: TrainingOptions): Promise<TrainingJob>;
|
|
37
|
-
cancelTraining(_jobId: string): Promise<TrainingJob>;
|
|
38
|
-
getTrainingJob(_jobId: string): Promise<TrainingJob>;
|
|
39
|
-
validateResult(result: Completion, options: ExecutionOptions): void;
|
|
40
|
-
execute(segments: PromptSegment[], options: ExecutionOptions): Promise<ExecutionResponse<PromptT>>;
|
|
41
|
-
_execute(prompt: PromptT, options: ExecutionOptions): Promise<ExecutionResponse<PromptT>>;
|
|
42
|
-
protected isImageModel(_model: string): boolean;
|
|
43
|
-
stream(segments: PromptSegment[], options: ExecutionOptions): Promise<CompletionStream<PromptT>>;
|
|
44
|
-
/**
|
|
45
|
-
* Override this method to provide a custom prompt formatter
|
|
46
|
-
* @param segments
|
|
47
|
-
* @param options
|
|
48
|
-
* @returns
|
|
49
|
-
*/
|
|
50
|
-
protected formatPrompt(segments: PromptSegment[], opts: PromptOptions): Promise<PromptT>;
|
|
51
|
-
createPrompt(segments: PromptSegment[], opts: PromptOptions): Promise<PromptT>;
|
|
52
|
-
/**
|
|
53
|
-
* Must be overridden if the implementation cannot stream.
|
|
54
|
-
* Some implementation may be able to stream for certain models but not for others.
|
|
55
|
-
* You must overwrite and return false if the current model doesn't support streaming.
|
|
56
|
-
* The default implementation returns true, so it is assumed that the streaming can be done.
|
|
57
|
-
* If this method returns false then the streaming execution will fallback on a blocking execution streaming the entire response as a single event.
|
|
58
|
-
* @param options the execution options containing the target model name.
|
|
59
|
-
* @returns true if the execution can be streamed false otherwise.
|
|
60
|
-
*/
|
|
61
|
-
protected canStream(_options: ExecutionOptions): Promise<boolean>;
|
|
62
|
-
/**
|
|
63
|
-
* Get a list of models that can be trained.
|
|
64
|
-
* The default is to return an empty array
|
|
65
|
-
* @returns
|
|
66
|
-
*/
|
|
67
|
-
listTrainableModels(): Promise<AIModel[]>;
|
|
68
|
-
abstract requestTextCompletion(prompt: PromptT, options: ExecutionOptions): Promise<Completion>;
|
|
69
|
-
abstract requestTextCompletionStream(prompt: PromptT, options: ExecutionOptions): Promise<AsyncIterable<CompletionChunkObject>>;
|
|
70
|
-
requestImageGeneration(_prompt: PromptT, _options: ExecutionOptions): Promise<Completion>;
|
|
71
|
-
abstract listModels(params?: ModelSearchPayload): Promise<AIModel[]>;
|
|
72
|
-
abstract validateConnection(): Promise<boolean>;
|
|
73
|
-
abstract generateEmbeddings(options: EmbeddingsOptions): Promise<EmbeddingsResult>;
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=Driver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Driver.d.ts","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"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"}
|