@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.
@@ -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`, this.prompt);
23
+ this.driver.logger.debug(`[${this.driver.provider}] Streaming Execution of ${this.options.model} with prompt`);
24
24
  const start = Date.now();
25
- const stream = await this.driver.requestTextCompletionStream(this.prompt, this.options);
25
+ let stream;
26
26
  let finish_reason = undefined;
27
27
  let promptTokens = 0;
28
28
  let resultTokens = undefined;
29
- for await (const chunk of stream) {
30
- if (chunk) {
31
- if (typeof chunk === 'string') {
32
- chunks.push(chunk);
33
- yield chunk;
34
- }
35
- else {
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
- if (chunk.result) {
47
- chunks.push(chunk.result);
48
- yield chunk.result;
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
- this.driver.validateResult(this.completion, this.options);
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
- const completion = await this.driver._execute(this.prompt, this.options);
85
- const content = typeof completion.result === 'string' ? completion.result : JSON.stringify(completion.result);
86
- yield content;
87
- this.completion = completion;
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,EAAE,IAAI,CAAC,MAAM,CACpG,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAExF,IAAI,aAAa,GAAuB,SAAS,CAAC;QAClD,IAAI,YAAY,GAAW,CAAC,CAAC;QAC7B,IAAI,YAAY,GAAuB,SAAS,CAAC;QACjD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC/B,IAAI,KAAK,EAAE,CAAC;gBACR,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACnB,MAAM,KAAK,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC,CAA2B,iDAAiD;wBAClG,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,CAAa,yEAAyE;oBAC9H,CAAC;oBACD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;wBACpB,gDAAgD;wBAChD,qCAAqC;wBACrC,8EAA8E;wBAC9E,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;wBACrE,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;oBAC9E,CAAC;oBACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBAC1B,MAAM,KAAK,CAAC,MAAM,CAAC;oBACvB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhC,2FAA2F;QAC3F,mHAAmH;QACnH,IAAI,MAAM,GAAoC,YAAY,CAAC,CAAC;YACxD,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;QAEnG,IAAI,CAAC,UAAU,GAAG;YACd,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;YAClC,WAAW,EAAE,MAAM;YACnB,aAAa,EAAE,aAAa;YAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;SACxB,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;CAEJ;AAxED,0DAwEC;AAED,MAAa,wBAAwB;IAId;IACR;IACA;IAJX,UAAU,CAAyC;IAEnD,YAAmB,MAA8C,EACtD,MAAe,EACf,OAAyB;QAFjB,WAAM,GAAN,MAAM,CAAwC;QACtD,WAAM,GAAN,MAAM,CAAS;QACf,YAAO,GAAP,OAAO,CAAkB;IACpC,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QACzB,cAAc;QACd,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CACpB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,kEAAkE,CAC7F,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9G,MAAM,OAAO,CAAC;QAEd,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;CACJ;AArBD,4DAqBC"}
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}`);
@@ -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,8CAA4B;AAC5B,4CAA0B"}
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 _readStreamAsBuffer(stream);
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 = [];
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":";;AACA,gDAEC;AAED,gDAEC;AAED,wDAEC;AAVM,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,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACvC,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
+ {"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`, this.prompt);
20
+ this.driver.logger.debug(`[${this.driver.provider}] Streaming Execution of ${this.options.model} with prompt`);
21
21
  const start = Date.now();
22
- const stream = await this.driver.requestTextCompletionStream(this.prompt, this.options);
22
+ let stream;
23
23
  let finish_reason = undefined;
24
24
  let promptTokens = 0;
25
25
  let resultTokens = undefined;
26
- for await (const chunk of stream) {
27
- if (chunk) {
28
- if (typeof chunk === 'string') {
29
- chunks.push(chunk);
30
- yield chunk;
31
- }
32
- else {
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
- if (chunk.result) {
44
- chunks.push(chunk.result);
45
- yield chunk.result;
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
- this.driver.validateResult(this.completion, this.options);
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
- const completion = await this.driver._execute(this.prompt, this.options);
81
- const content = typeof completion.result === 'string' ? completion.result : JSON.stringify(completion.result);
82
- yield content;
83
- this.completion = completion;
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":"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"}
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}`);
@@ -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,5 +1,4 @@
1
1
  export * from "./commons.js";
2
2
  export * from "./generic.js";
3
- export * from "./openai.js";
4
3
  export * from "./nova.js";
5
4
  //# sourceMappingURL=index.js.map
@@ -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,aAAa,CAAC;AAC5B,cAAc,WAAW,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 _readStreamAsBuffer(stream);
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 = [];
@@ -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,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACvC,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
+ {"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,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAuB,MAAM,oBAAoB,CAAC;AAE/H,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;CA6DhC;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;CAYhC"}
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":"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"}
1
+ {"version":3,"file":"Driver.d.ts","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  export * from "./commons.js";
2
2
  export * from "./generic.js";
3
- export * from "./openai.js";
4
3
  export * from "./nova.js";
5
4
  //# sourceMappingURL=index.d.ts.map
@@ -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,aAAa,CAAC;AAC5B,cAAc,WAAW,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,CAExF"}
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.20.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.65.0",
67
- "rimraf": "^6.0.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.6.2",
70
- "vitest": "^3.0.9"
69
+ "typescript": "^5.8.3",
70
+ "vitest": "^3.2.4"
71
71
  },
72
72
  "dependencies": {
73
- "@types/node": "^22.5.0",
74
- "ajv": "^8.16.0",
73
+ "@types/node": "^22.17.0",
74
+ "ajv": "^8.17.1",
75
75
  "ajv-formats": "^3.0.1",
76
- "@llumiverse/common": "0.20.0"
76
+ "@llumiverse/common": "0.22.0"
77
77
  },
78
78
  "ts_dual_module": {
79
79
  "outDir": "lib",
@@ -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`, this.prompt,
24
+ `[${this.driver.provider}] Streaming Execution of ${this.options.model} with prompt`,
25
25
  );
26
26
 
27
27
  const start = Date.now();
28
- const stream = await this.driver.requestTextCompletionStream(this.prompt, this.options);
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
- for await (const chunk of stream) {
34
- if (chunk) {
35
- if (typeof chunk === 'string') {
36
- chunks.push(chunk);
37
- yield chunk;
38
- } else {
39
- if (chunk.finish_reason) { //Do not replace non-null values with null values
40
- finish_reason = chunk.finish_reason; //Used to skip empty finish_reason chunks coming after "stop" or "length"
41
- }
42
- if (chunk.token_usage) {
43
- //Tokens returned include prior parts of stream,
44
- //so overwrite rather than accumulate
45
- //Math.max used as some models report final token count at beginning of stream
46
- promptTokens = Math.max(promptTokens, chunk.token_usage.prompt ?? 0);
47
- resultTokens = Math.max(resultTokens ?? 0, chunk.token_usage.result ?? 0);
48
- }
49
- if (chunk.result) {
50
- chunks.push(chunk.result);
51
- yield chunk.result;
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
- this.driver.validateResult(this.completion, this.options);
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
- const completion = await this.driver._execute(this.prompt, this.options);
94
- const content = typeof completion.result === 'string' ? completion.result : JSON.stringify(completion.result);
95
- yield content;
96
-
97
- this.completion = completion;
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>> {
@@ -1,4 +1,3 @@
1
1
  export * from "./commons.js";
2
2
  export * from "./generic.js";
3
- export * from "./openai.js";
4
3
  export * from "./nova.js";
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 _readStreamAsBuffer(stream);
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":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAkClD;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAyB;IAChE,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAwB,EAAE,CAAC;IAErC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;YAC1G,IAAI,CAAC,IAAI,CAAC;gBACN,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM;aAC3B,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IAED,4CAA4C;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,QAAyB,EAAE,IAAkD;IAChI,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAEzB,MAAM,KAAK,GAAuD,EAAE,CAAC;QAErE,2CAA2C;QAC3C,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAC9C,KAAK,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE;wBACP,GAAG,EAAE,QAAQ,IAAI,CAAC,SAAS,IAAI,YAAY,WAAW,IAAI,EAAE;wBAC5D,qFAAqF;qBACxF;iBACJ,CAAC,CAAA;YACN,CAAC;QACL,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,KAAK,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,GAAG,CAAC,OAAO;gBACjB,IAAI,EAAE,MAAM;aACf,CAAC,CAAA;QACN,CAAC;QAGD,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,KAAK;aACjB,CAAC,CAAA;YAGF,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACf,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBAClB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;4BAAE,CAAC,CAAC,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;oBACtD,CAAC,CAAC,CAAA;gBACN,CAAC,CAAC,CAAA;YACN,CAAC;QAEL,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,SAAS,GAAkB;gBAC7B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,KAAK;aACjB,CAAA;YAED,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC1B,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;oBAAE,CAAC,CAAC,IAAI,GAAG,6BAA6B,GAAG,CAAC,CAAC,IAAI,CAAC;YAC3E,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1B,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;YAChE,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,YAAY,EAAE,GAAG,CAAC,WAAW;gBAC7B,OAAO,EAAE,GAAG,CAAC,OAAO;aACvB,CAAC,CAAA;QACN,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM;gBACxB,OAAO,EAAE,KAAK;aACjB,CAAC,CAAA;QACN,CAAC;IAEL,CAAC;IAED,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC;oBACN,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,mHAAmH,GAAG,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB;iBACzM,CAAC;SACL,CAAC,CAAA;IACN,CAAC;IAED,4CAA4C;IAC5C,OAAQ,EAA2B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAErF,CAAC"}
@@ -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"}
@@ -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
- }