@llumiverse/core 0.20.0 → 0.22.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.
- package/lib/cjs/CompletionStream.js +45 -26
- package/lib/cjs/CompletionStream.js.map +1 -1
- package/lib/cjs/Driver.js +4 -1
- package/lib/cjs/Driver.js.map +1 -1
- package/lib/cjs/formatters/index.js +0 -1
- package/lib/cjs/formatters/index.js.map +1 -1
- package/lib/cjs/stream.js +3 -1
- package/lib/cjs/stream.js.map +1 -1
- package/lib/esm/CompletionStream.js +45 -26
- package/lib/esm/CompletionStream.js.map +1 -1
- package/lib/esm/Driver.js +4 -1
- package/lib/esm/Driver.js.map +1 -1
- package/lib/esm/formatters/index.js +0 -1
- package/lib/esm/formatters/index.js.map +1 -1
- package/lib/esm/stream.js +3 -1
- package/lib/esm/stream.js.map +1 -1
- package/lib/types/CompletionStream.d.ts +1 -1
- package/lib/types/CompletionStream.d.ts.map +1 -1
- package/lib/types/Driver.d.ts.map +1 -1
- package/lib/types/formatters/index.d.ts +0 -1
- package/lib/types/formatters/index.d.ts.map +1 -1
- package/lib/types/stream.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/CompletionStream.ts +44 -29
- package/src/Driver.ts +4 -1
- package/src/formatters/index.ts +0 -1
- package/src/stream.ts +3 -1
- package/lib/cjs/formatters/openai.js +0 -113
- package/lib/cjs/formatters/openai.js.map +0 -1
- package/lib/esm/formatters/openai.js +0 -109
- package/lib/esm/formatters/openai.js.map +0 -1
- package/lib/types/formatters/openai.d.ts +0 -41
- package/lib/types/formatters/openai.d.ts.map +0 -1
- package/src/formatters/openai.ts +0 -159
|
@@ -20,36 +20,43 @@ class DefaultCompletionStream {
|
|
|
20
20
|
this.chunks = [];
|
|
21
21
|
}
|
|
22
22
|
const chunks = this.chunks;
|
|
23
|
-
this.driver.logger.debug(`[${this.driver.provider}] Streaming Execution of ${this.options.model} with prompt
|
|
23
|
+
this.driver.logger.debug(`[${this.driver.provider}] Streaming Execution of ${this.options.model} with prompt`);
|
|
24
24
|
const start = Date.now();
|
|
25
|
-
|
|
25
|
+
let stream;
|
|
26
26
|
let finish_reason = undefined;
|
|
27
27
|
let promptTokens = 0;
|
|
28
28
|
let resultTokens = undefined;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (chunk.finish_reason) { //Do not replace non-null values with null values
|
|
37
|
-
finish_reason = chunk.finish_reason; //Used to skip empty finish_reason chunks coming after "stop" or "length"
|
|
38
|
-
}
|
|
39
|
-
if (chunk.token_usage) {
|
|
40
|
-
//Tokens returned include prior parts of stream,
|
|
41
|
-
//so overwrite rather than accumulate
|
|
42
|
-
//Math.max used as some models report final token count at beginning of stream
|
|
43
|
-
promptTokens = Math.max(promptTokens, chunk.token_usage.prompt ?? 0);
|
|
44
|
-
resultTokens = Math.max(resultTokens ?? 0, chunk.token_usage.result ?? 0);
|
|
29
|
+
try {
|
|
30
|
+
stream = await this.driver.requestTextCompletionStream(this.prompt, this.options);
|
|
31
|
+
for await (const chunk of stream) {
|
|
32
|
+
if (chunk) {
|
|
33
|
+
if (typeof chunk === 'string') {
|
|
34
|
+
chunks.push(chunk);
|
|
35
|
+
yield chunk;
|
|
45
36
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
37
|
+
else {
|
|
38
|
+
if (chunk.finish_reason) { //Do not replace non-null values with null values
|
|
39
|
+
finish_reason = chunk.finish_reason; //Used to skip empty finish_reason chunks coming after "stop" or "length"
|
|
40
|
+
}
|
|
41
|
+
if (chunk.token_usage) {
|
|
42
|
+
//Tokens returned include prior parts of stream,
|
|
43
|
+
//so overwrite rather than accumulate
|
|
44
|
+
//Math.max used as some models report final token count at beginning of stream
|
|
45
|
+
promptTokens = Math.max(promptTokens, chunk.token_usage.prompt ?? 0);
|
|
46
|
+
resultTokens = Math.max(resultTokens ?? 0, chunk.token_usage.result ?? 0);
|
|
47
|
+
}
|
|
48
|
+
if (chunk.result) {
|
|
49
|
+
chunks.push(chunk.result);
|
|
50
|
+
yield chunk.result;
|
|
51
|
+
}
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
55
|
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
error.prompt = this.prompt;
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
53
60
|
const content = chunks.join('');
|
|
54
61
|
// Return undefined for the ExecutionTokenUsage object if there is nothing to fill it with.
|
|
55
62
|
// Allows for checking for truthyness on token_usage, rather than it's internals. For testing and downstream usage.
|
|
@@ -63,7 +70,13 @@ class DefaultCompletionStream {
|
|
|
63
70
|
finish_reason: finish_reason,
|
|
64
71
|
chunks: chunks.length,
|
|
65
72
|
};
|
|
66
|
-
|
|
73
|
+
try {
|
|
74
|
+
this.driver.validateResult(this.completion, this.options);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
error.prompt = this.prompt;
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
67
80
|
}
|
|
68
81
|
}
|
|
69
82
|
exports.DefaultCompletionStream = DefaultCompletionStream;
|
|
@@ -81,10 +94,16 @@ class FallbackCompletionStream {
|
|
|
81
94
|
// reset state
|
|
82
95
|
this.completion = undefined;
|
|
83
96
|
this.driver.logger.debug(`[${this.driver.provider}] Streaming is not supported, falling back to blocking execution`);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
97
|
+
try {
|
|
98
|
+
const completion = await this.driver._execute(this.prompt, this.options);
|
|
99
|
+
const content = typeof completion.result === 'string' ? completion.result : JSON.stringify(completion.result);
|
|
100
|
+
yield content;
|
|
101
|
+
this.completion = completion;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
error.prompt = this.prompt;
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
88
107
|
}
|
|
89
108
|
}
|
|
90
109
|
exports.FallbackCompletionStream = FallbackCompletionStream;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompletionStream.js","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":";;;AAGA,MAAa,uBAAuB;IAKb;IACR;IACA;IALX,MAAM,CAAW;IACjB,UAAU,CAAyC;IAEnD,YAAmB,MAA8C,EACtD,MAAe,EACf,OAAyB;QAFjB,WAAM,GAAN,MAAM,CAAwC;QACtD,WAAM,GAAN,MAAM,CAAS;QACf,YAAO,GAAP,OAAO,CAAkB;QAChC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QACzB,cAAc;QACd,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CACpB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,4BAA4B,IAAI,CAAC,OAAO,CAAC,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"CompletionStream.js","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/Driver.js
CHANGED
|
@@ -78,7 +78,10 @@ class AbstractDriver {
|
|
|
78
78
|
}
|
|
79
79
|
async execute(segments, options) {
|
|
80
80
|
const prompt = await this.createPrompt(segments, options);
|
|
81
|
-
return this._execute(prompt, options)
|
|
81
|
+
return this._execute(prompt, options).catch((error) => {
|
|
82
|
+
error.prompt = prompt;
|
|
83
|
+
throw error;
|
|
84
|
+
});
|
|
82
85
|
}
|
|
83
86
|
async _execute(prompt, options) {
|
|
84
87
|
this.logger.debug(`[${this.provider}] Executing prompt on ${options.model}`);
|
package/lib/cjs/Driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Driver.js","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Driver.js","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./commons.js"), exports);
|
|
18
18
|
__exportStar(require("./generic.js"), exports);
|
|
19
|
-
__exportStar(require("./openai.js"), exports);
|
|
20
19
|
__exportStar(require("./nova.js"), exports);
|
|
21
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,+CAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,+CAA6B;AAC7B,4CAA0B"}
|
package/lib/cjs/stream.js
CHANGED
|
@@ -10,7 +10,9 @@ async function readStreamAsString(stream) {
|
|
|
10
10
|
return (await _readStreamAsBuffer(stream)).toString();
|
|
11
11
|
}
|
|
12
12
|
async function readStreamAsUint8Array(stream) {
|
|
13
|
-
return
|
|
13
|
+
// We return a Uint8Array for strict type checking, even though the buffer extends Uint8Array.
|
|
14
|
+
const buffer = await _readStreamAsBuffer(stream);
|
|
15
|
+
return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
14
16
|
}
|
|
15
17
|
async function _readStreamAsBuffer(stream) {
|
|
16
18
|
const out = [];
|
package/lib/cjs/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":";;AACA,gDAEC;AAED,gDAEC;AAED,
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":";;AACA,gDAEC;AAED,gDAEC;AAED,wDAIC;AAZM,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,OAAO,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClE,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,OAAO,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC1D,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAAC,MAAsB;IAC/D,8FAA8F;IAC9F,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AAC/E,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,MAAsB;IACrD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -17,36 +17,43 @@ export class DefaultCompletionStream {
|
|
|
17
17
|
this.chunks = [];
|
|
18
18
|
}
|
|
19
19
|
const chunks = this.chunks;
|
|
20
|
-
this.driver.logger.debug(`[${this.driver.provider}] Streaming Execution of ${this.options.model} with prompt
|
|
20
|
+
this.driver.logger.debug(`[${this.driver.provider}] Streaming Execution of ${this.options.model} with prompt`);
|
|
21
21
|
const start = Date.now();
|
|
22
|
-
|
|
22
|
+
let stream;
|
|
23
23
|
let finish_reason = undefined;
|
|
24
24
|
let promptTokens = 0;
|
|
25
25
|
let resultTokens = undefined;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (chunk.finish_reason) { //Do not replace non-null values with null values
|
|
34
|
-
finish_reason = chunk.finish_reason; //Used to skip empty finish_reason chunks coming after "stop" or "length"
|
|
35
|
-
}
|
|
36
|
-
if (chunk.token_usage) {
|
|
37
|
-
//Tokens returned include prior parts of stream,
|
|
38
|
-
//so overwrite rather than accumulate
|
|
39
|
-
//Math.max used as some models report final token count at beginning of stream
|
|
40
|
-
promptTokens = Math.max(promptTokens, chunk.token_usage.prompt ?? 0);
|
|
41
|
-
resultTokens = Math.max(resultTokens ?? 0, chunk.token_usage.result ?? 0);
|
|
26
|
+
try {
|
|
27
|
+
stream = await this.driver.requestTextCompletionStream(this.prompt, this.options);
|
|
28
|
+
for await (const chunk of stream) {
|
|
29
|
+
if (chunk) {
|
|
30
|
+
if (typeof chunk === 'string') {
|
|
31
|
+
chunks.push(chunk);
|
|
32
|
+
yield chunk;
|
|
42
33
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
34
|
+
else {
|
|
35
|
+
if (chunk.finish_reason) { //Do not replace non-null values with null values
|
|
36
|
+
finish_reason = chunk.finish_reason; //Used to skip empty finish_reason chunks coming after "stop" or "length"
|
|
37
|
+
}
|
|
38
|
+
if (chunk.token_usage) {
|
|
39
|
+
//Tokens returned include prior parts of stream,
|
|
40
|
+
//so overwrite rather than accumulate
|
|
41
|
+
//Math.max used as some models report final token count at beginning of stream
|
|
42
|
+
promptTokens = Math.max(promptTokens, chunk.token_usage.prompt ?? 0);
|
|
43
|
+
resultTokens = Math.max(resultTokens ?? 0, chunk.token_usage.result ?? 0);
|
|
44
|
+
}
|
|
45
|
+
if (chunk.result) {
|
|
46
|
+
chunks.push(chunk.result);
|
|
47
|
+
yield chunk.result;
|
|
48
|
+
}
|
|
46
49
|
}
|
|
47
50
|
}
|
|
48
51
|
}
|
|
49
52
|
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
error.prompt = this.prompt;
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
50
57
|
const content = chunks.join('');
|
|
51
58
|
// Return undefined for the ExecutionTokenUsage object if there is nothing to fill it with.
|
|
52
59
|
// Allows for checking for truthyness on token_usage, rather than it's internals. For testing and downstream usage.
|
|
@@ -60,7 +67,13 @@ export class DefaultCompletionStream {
|
|
|
60
67
|
finish_reason: finish_reason,
|
|
61
68
|
chunks: chunks.length,
|
|
62
69
|
};
|
|
63
|
-
|
|
70
|
+
try {
|
|
71
|
+
this.driver.validateResult(this.completion, this.options);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
error.prompt = this.prompt;
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
64
77
|
}
|
|
65
78
|
}
|
|
66
79
|
export class FallbackCompletionStream {
|
|
@@ -77,10 +90,16 @@ export class FallbackCompletionStream {
|
|
|
77
90
|
// reset state
|
|
78
91
|
this.completion = undefined;
|
|
79
92
|
this.driver.logger.debug(`[${this.driver.provider}] Streaming is not supported, falling back to blocking execution`);
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
93
|
+
try {
|
|
94
|
+
const completion = await this.driver._execute(this.prompt, this.options);
|
|
95
|
+
const content = typeof completion.result === 'string' ? completion.result : JSON.stringify(completion.result);
|
|
96
|
+
yield content;
|
|
97
|
+
this.completion = completion;
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
error.prompt = this.prompt;
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
84
103
|
}
|
|
85
104
|
}
|
|
86
105
|
//# sourceMappingURL=CompletionStream.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompletionStream.js","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,uBAAuB;IAKb;IACR;IACA;IALX,MAAM,CAAW;IACjB,UAAU,CAAyC;IAEnD,YAAmB,MAA8C,EACtD,MAAe,EACf,OAAyB;QAFjB,WAAM,GAAN,MAAM,CAAwC;QACtD,WAAM,GAAN,MAAM,CAAS;QACf,YAAO,GAAP,OAAO,CAAkB;QAChC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QACzB,cAAc;QACd,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CACpB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,4BAA4B,IAAI,CAAC,OAAO,CAAC,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"CompletionStream.js","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/Driver.js
CHANGED
|
@@ -74,7 +74,10 @@ export class AbstractDriver {
|
|
|
74
74
|
}
|
|
75
75
|
async execute(segments, options) {
|
|
76
76
|
const prompt = await this.createPrompt(segments, options);
|
|
77
|
-
return this._execute(prompt, options)
|
|
77
|
+
return this._execute(prompt, options).catch((error) => {
|
|
78
|
+
error.prompt = prompt;
|
|
79
|
+
throw error;
|
|
80
|
+
});
|
|
78
81
|
}
|
|
79
82
|
async _execute(prompt, options) {
|
|
80
83
|
this.logger.debug(`[${this.provider}] Executing prompt on ${options.model}`);
|
package/lib/esm/Driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Driver.js","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Driver.js","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatters/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
|
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"}
|
package/lib/esm/stream.js
CHANGED
|
@@ -5,7 +5,9 @@ export async function readStreamAsString(stream) {
|
|
|
5
5
|
return (await _readStreamAsBuffer(stream)).toString();
|
|
6
6
|
}
|
|
7
7
|
export async function readStreamAsUint8Array(stream) {
|
|
8
|
-
return
|
|
8
|
+
// We return a Uint8Array for strict type checking, even though the buffer extends Uint8Array.
|
|
9
|
+
const buffer = await _readStreamAsBuffer(stream);
|
|
10
|
+
return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
9
11
|
}
|
|
10
12
|
async function _readStreamAsBuffer(stream) {
|
|
11
13
|
const out = [];
|
package/lib/esm/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,OAAO,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,OAAO,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAsB;IAC/D,
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,OAAO,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC3D,OAAO,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAsB;IAC/D,8FAA8F;IAC9F,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AAC/E,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,MAAsB;IACrD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AbstractDriver } from "./Driver.js";
|
|
2
1
|
import { CompletionStream, DriverOptions, ExecutionOptions, ExecutionResponse } from "@llumiverse/common";
|
|
2
|
+
import { AbstractDriver } from "./Driver.js";
|
|
3
3
|
export declare class DefaultCompletionStream<PromptT = any> implements CompletionStream<PromptT> {
|
|
4
4
|
driver: AbstractDriver<DriverOptions, PromptT>;
|
|
5
5
|
prompt: PromptT;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompletionStream.d.ts","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
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,EAAE,CAAC;IACjB,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;CAwEhC;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;CAgBhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Driver.d.ts","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACH,OAAO,EACP,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,MAAM,EAEN,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,EACf,qBAAqB,EACxB,MAAM,oBAAoB,CAAC;AAkB5B,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,UAQlE;AAED,MAAM,WAAW,MAAM,CAAC,OAAO,GAAG,OAAO;IAErC;;;;;OAKG;IACH,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtE,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElF,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IAInG,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjG,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEnF,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEpD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAGpD,UAAU,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAG5D,mBAAmB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAG1C,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAGvC,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAE7E;AAED;;GAEG;AACH,8BAAsB,cAAc,CAAC,QAAQ,SAAS,aAAa,GAAG,aAAa,EAAE,OAAO,GAAG,OAAO,CAAE,YAAW,MAAM,CAAC,OAAO,CAAC;IAC9H,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,IAAI,EAAE,QAAQ;IAKpB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ3E,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAIpF,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIpD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIpD,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB;IAetD,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Driver.d.ts","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/formatters/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/formatters/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhF;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhF;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhF;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhF;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAIxF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llumiverse/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Provide an universal API to LLMs. Support for existing LLMs can be added by writing a driver.",
|
|
6
6
|
"files": [
|
|
@@ -63,17 +63,17 @@
|
|
|
63
63
|
"url": "git+ssh://git@github.com/vertesia/llumiverse.git"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
|
-
"@vertesia/api-fetch-client": "^0.
|
|
67
|
-
"rimraf": "^6.0.
|
|
66
|
+
"@vertesia/api-fetch-client": "^0.72.0",
|
|
67
|
+
"rimraf": "^6.0.1",
|
|
68
68
|
"ts-dual-module": "^0.6.3",
|
|
69
|
-
"typescript": "^5.
|
|
70
|
-
"vitest": "^3.
|
|
69
|
+
"typescript": "^5.8.3",
|
|
70
|
+
"vitest": "^3.2.4"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@types/node": "^22.
|
|
74
|
-
"ajv": "^8.
|
|
73
|
+
"@types/node": "^22.17.0",
|
|
74
|
+
"ajv": "^8.17.1",
|
|
75
75
|
"ajv-formats": "^3.0.1",
|
|
76
|
-
"@llumiverse/common": "0.
|
|
76
|
+
"@llumiverse/common": "0.22.0"
|
|
77
77
|
},
|
|
78
78
|
"ts_dual_module": {
|
|
79
79
|
"outDir": "lib",
|
package/src/CompletionStream.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AbstractDriver } from "./Driver.js";
|
|
2
1
|
import { CompletionStream, DriverOptions, ExecutionOptions, ExecutionResponse, ExecutionTokenUsage } from "@llumiverse/common";
|
|
2
|
+
import { AbstractDriver } from "./Driver.js";
|
|
3
3
|
|
|
4
4
|
export class DefaultCompletionStream<PromptT = any> implements CompletionStream<PromptT> {
|
|
5
5
|
|
|
@@ -21,37 +21,43 @@ export class DefaultCompletionStream<PromptT = any> implements CompletionStream<
|
|
|
21
21
|
const chunks = this.chunks;
|
|
22
22
|
|
|
23
23
|
this.driver.logger.debug(
|
|
24
|
-
`[${this.driver.provider}] Streaming Execution of ${this.options.model} with prompt`,
|
|
24
|
+
`[${this.driver.provider}] Streaming Execution of ${this.options.model} with prompt`,
|
|
25
25
|
);
|
|
26
26
|
|
|
27
27
|
const start = Date.now();
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
let stream;
|
|
30
29
|
let finish_reason: string | undefined = undefined;
|
|
31
30
|
let promptTokens: number = 0;
|
|
32
31
|
let resultTokens: number | undefined = undefined;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
stream = await this.driver.requestTextCompletionStream(this.prompt, this.options);
|
|
35
|
+
for await (const chunk of stream) {
|
|
36
|
+
if (chunk) {
|
|
37
|
+
if (typeof chunk === 'string') {
|
|
38
|
+
chunks.push(chunk);
|
|
39
|
+
yield chunk;
|
|
40
|
+
} else {
|
|
41
|
+
if (chunk.finish_reason) { //Do not replace non-null values with null values
|
|
42
|
+
finish_reason = chunk.finish_reason; //Used to skip empty finish_reason chunks coming after "stop" or "length"
|
|
43
|
+
}
|
|
44
|
+
if (chunk.token_usage) {
|
|
45
|
+
//Tokens returned include prior parts of stream,
|
|
46
|
+
//so overwrite rather than accumulate
|
|
47
|
+
//Math.max used as some models report final token count at beginning of stream
|
|
48
|
+
promptTokens = Math.max(promptTokens, chunk.token_usage.prompt ?? 0);
|
|
49
|
+
resultTokens = Math.max(resultTokens ?? 0, chunk.token_usage.result ?? 0);
|
|
50
|
+
}
|
|
51
|
+
if (chunk.result) {
|
|
52
|
+
chunks.push(chunk.result);
|
|
53
|
+
yield chunk.result;
|
|
54
|
+
}
|
|
52
55
|
}
|
|
53
56
|
}
|
|
54
57
|
}
|
|
58
|
+
} catch (error: any) {
|
|
59
|
+
error.prompt = this.prompt;
|
|
60
|
+
throw error;
|
|
55
61
|
}
|
|
56
62
|
|
|
57
63
|
const content = chunks.join('');
|
|
@@ -70,7 +76,12 @@ export class DefaultCompletionStream<PromptT = any> implements CompletionStream<
|
|
|
70
76
|
chunks: chunks.length,
|
|
71
77
|
}
|
|
72
78
|
|
|
73
|
-
|
|
79
|
+
try {
|
|
80
|
+
this.driver.validateResult(this.completion, this.options);
|
|
81
|
+
} catch (error: any) {
|
|
82
|
+
error.prompt = this.prompt;
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
74
85
|
}
|
|
75
86
|
|
|
76
87
|
}
|
|
@@ -90,10 +101,14 @@ export class FallbackCompletionStream<PromptT = any> implements CompletionStream
|
|
|
90
101
|
this.driver.logger.debug(
|
|
91
102
|
`[${this.driver.provider}] Streaming is not supported, falling back to blocking execution`
|
|
92
103
|
);
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
104
|
+
try {
|
|
105
|
+
const completion = await this.driver._execute(this.prompt, this.options);
|
|
106
|
+
const content = typeof completion.result === 'string' ? completion.result : JSON.stringify(completion.result);
|
|
107
|
+
yield content;
|
|
108
|
+
this.completion = completion;
|
|
109
|
+
} catch (error: any) {
|
|
110
|
+
error.prompt = this.prompt;
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
98
113
|
}
|
|
99
114
|
}
|
package/src/Driver.ts
CHANGED
|
@@ -143,7 +143,10 @@ export abstract class AbstractDriver<OptionsT extends DriverOptions = DriverOpti
|
|
|
143
143
|
|
|
144
144
|
async execute(segments: PromptSegment[], options: ExecutionOptions): Promise<ExecutionResponse<PromptT>> {
|
|
145
145
|
const prompt = await this.createPrompt(segments, options);
|
|
146
|
-
return this._execute(prompt, options)
|
|
146
|
+
return this._execute(prompt, options).catch((error: any) => {
|
|
147
|
+
(error as any).prompt = prompt;
|
|
148
|
+
throw error;
|
|
149
|
+
});
|
|
147
150
|
}
|
|
148
151
|
|
|
149
152
|
async _execute(prompt: PromptT, options: ExecutionOptions): Promise<ExecutionResponse<PromptT>> {
|
package/src/formatters/index.ts
CHANGED
package/src/stream.ts
CHANGED
|
@@ -8,7 +8,9 @@ export async function readStreamAsString(stream: ReadableStream): Promise<string
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export async function readStreamAsUint8Array(stream: ReadableStream): Promise<Uint8Array> {
|
|
11
|
-
return
|
|
11
|
+
// We return a Uint8Array for strict type checking, even though the buffer extends Uint8Array.
|
|
12
|
+
const buffer = await _readStreamAsBuffer(stream);
|
|
13
|
+
return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
12
14
|
}
|
|
13
15
|
|
|
14
16
|
async function _readStreamAsBuffer(stream: ReadableStream): Promise<Buffer> {
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.formatOpenAILikeTextPrompt = formatOpenAILikeTextPrompt;
|
|
4
|
-
exports.formatOpenAILikeMultimodalPrompt = formatOpenAILikeMultimodalPrompt;
|
|
5
|
-
const common_1 = require("@llumiverse/common");
|
|
6
|
-
const stream_js_1 = require("../stream.js");
|
|
7
|
-
/**
|
|
8
|
-
* OpenAI text only prompts
|
|
9
|
-
* @param segments
|
|
10
|
-
* @returns
|
|
11
|
-
*/
|
|
12
|
-
function formatOpenAILikeTextPrompt(segments) {
|
|
13
|
-
const system = [];
|
|
14
|
-
const safety = [];
|
|
15
|
-
const user = [];
|
|
16
|
-
for (const msg of segments) {
|
|
17
|
-
if (msg.role === common_1.PromptRole.system) {
|
|
18
|
-
system.push({ content: msg.content, role: "system" });
|
|
19
|
-
}
|
|
20
|
-
else if (msg.role === common_1.PromptRole.safety) {
|
|
21
|
-
safety.push({ content: "IMPORTANT: " + msg.content, role: "system" });
|
|
22
|
-
}
|
|
23
|
-
else if (msg.role !== common_1.PromptRole.negative && msg.role !== common_1.PromptRole.mask && msg.role !== common_1.PromptRole.tool) {
|
|
24
|
-
user.push({
|
|
25
|
-
content: msg.content,
|
|
26
|
-
role: msg.role || 'user',
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
// put system messages first and safety last
|
|
31
|
-
return system.concat(user).concat(safety);
|
|
32
|
-
}
|
|
33
|
-
async function formatOpenAILikeMultimodalPrompt(segments, opts) {
|
|
34
|
-
const system = [];
|
|
35
|
-
const safety = [];
|
|
36
|
-
const others = [];
|
|
37
|
-
for (const msg of segments) {
|
|
38
|
-
const parts = [];
|
|
39
|
-
//generate the parts based on PromptSegment
|
|
40
|
-
if (msg.files) {
|
|
41
|
-
for (const file of msg.files) {
|
|
42
|
-
const stream = await file.getStream();
|
|
43
|
-
const data = await (0, stream_js_1.readStreamAsBase64)(stream);
|
|
44
|
-
parts.push({
|
|
45
|
-
type: "image_url",
|
|
46
|
-
image_url: {
|
|
47
|
-
url: `data:${file.mime_type || "image/jpeg"};base64,${data}`,
|
|
48
|
-
//detail: "auto" //This is modified just before execution to "low" | "high" | "auto"
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
if (msg.content) {
|
|
54
|
-
parts.push({
|
|
55
|
-
text: msg.content,
|
|
56
|
-
type: "text"
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
if (msg.role === common_1.PromptRole.system) {
|
|
60
|
-
system.push({
|
|
61
|
-
role: "system",
|
|
62
|
-
content: parts
|
|
63
|
-
});
|
|
64
|
-
if (opts.useToolForFormatting && opts.schema) {
|
|
65
|
-
system.forEach(s => {
|
|
66
|
-
s.content.forEach(c => {
|
|
67
|
-
if (c.type === "text")
|
|
68
|
-
c.text = "TOOL: " + c.text;
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
else if (msg.role === common_1.PromptRole.safety) {
|
|
74
|
-
const safetyMsg = {
|
|
75
|
-
role: "system",
|
|
76
|
-
content: parts
|
|
77
|
-
};
|
|
78
|
-
safetyMsg.content.forEach(c => {
|
|
79
|
-
if (c.type === "text")
|
|
80
|
-
c.text = "DO NOT IGNORE - IMPORTANT: " + c.text;
|
|
81
|
-
});
|
|
82
|
-
system.push(safetyMsg);
|
|
83
|
-
}
|
|
84
|
-
else if (msg.role === common_1.PromptRole.tool) {
|
|
85
|
-
if (!msg.tool_use_id) {
|
|
86
|
-
throw new Error("Tool use id is required for tool messages");
|
|
87
|
-
}
|
|
88
|
-
others.push({
|
|
89
|
-
role: "tool",
|
|
90
|
-
tool_call_id: msg.tool_use_id,
|
|
91
|
-
content: msg.content
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
else if (msg.role !== common_1.PromptRole.negative && msg.role !== common_1.PromptRole.mask) {
|
|
95
|
-
others.push({
|
|
96
|
-
role: msg.role ?? 'user',
|
|
97
|
-
content: parts
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
if (opts.result_schema && !opts.useToolForFormatting) {
|
|
102
|
-
system.push({
|
|
103
|
-
role: "system",
|
|
104
|
-
content: [{
|
|
105
|
-
type: "text",
|
|
106
|
-
text: "IMPORTANT: only answer using JSON, and respecting the schema included below, between the <response_schema> tags. " + `<response_schema>${JSON.stringify(opts.result_schema)}</response_schema>`
|
|
107
|
-
}]
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
// put system messages first and safety last
|
|
111
|
-
return [].concat(system).concat(others).concat(safety);
|
|
112
|
-
}
|
|
113
|
-
//# sourceMappingURL=openai.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/formatters/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { PromptRole } from "@llumiverse/common";
|
|
2
|
-
import { readStreamAsBase64 } from "../stream.js";
|
|
3
|
-
/**
|
|
4
|
-
* OpenAI text only prompts
|
|
5
|
-
* @param segments
|
|
6
|
-
* @returns
|
|
7
|
-
*/
|
|
8
|
-
export function formatOpenAILikeTextPrompt(segments) {
|
|
9
|
-
const system = [];
|
|
10
|
-
const safety = [];
|
|
11
|
-
const user = [];
|
|
12
|
-
for (const msg of segments) {
|
|
13
|
-
if (msg.role === PromptRole.system) {
|
|
14
|
-
system.push({ content: msg.content, role: "system" });
|
|
15
|
-
}
|
|
16
|
-
else if (msg.role === PromptRole.safety) {
|
|
17
|
-
safety.push({ content: "IMPORTANT: " + msg.content, role: "system" });
|
|
18
|
-
}
|
|
19
|
-
else if (msg.role !== PromptRole.negative && msg.role !== PromptRole.mask && msg.role !== PromptRole.tool) {
|
|
20
|
-
user.push({
|
|
21
|
-
content: msg.content,
|
|
22
|
-
role: msg.role || 'user',
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
// put system messages first and safety last
|
|
27
|
-
return system.concat(user).concat(safety);
|
|
28
|
-
}
|
|
29
|
-
export async function formatOpenAILikeMultimodalPrompt(segments, opts) {
|
|
30
|
-
const system = [];
|
|
31
|
-
const safety = [];
|
|
32
|
-
const others = [];
|
|
33
|
-
for (const msg of segments) {
|
|
34
|
-
const parts = [];
|
|
35
|
-
//generate the parts based on PromptSegment
|
|
36
|
-
if (msg.files) {
|
|
37
|
-
for (const file of msg.files) {
|
|
38
|
-
const stream = await file.getStream();
|
|
39
|
-
const data = await readStreamAsBase64(stream);
|
|
40
|
-
parts.push({
|
|
41
|
-
type: "image_url",
|
|
42
|
-
image_url: {
|
|
43
|
-
url: `data:${file.mime_type || "image/jpeg"};base64,${data}`,
|
|
44
|
-
//detail: "auto" //This is modified just before execution to "low" | "high" | "auto"
|
|
45
|
-
},
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
if (msg.content) {
|
|
50
|
-
parts.push({
|
|
51
|
-
text: msg.content,
|
|
52
|
-
type: "text"
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
if (msg.role === PromptRole.system) {
|
|
56
|
-
system.push({
|
|
57
|
-
role: "system",
|
|
58
|
-
content: parts
|
|
59
|
-
});
|
|
60
|
-
if (opts.useToolForFormatting && opts.schema) {
|
|
61
|
-
system.forEach(s => {
|
|
62
|
-
s.content.forEach(c => {
|
|
63
|
-
if (c.type === "text")
|
|
64
|
-
c.text = "TOOL: " + c.text;
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
else if (msg.role === PromptRole.safety) {
|
|
70
|
-
const safetyMsg = {
|
|
71
|
-
role: "system",
|
|
72
|
-
content: parts
|
|
73
|
-
};
|
|
74
|
-
safetyMsg.content.forEach(c => {
|
|
75
|
-
if (c.type === "text")
|
|
76
|
-
c.text = "DO NOT IGNORE - IMPORTANT: " + c.text;
|
|
77
|
-
});
|
|
78
|
-
system.push(safetyMsg);
|
|
79
|
-
}
|
|
80
|
-
else if (msg.role === PromptRole.tool) {
|
|
81
|
-
if (!msg.tool_use_id) {
|
|
82
|
-
throw new Error("Tool use id is required for tool messages");
|
|
83
|
-
}
|
|
84
|
-
others.push({
|
|
85
|
-
role: "tool",
|
|
86
|
-
tool_call_id: msg.tool_use_id,
|
|
87
|
-
content: msg.content
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
else if (msg.role !== PromptRole.negative && msg.role !== PromptRole.mask) {
|
|
91
|
-
others.push({
|
|
92
|
-
role: msg.role ?? 'user',
|
|
93
|
-
content: parts
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
if (opts.result_schema && !opts.useToolForFormatting) {
|
|
98
|
-
system.push({
|
|
99
|
-
role: "system",
|
|
100
|
-
content: [{
|
|
101
|
-
type: "text",
|
|
102
|
-
text: "IMPORTANT: only answer using JSON, and respecting the schema included below, between the <response_schema> tags. " + `<response_schema>${JSON.stringify(opts.result_schema)}</response_schema>`
|
|
103
|
-
}]
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
// put system messages first and safety last
|
|
107
|
-
return [].concat(system).concat(others).concat(safety);
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=openai.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/formatters/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { PromptOptions } from "@llumiverse/common";
|
|
2
|
-
import { PromptSegment } from "@llumiverse/common";
|
|
3
|
-
export interface OpenAITextMessage {
|
|
4
|
-
content: string;
|
|
5
|
-
role: "system" | "user" | "assistant";
|
|
6
|
-
}
|
|
7
|
-
export interface OpenAIMessage {
|
|
8
|
-
content: (OpenAIContentPartText | OpenAIContentPartImage)[];
|
|
9
|
-
role: "system" | "user" | "assistant";
|
|
10
|
-
name?: string;
|
|
11
|
-
}
|
|
12
|
-
export interface OpenAIToolMessage {
|
|
13
|
-
role: "tool";
|
|
14
|
-
tool_call_id: string;
|
|
15
|
-
content: string;
|
|
16
|
-
}
|
|
17
|
-
export type OpenAIInputMessage = OpenAIMessage | OpenAIToolMessage;
|
|
18
|
-
export interface OpenAIContentPartText {
|
|
19
|
-
type: "text";
|
|
20
|
-
text: string;
|
|
21
|
-
}
|
|
22
|
-
export interface OpenAIContentPartImage {
|
|
23
|
-
type: "image_url";
|
|
24
|
-
image_url: {
|
|
25
|
-
detail?: 'auto' | 'low' | 'high';
|
|
26
|
-
url: string;
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* OpenAI text only prompts
|
|
31
|
-
* @param segments
|
|
32
|
-
* @returns
|
|
33
|
-
*/
|
|
34
|
-
export declare function formatOpenAILikeTextPrompt(segments: PromptSegment[]): OpenAITextMessage[];
|
|
35
|
-
export declare function formatOpenAILikeMultimodalPrompt(segments: PromptSegment[], opts: PromptOptions & OpenAIPromptFormatterOptions): Promise<OpenAIInputMessage[]>;
|
|
36
|
-
export interface OpenAIPromptFormatterOptions {
|
|
37
|
-
multimodal?: boolean;
|
|
38
|
-
useToolForFormatting?: boolean;
|
|
39
|
-
schema?: Object;
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/formatters/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,CAAC,qBAAqB,GAAG,sBAAsB,CAAC,EAAE,CAAA;IAC3D,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;QAChC,GAAG,EAAE,MAAM,CAAA;KACd,CAAA;CACJ;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,iBAAiB,EAAE,CAoBzF;AAGD,wBAAsB,gCAAgC,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,4BAA4B,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAyFnK;AAED,MAAM,WAAW,4BAA4B;IACzC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB"}
|
package/src/formatters/openai.ts
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import { PromptRole, PromptOptions } from "@llumiverse/common";
|
|
2
|
-
import { readStreamAsBase64 } from "../stream.js";
|
|
3
|
-
import { PromptSegment } from "@llumiverse/common";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export interface OpenAITextMessage {
|
|
7
|
-
content: string;
|
|
8
|
-
role: "system" | "user" | "assistant";
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export interface OpenAIMessage {
|
|
12
|
-
content: (OpenAIContentPartText | OpenAIContentPartImage)[]
|
|
13
|
-
role: "system" | "user" | "assistant";
|
|
14
|
-
name?: string;
|
|
15
|
-
}
|
|
16
|
-
export interface OpenAIToolMessage {
|
|
17
|
-
role: "tool";
|
|
18
|
-
tool_call_id: string;
|
|
19
|
-
content: string;
|
|
20
|
-
}
|
|
21
|
-
export type OpenAIInputMessage = OpenAIMessage | OpenAIToolMessage;
|
|
22
|
-
|
|
23
|
-
export interface OpenAIContentPartText {
|
|
24
|
-
type: "text";
|
|
25
|
-
text: string
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export interface OpenAIContentPartImage {
|
|
29
|
-
type: "image_url";
|
|
30
|
-
image_url: {
|
|
31
|
-
detail?: 'auto' | 'low' | 'high'
|
|
32
|
-
url: string
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* OpenAI text only prompts
|
|
38
|
-
* @param segments
|
|
39
|
-
* @returns
|
|
40
|
-
*/
|
|
41
|
-
export function formatOpenAILikeTextPrompt(segments: PromptSegment[]): OpenAITextMessage[] {
|
|
42
|
-
const system: OpenAITextMessage[] = [];
|
|
43
|
-
const safety: OpenAITextMessage[] = [];
|
|
44
|
-
const user: OpenAITextMessage[] = [];
|
|
45
|
-
|
|
46
|
-
for (const msg of segments) {
|
|
47
|
-
if (msg.role === PromptRole.system) {
|
|
48
|
-
system.push({ content: msg.content, role: "system" });
|
|
49
|
-
} else if (msg.role === PromptRole.safety) {
|
|
50
|
-
safety.push({ content: "IMPORTANT: " + msg.content, role: "system" });
|
|
51
|
-
} else if (msg.role !== PromptRole.negative && msg.role !== PromptRole.mask && msg.role !== PromptRole.tool) {
|
|
52
|
-
user.push({
|
|
53
|
-
content: msg.content,
|
|
54
|
-
role: msg.role || 'user',
|
|
55
|
-
})
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// put system messages first and safety last
|
|
60
|
-
return system.concat(user).concat(safety);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
export async function formatOpenAILikeMultimodalPrompt(segments: PromptSegment[], opts: PromptOptions & OpenAIPromptFormatterOptions): Promise<OpenAIInputMessage[]> {
|
|
65
|
-
const system: OpenAIMessage[] = [];
|
|
66
|
-
const safety: OpenAIMessage[] = [];
|
|
67
|
-
const others: OpenAIInputMessage[] = [];
|
|
68
|
-
|
|
69
|
-
for (const msg of segments) {
|
|
70
|
-
|
|
71
|
-
const parts: (OpenAIContentPartImage | OpenAIContentPartText)[] = [];
|
|
72
|
-
|
|
73
|
-
//generate the parts based on PromptSegment
|
|
74
|
-
if (msg.files) {
|
|
75
|
-
for (const file of msg.files) {
|
|
76
|
-
const stream = await file.getStream();
|
|
77
|
-
const data = await readStreamAsBase64(stream);
|
|
78
|
-
parts.push({
|
|
79
|
-
type: "image_url",
|
|
80
|
-
image_url: {
|
|
81
|
-
url: `data:${file.mime_type || "image/jpeg"};base64,${data}`,
|
|
82
|
-
//detail: "auto" //This is modified just before execution to "low" | "high" | "auto"
|
|
83
|
-
},
|
|
84
|
-
})
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (msg.content) {
|
|
89
|
-
parts.push({
|
|
90
|
-
text: msg.content,
|
|
91
|
-
type: "text"
|
|
92
|
-
})
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if (msg.role === PromptRole.system) {
|
|
97
|
-
system.push({
|
|
98
|
-
role: "system",
|
|
99
|
-
content: parts
|
|
100
|
-
})
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (opts.useToolForFormatting && opts.schema) {
|
|
104
|
-
system.forEach(s => {
|
|
105
|
-
s.content.forEach(c => {
|
|
106
|
-
if (c.type === "text") c.text = "TOOL: " + c.text;
|
|
107
|
-
})
|
|
108
|
-
})
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
} else if (msg.role === PromptRole.safety) {
|
|
112
|
-
const safetyMsg: OpenAIMessage = {
|
|
113
|
-
role: "system",
|
|
114
|
-
content: parts
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
safetyMsg.content.forEach(c => {
|
|
118
|
-
if (c.type === "text") c.text = "DO NOT IGNORE - IMPORTANT: " + c.text;
|
|
119
|
-
})
|
|
120
|
-
|
|
121
|
-
system.push(safetyMsg)
|
|
122
|
-
} else if (msg.role === PromptRole.tool) {
|
|
123
|
-
if (!msg.tool_use_id) {
|
|
124
|
-
throw new Error("Tool use id is required for tool messages")
|
|
125
|
-
}
|
|
126
|
-
others.push({
|
|
127
|
-
role: "tool",
|
|
128
|
-
tool_call_id: msg.tool_use_id,
|
|
129
|
-
content: msg.content
|
|
130
|
-
})
|
|
131
|
-
} else if (msg.role !== PromptRole.negative && msg.role !== PromptRole.mask) {
|
|
132
|
-
others.push({
|
|
133
|
-
role: msg.role ?? 'user',
|
|
134
|
-
content: parts
|
|
135
|
-
})
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
if (opts.result_schema && !opts.useToolForFormatting) {
|
|
141
|
-
system.push({
|
|
142
|
-
role: "system",
|
|
143
|
-
content: [{
|
|
144
|
-
type: "text",
|
|
145
|
-
text: "IMPORTANT: only answer using JSON, and respecting the schema included below, between the <response_schema> tags. " + `<response_schema>${JSON.stringify(opts.result_schema)}</response_schema>`
|
|
146
|
-
}]
|
|
147
|
-
})
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// put system messages first and safety last
|
|
151
|
-
return ([] as OpenAIInputMessage[]).concat(system).concat(others).concat(safety);
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
export interface OpenAIPromptFormatterOptions {
|
|
156
|
-
multimodal?: boolean
|
|
157
|
-
useToolForFormatting?: boolean
|
|
158
|
-
schema?: Object
|
|
159
|
-
}
|