@llumiverse/core 0.12.3 → 0.14.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/README.md +13 -11
- package/lib/cjs/CompletionStream.js +6 -8
- package/lib/cjs/CompletionStream.js.map +1 -1
- package/lib/cjs/Driver.js +20 -16
- package/lib/cjs/Driver.js.map +1 -1
- package/lib/cjs/async.js +9 -6
- package/lib/cjs/async.js.map +1 -1
- package/lib/cjs/formatters/claude.js +53 -15
- package/lib/cjs/formatters/claude.js.map +1 -1
- package/lib/cjs/formatters/commons.js +2 -3
- package/lib/cjs/formatters/commons.js.map +1 -1
- package/lib/cjs/formatters/generic.js +2 -2
- package/lib/cjs/formatters/generic.js.map +1 -1
- package/lib/cjs/formatters/index.js +2 -1
- package/lib/cjs/formatters/index.js.map +1 -1
- package/lib/cjs/formatters/llama2.js +1 -2
- package/lib/cjs/formatters/llama2.js.map +1 -1
- package/lib/cjs/formatters/llama3.js +42 -0
- package/lib/cjs/formatters/llama3.js.map +1 -0
- package/lib/cjs/formatters/openai.js +59 -5
- package/lib/cjs/formatters/openai.js.map +1 -1
- package/lib/cjs/index.js +1 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/json.js +3 -3
- package/lib/cjs/json.js.map +1 -1
- package/lib/cjs/resolver.js +45 -0
- package/lib/cjs/resolver.js.map +1 -0
- package/lib/cjs/stream.js +11 -0
- package/lib/cjs/stream.js.map +1 -0
- package/lib/cjs/types.js.map +1 -1
- package/lib/cjs/validation.js +43 -6
- package/lib/cjs/validation.js.map +1 -1
- package/lib/esm/CompletionStream.js +6 -8
- package/lib/esm/CompletionStream.js.map +1 -1
- package/lib/esm/Driver.js +19 -15
- package/lib/esm/Driver.js.map +1 -1
- package/lib/esm/async.js +4 -1
- package/lib/esm/async.js.map +1 -1
- package/lib/esm/formatters/claude.js +52 -13
- package/lib/esm/formatters/claude.js.map +1 -1
- package/lib/esm/formatters/commons.js +1 -1
- package/lib/esm/formatters/commons.js.map +1 -1
- package/lib/esm/formatters/index.js +2 -1
- package/lib/esm/formatters/index.js.map +1 -1
- package/lib/esm/formatters/llama3.js +39 -0
- package/lib/esm/formatters/llama3.js.map +1 -0
- package/lib/esm/formatters/openai.js +57 -3
- package/lib/esm/formatters/openai.js.map +1 -1
- package/lib/esm/index.js +1 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/resolver.js +42 -0
- package/lib/esm/resolver.js.map +1 -0
- package/lib/esm/stream.js +8 -0
- package/lib/esm/stream.js.map +1 -0
- package/lib/esm/types.js.map +1 -1
- package/lib/esm/validation.js +38 -4
- package/lib/esm/validation.js.map +1 -1
- package/lib/types/CompletionStream.d.ts +5 -5
- package/lib/types/CompletionStream.d.ts.map +1 -1
- package/lib/types/Driver.d.ts +5 -5
- package/lib/types/Driver.d.ts.map +1 -1
- package/lib/types/async.d.ts +1 -1
- package/lib/types/async.d.ts.map +1 -1
- package/lib/types/formatters/claude.d.ts +12 -6
- package/lib/types/formatters/claude.d.ts.map +1 -1
- package/lib/types/formatters/index.d.ts +2 -1
- package/lib/types/formatters/index.d.ts.map +1 -1
- package/lib/types/formatters/llama3.d.ts +7 -0
- package/lib/types/formatters/llama3.d.ts.map +1 -0
- package/lib/types/formatters/openai.d.ts +18 -1
- package/lib/types/formatters/openai.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/resolver.d.ts +2 -0
- package/lib/types/resolver.d.ts.map +1 -0
- package/lib/types/stream.d.ts +2 -0
- package/lib/types/stream.d.ts.map +1 -0
- package/lib/types/types.d.ts +9 -6
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/validation.d.ts +1 -2
- package/lib/types/validation.d.ts.map +1 -1
- package/package.json +87 -85
- package/src/CompletionStream.ts +4 -10
- package/src/Driver.ts +28 -27
- package/src/async.ts +5 -1
- package/src/formatters/claude.ts +68 -19
- package/src/formatters/commons.ts +1 -1
- package/src/formatters/index.ts +5 -3
- package/src/formatters/llama3.ts +55 -0
- package/src/formatters/openai.ts +93 -6
- package/src/index.ts +2 -1
- package/src/resolver.ts +39 -0
- package/src/stream.ts +8 -0
- package/src/types.ts +16 -13
- package/src/validation.ts +48 -7
package/README.md
CHANGED
|
@@ -10,16 +10,18 @@ It solely focuses on abstracting LLMs and their execution platforms, and does no
|
|
|
10
10
|
|
|
11
11
|
The following LLM platforms are supported in the current version:
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
| OpenAI
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
| HuggingFace Inference Endpoints | ✅ | ✅ | N/A | N/A
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
13
|
+
| Provider | Completion | Chat | Model Listing | Multimodal | Fine-Tuning |
|
|
14
|
+
| --- | :-: | :-: | :-: | :-: | :-: |
|
|
15
|
+
| AWS Bedrock | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
16
|
+
| Azure OpenAI | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
17
|
+
| Google Vertex AI | ✅ | ✅ | N/A | ✅ | By Request |
|
|
18
|
+
| Groq | ✅ | ✅ | ✅ | N/A | N/A |
|
|
19
|
+
| HuggingFace Inference Endpoints | ✅ | ✅ | N/A | N/A | N/A |
|
|
20
|
+
| IBM WatsonX | ✅ | ✅ | ✅ | N/A | By Request |
|
|
21
|
+
| Mistral AI | ✅ | ✅ | ✅ | N/A | By Request |
|
|
22
|
+
| OpenAI | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
23
|
+
| Replicate | ✅ | ✅ | ✅ | N/A | ✅ |
|
|
24
|
+
| Together AI| ✅ | ✅ | ✅ | N/A | By Request |
|
|
23
25
|
|
|
24
26
|
New capabilities and platform can easily be added by creating a new driver for the platform.
|
|
25
27
|
|
|
@@ -229,7 +231,7 @@ for await (const chunk of stream) {
|
|
|
229
231
|
process.stdout.write(chunk);
|
|
230
232
|
}
|
|
231
233
|
|
|
232
|
-
// when the response stream is consumed we can get the final
|
|
234
|
+
// when the response stream is consumed we can get the final response using stream.completion field.
|
|
233
235
|
const streamingResponse = stream.completion!;
|
|
234
236
|
|
|
235
237
|
console.log('\n# LLM response:', streamingResponse.result)
|
|
@@ -3,15 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.FallbackCompletionStream = exports.DefaultCompletionStream = void 0;
|
|
4
4
|
class DefaultCompletionStream {
|
|
5
5
|
driver;
|
|
6
|
+
prompt;
|
|
6
7
|
options;
|
|
7
8
|
chunks;
|
|
8
|
-
prompt;
|
|
9
9
|
completion;
|
|
10
|
-
constructor(driver,
|
|
10
|
+
constructor(driver, prompt, options) {
|
|
11
11
|
this.driver = driver;
|
|
12
|
+
this.prompt = prompt;
|
|
12
13
|
this.options = options;
|
|
13
|
-
this.driver = driver;
|
|
14
|
-
this.prompt = this.driver.createPrompt(segments, options);
|
|
15
14
|
this.chunks = [];
|
|
16
15
|
}
|
|
17
16
|
async *[Symbol.asyncIterator]() {
|
|
@@ -49,14 +48,13 @@ class DefaultCompletionStream {
|
|
|
49
48
|
exports.DefaultCompletionStream = DefaultCompletionStream;
|
|
50
49
|
class FallbackCompletionStream {
|
|
51
50
|
driver;
|
|
52
|
-
options;
|
|
53
51
|
prompt;
|
|
52
|
+
options;
|
|
54
53
|
completion;
|
|
55
|
-
constructor(driver,
|
|
54
|
+
constructor(driver, prompt, options) {
|
|
56
55
|
this.driver = driver;
|
|
56
|
+
this.prompt = prompt;
|
|
57
57
|
this.options = options;
|
|
58
|
-
this.driver = driver;
|
|
59
|
-
this.prompt = this.driver.createPrompt(segments, options);
|
|
60
58
|
}
|
|
61
59
|
async *[Symbol.asyncIterator]() {
|
|
62
60
|
// reset state
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompletionStream.js","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":";;;AAGA,MAAa,uBAAuB;
|
|
1
|
+
{"version":3,"file":"CompletionStream.js","sourceRoot":"","sources":["../../src/CompletionStream.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/Driver.js
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* (eg: OpenAI, HuggingFace, etc.)
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.AbstractDriver =
|
|
8
|
+
exports.AbstractDriver = void 0;
|
|
9
|
+
exports.createLogger = createLogger;
|
|
9
10
|
const CompletionStream_js_1 = require("./CompletionStream.js");
|
|
10
11
|
const index_js_1 = require("./formatters/index.js");
|
|
11
12
|
const validation_js_1 = require("./validation.js");
|
|
@@ -33,7 +34,6 @@ function createLogger(logger) {
|
|
|
33
34
|
return NoopLogger;
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
|
-
exports.createLogger = createLogger;
|
|
37
37
|
function applyExecutionDefaults(options) {
|
|
38
38
|
return {
|
|
39
39
|
max_tokens: 2048,
|
|
@@ -51,8 +51,8 @@ class AbstractDriver {
|
|
|
51
51
|
this.options = opts;
|
|
52
52
|
this.logger = createLogger(opts.logger);
|
|
53
53
|
}
|
|
54
|
-
createTrainingPrompt(options) {
|
|
55
|
-
const prompt = this.createPrompt(options.segments, {
|
|
54
|
+
async createTrainingPrompt(options) {
|
|
55
|
+
const prompt = await this.createPrompt(options.segments, { result_schema: options.schema, model: options.model });
|
|
56
56
|
return JSON.stringify({
|
|
57
57
|
prompt,
|
|
58
58
|
completion: typeof options.completion === 'string' ? options.completion : JSON.stringify(options.completion)
|
|
@@ -68,9 +68,9 @@ class AbstractDriver {
|
|
|
68
68
|
throw new Error("Method not implemented.");
|
|
69
69
|
}
|
|
70
70
|
validateResult(result, options) {
|
|
71
|
-
if (!result.error && options.
|
|
71
|
+
if (!result.error && options.result_schema) {
|
|
72
72
|
try {
|
|
73
|
-
result.result = (0, validation_js_1.validateResult)(result.result, options.
|
|
73
|
+
result.result = (0, validation_js_1.validateResult)(result.result, options.result_schema);
|
|
74
74
|
}
|
|
75
75
|
catch (error) {
|
|
76
76
|
this.logger?.error({ err: error, data: result.result }, `[${this.provider}] [${options.model}] ${error.code ? '[' + error.code + '] ' : ''}Result validation error: ${error.message}`);
|
|
@@ -84,11 +84,11 @@ class AbstractDriver {
|
|
|
84
84
|
}
|
|
85
85
|
async execute(segments, options) {
|
|
86
86
|
options = applyExecutionDefaults(options);
|
|
87
|
-
const prompt = this.createPrompt(segments, options);
|
|
87
|
+
const prompt = await this.createPrompt(segments, options);
|
|
88
88
|
return this._execute(prompt, options);
|
|
89
89
|
}
|
|
90
90
|
async _execute(prompt, options) {
|
|
91
|
-
this.logger.debug(`[${this.provider}] Executing ${options.model}
|
|
91
|
+
this.logger.debug(`[${this.provider}] Executing prompt on ${options.model}`);
|
|
92
92
|
try {
|
|
93
93
|
const start = Date.now();
|
|
94
94
|
const result = await this.requestCompletion(prompt, options);
|
|
@@ -104,12 +104,13 @@ class AbstractDriver {
|
|
|
104
104
|
// by default no stream is supported. we block and we return all at once
|
|
105
105
|
async stream(segments, options) {
|
|
106
106
|
options = applyExecutionDefaults(options);
|
|
107
|
+
const prompt = await this.createPrompt(segments, options);
|
|
107
108
|
const canStream = await this.canStream(options);
|
|
108
109
|
if (canStream) {
|
|
109
|
-
return new CompletionStream_js_1.DefaultCompletionStream(this,
|
|
110
|
+
return new CompletionStream_js_1.DefaultCompletionStream(this, prompt, options);
|
|
110
111
|
}
|
|
111
112
|
else {
|
|
112
|
-
return new CompletionStream_js_1.FallbackCompletionStream(this,
|
|
113
|
+
return new CompletionStream_js_1.FallbackCompletionStream(this, prompt, options);
|
|
113
114
|
}
|
|
114
115
|
}
|
|
115
116
|
/**
|
|
@@ -118,16 +119,19 @@ class AbstractDriver {
|
|
|
118
119
|
* @param options
|
|
119
120
|
* @returns
|
|
120
121
|
*/
|
|
121
|
-
formatPrompt(segments, opts) {
|
|
122
|
-
if (/\
|
|
123
|
-
return (0, index_js_1.formatLlama2Prompt)(segments, opts.
|
|
122
|
+
async formatPrompt(segments, opts) {
|
|
123
|
+
if (/\bllama.?2\b/i.test(opts.model)) {
|
|
124
|
+
return (0, index_js_1.formatLlama2Prompt)(segments, opts.result_schema);
|
|
125
|
+
}
|
|
126
|
+
else if (/\bllama.?3\b/i.test(opts.model)) {
|
|
127
|
+
return (0, index_js_1.formatLlama3Prompt)(segments, opts.result_schema);
|
|
124
128
|
}
|
|
125
129
|
else {
|
|
126
|
-
return (0, index_js_1.formatTextPrompt)(segments, opts.
|
|
130
|
+
return (0, index_js_1.formatTextPrompt)(segments, opts.result_schema);
|
|
127
131
|
}
|
|
128
132
|
}
|
|
129
|
-
createPrompt(segments, opts) {
|
|
130
|
-
return opts.format ? opts.format(segments, opts.
|
|
133
|
+
async createPrompt(segments, opts) {
|
|
134
|
+
return await (opts.format ? opts.format(segments, opts.result_schema) : this.formatPrompt(segments, opts));
|
|
131
135
|
}
|
|
132
136
|
/**
|
|
133
137
|
* Must be overrided if the implementation cannot stream.
|
package/lib/cjs/Driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Driver.js","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;
|
|
1
|
+
{"version":3,"file":"Driver.js","sourceRoot":"","sources":["../../src/Driver.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/async.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.EventStream = void 0;
|
|
4
|
+
exports.asyncMap = asyncMap;
|
|
5
|
+
exports.oneAsyncIterator = oneAsyncIterator;
|
|
6
|
+
exports.transformSSEStream = transformSSEStream;
|
|
7
|
+
exports.transformAsyncIterator = transformAsyncIterator;
|
|
4
8
|
async function* asyncMap(asyncIterable, callback) {
|
|
5
9
|
let i = 0;
|
|
6
10
|
for await (const val of asyncIterable)
|
|
7
11
|
yield callback(val, i++);
|
|
8
12
|
}
|
|
9
|
-
exports.asyncMap = asyncMap;
|
|
10
13
|
function oneAsyncIterator(value) {
|
|
11
14
|
return {
|
|
12
15
|
async *[Symbol.asyncIterator]() {
|
|
@@ -14,7 +17,6 @@ function oneAsyncIterator(value) {
|
|
|
14
17
|
}
|
|
15
18
|
};
|
|
16
19
|
}
|
|
17
|
-
exports.oneAsyncIterator = oneAsyncIterator;
|
|
18
20
|
/**
|
|
19
21
|
* Given a ReadableStream of server seent events, tran
|
|
20
22
|
*/
|
|
@@ -34,7 +36,6 @@ function transformSSEStream(stream, transform) {
|
|
|
34
36
|
}
|
|
35
37
|
}));
|
|
36
38
|
}
|
|
37
|
-
exports.transformSSEStream = transformSSEStream;
|
|
38
39
|
class EventStream {
|
|
39
40
|
queue = [];
|
|
40
41
|
pending;
|
|
@@ -97,12 +98,14 @@ exports.EventStream = EventStream;
|
|
|
97
98
|
* @param originalGenerator
|
|
98
99
|
* @param transform
|
|
99
100
|
**/
|
|
100
|
-
async function* transformAsyncIterator(originalGenerator, transform) {
|
|
101
|
+
async function* transformAsyncIterator(originalGenerator, transform, initCallback) {
|
|
102
|
+
if (initCallback) {
|
|
103
|
+
yield initCallback();
|
|
104
|
+
}
|
|
101
105
|
for await (const value of originalGenerator) {
|
|
102
106
|
yield transform(value);
|
|
103
107
|
}
|
|
104
108
|
}
|
|
105
|
-
exports.transformAsyncIterator = transformAsyncIterator;
|
|
106
109
|
//TODO move in a test file
|
|
107
110
|
// const max = 10; let cnt = 0;
|
|
108
111
|
// function feedStream(stream: EventStream<string>) {
|
package/lib/cjs/async.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/async.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/async.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.formatClaudePrompt =
|
|
3
|
+
exports.formatClaudePrompt = formatClaudePrompt;
|
|
4
4
|
const index_js_1 = require("../index.js");
|
|
5
|
+
const stream_js_1 = require("../stream.js");
|
|
5
6
|
const commons_js_1 = require("./commons.js");
|
|
6
7
|
/**
|
|
7
8
|
* A formatter user by Bedrock to format prompts for claude related models
|
|
8
9
|
*/
|
|
9
|
-
function formatClaudePrompt(segments, schema) {
|
|
10
|
+
async function formatClaudePrompt(segments, schema) {
|
|
10
11
|
const system = [];
|
|
11
12
|
const safety = [];
|
|
12
13
|
const messages = [];
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
//TODO type: 'image' -> detect from f.mime_type
|
|
15
|
+
for (const segment of segments) {
|
|
16
|
+
const parts = [];
|
|
17
|
+
if (segment.files)
|
|
18
|
+
for (const f of segment.files) {
|
|
19
|
+
const source = await f.getStream();
|
|
20
|
+
const data = await (0, stream_js_1.readStreamAsBase64)(source);
|
|
21
|
+
parts.push({
|
|
22
|
+
type: 'image',
|
|
23
|
+
source: {
|
|
24
|
+
type: "base64",
|
|
25
|
+
media_type: f.mime_type || 'image/png',
|
|
26
|
+
data
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (segment.content) {
|
|
31
|
+
parts.push({
|
|
32
|
+
type: "text",
|
|
33
|
+
text: segment.content
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (segment.role === index_js_1.PromptRole.system) {
|
|
37
|
+
system.push(segment.content);
|
|
16
38
|
}
|
|
17
|
-
else if (
|
|
18
|
-
safety.push(
|
|
39
|
+
else if (segment.role === index_js_1.PromptRole.safety) {
|
|
40
|
+
safety.push(segment.content);
|
|
41
|
+
}
|
|
42
|
+
else if (messages.length > 0 && messages[messages.length - 1].role === segment.role) {
|
|
43
|
+
//concatenate messages of the same role (Claude requires alternative user and assistant roles)
|
|
44
|
+
messages[messages.length - 1].content.push(...parts);
|
|
19
45
|
}
|
|
20
46
|
else {
|
|
21
|
-
messages.push({
|
|
47
|
+
messages.push({
|
|
48
|
+
role: segment.role,
|
|
49
|
+
content: parts
|
|
50
|
+
});
|
|
22
51
|
}
|
|
23
52
|
}
|
|
24
53
|
if (schema) {
|
|
25
|
-
safety.push((0, commons_js_1.getJSONSafetyNotice)(schema));
|
|
54
|
+
safety.push("IMPORTANT: " + (0, commons_js_1.getJSONSafetyNotice)(schema));
|
|
26
55
|
}
|
|
27
56
|
// messages must contains at least 1 item. If the prompt doesn;t contains a user message (but only system messages)
|
|
28
57
|
// we need to put the system messages in the messages array
|
|
@@ -37,23 +66,32 @@ function formatClaudePrompt(segments, schema) {
|
|
|
37
66
|
else if (safety.length > 0) {
|
|
38
67
|
systemMessage = systemMessage + '\n\nIMPORTANT: ' + safety.join('\n');
|
|
39
68
|
}
|
|
69
|
+
/*if (schema) {
|
|
70
|
+
messages.push({
|
|
71
|
+
role: "user",
|
|
72
|
+
content: [{
|
|
73
|
+
type: "text",
|
|
74
|
+
text: getJSONSafetyNotice(schema)
|
|
75
|
+
}]
|
|
76
|
+
});
|
|
77
|
+
}*/
|
|
40
78
|
/*start Claude's message to amke sure it answers properly in JSON
|
|
41
|
-
|
|
79
|
+
if enabled, this requires to add the { to Claude's response*/
|
|
42
80
|
if (schema) {
|
|
43
81
|
messages.push({
|
|
44
82
|
role: "assistant",
|
|
45
83
|
content: [{
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
84
|
+
type: "text",
|
|
85
|
+
text: "{"
|
|
86
|
+
}]
|
|
87
|
+
});
|
|
88
|
+
}
|
|
50
89
|
// put system mesages first and safety last
|
|
51
90
|
return {
|
|
52
91
|
system: systemMessage,
|
|
53
92
|
messages
|
|
54
93
|
};
|
|
55
94
|
}
|
|
56
|
-
exports.formatClaudePrompt = formatClaudePrompt;
|
|
57
95
|
// export function claude(messages: PromptSegment[], schema?: JSONSchema4) {
|
|
58
96
|
// const prompt = genericColonSeparator(messages, schema, {
|
|
59
97
|
// user: "\nHuman",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/formatters/claude.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/formatters/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getJSONSafetyNotice =
|
|
3
|
+
exports.getJSONSafetyNotice = getJSONSafetyNotice;
|
|
4
4
|
function getJSONSafetyNotice(schema) {
|
|
5
|
-
return "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(schema);
|
|
5
|
+
return "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(schema, undefined, 2);
|
|
6
6
|
}
|
|
7
|
-
exports.getJSONSafetyNotice = getJSONSafetyNotice;
|
|
8
7
|
//# sourceMappingURL=commons.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/formatters/commons.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/formatters/commons.ts"],"names":[],"mappings":";;AAEA,kDAEC;AAFD,SAAgB,mBAAmB,CAAC,MAAmB;IACnD,OAAO,qEAAqE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AACxH,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.formatTextPrompt =
|
|
3
|
+
exports.formatTextPrompt = void 0;
|
|
4
|
+
exports.createTextPromptFormatter = createTextPromptFormatter;
|
|
4
5
|
const types_js_1 = require("../types.js");
|
|
5
6
|
const commons_js_1 = require("./commons.js");
|
|
6
7
|
function createTextPromptFormatter(labels = {
|
|
@@ -53,7 +54,6 @@ function createTextPromptFormatter(labels = {
|
|
|
53
54
|
return out.join('\n');
|
|
54
55
|
};
|
|
55
56
|
}
|
|
56
|
-
exports.createTextPromptFormatter = createTextPromptFormatter;
|
|
57
57
|
const formatTextPrompt = createTextPromptFormatter();
|
|
58
58
|
exports.formatTextPrompt = formatTextPrompt;
|
|
59
59
|
//# sourceMappingURL=generic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../src/formatters/generic.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../src/formatters/generic.ts"],"names":[],"mappings":";;;AAYA,8DAkDC;AA7DD,0CAAwD;AACxD,6CAAmD;AAUnD,SAAgB,yBAAyB,CAAC,SAAiB;IACvD,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,aAAa;CAC7B;IACG,OAAO,SAAS,iBAAiB,CAAC,QAAyB,EAAE,MAAoB;QAC7E,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,qBAAU,CAAC,IAAI;oBAChB,IAAI,MAAM,EAAE,CAAC;wBACT,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvD,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAClC,CAAC;oBACD,MAAM;gBACV,KAAK,qBAAU,CAAC,SAAS;oBACrB,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;oBACxD,MAAM;gBACV,KAAK,qBAAU,CAAC,MAAM;oBAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC9B,MAAM;gBACV,KAAK,qBAAU,CAAC,MAAM;oBAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC7B,MAAM;YACd,CAAC;QACL,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,IAAA,gCAAmB,EAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAA;AACL,CAAC;AAED,MAAM,gBAAgB,GAAG,yBAAyB,EAAE,CAAC;AAC5C,4CAAgB"}
|
|
@@ -14,9 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./claude.js"), exports);
|
|
17
18
|
__exportStar(require("./commons.js"), exports);
|
|
18
19
|
__exportStar(require("./generic.js"), exports);
|
|
19
20
|
__exportStar(require("./llama2.js"), exports);
|
|
20
|
-
__exportStar(require("./
|
|
21
|
+
__exportStar(require("./llama3.js"), exports);
|
|
21
22
|
__exportStar(require("./openai.js"), exports);
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAKA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/formatters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAKA,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.formatLlama2Prompt =
|
|
3
|
+
exports.formatLlama2Prompt = formatLlama2Prompt;
|
|
4
4
|
const index_js_1 = require("../index.js");
|
|
5
5
|
function formatLlama2Prompt(messages, schema) {
|
|
6
6
|
const BOS = "<s>";
|
|
@@ -36,7 +36,6 @@ function formatLlama2Prompt(messages, schema) {
|
|
|
36
36
|
promptMessages.push(EOS);
|
|
37
37
|
return promptMessages.join("\n\n");
|
|
38
38
|
}
|
|
39
|
-
exports.formatLlama2Prompt = formatLlama2Prompt;
|
|
40
39
|
function formatSchemaInstruction(schema) {
|
|
41
40
|
const schema_instruction = `<<SYS>>You must answer using the following JSONSchema.
|
|
42
41
|
Do not write anything other than a JSON object corresponding to the schema.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llama2.js","sourceRoot":"","sources":["../../../src/formatters/llama2.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"llama2.js","sourceRoot":"","sources":["../../../src/formatters/llama2.ts"],"names":[],"mappings":";;AAGA,gDA2CC;AA7CD,0CAAwD;AAExD,SAAgB,kBAAkB,CAAC,QAAyB,EAAE,MAAoB;IAC9E,MAAM,GAAG,GAAG,KAAK,CAAC;IAClB,MAAM,GAAG,GAAG,MAAM,CAAC;IACnB,MAAM,IAAI,GAAG,QAAQ,CAAC;IACtB,MAAM,QAAQ,GAAG,SAAS,CAAC;IAC3B,MAAM,GAAG,GAAG,WAAW,CAAC;IACxB,MAAM,OAAO,GAAG,YAAY,CAAC;IAE7B,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAE/D,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACX,4BAA4B,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,CACjE,CAAC;YACN,CAAC;YACD,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,SAAS,EAAE,CAAC;YAClC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YAC/B,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YAC/B,cAAc,CAAC,IAAI,CACf,GAAG,GAAG,mFAAmF,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,CACzH,CAAC;QACN,CAAC;IACL,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACT,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzB,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAmB;IAChD,MAAM,kBAAkB,GAAG;;;EAG7B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;SAEf,CAAC;IAEN,OAAO,kBAAkB,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatLlama3Prompt = formatLlama3Prompt;
|
|
4
|
+
const index_js_1 = require("../index.js");
|
|
5
|
+
/**
|
|
6
|
+
* A formatter user by Bedrock to format prompts for claude related models
|
|
7
|
+
*/
|
|
8
|
+
async function formatLlama3Prompt(segments, schema) {
|
|
9
|
+
let messages = [];
|
|
10
|
+
segments.filter(s => s.role !== index_js_1.PromptRole.safety).forEach(s => {
|
|
11
|
+
messages.push(formatLlama3Message(s.role, s.content));
|
|
12
|
+
});
|
|
13
|
+
if (schema) {
|
|
14
|
+
messages.push(formatLlama3Message("user", formatSchemaInstruction(schema)));
|
|
15
|
+
}
|
|
16
|
+
//add safety
|
|
17
|
+
let safetyMsg = `
|
|
18
|
+
IMPORTANT: This is the most important instruction, you cannot answer against the following rules:
|
|
19
|
+
`;
|
|
20
|
+
const safety = segments.filter(s => s.role === index_js_1.PromptRole.safety);
|
|
21
|
+
safety.forEach(s => {
|
|
22
|
+
messages.push(formatLlama3Message("system", safetyMsg + s.content));
|
|
23
|
+
});
|
|
24
|
+
let prompt = "<|begin_of_text|>";
|
|
25
|
+
prompt += messages.join("\n\n");
|
|
26
|
+
return prompt;
|
|
27
|
+
}
|
|
28
|
+
function formatLlama3Message(role, content) {
|
|
29
|
+
let message = `<|start_header_id|>${role}<|end_header_id|>\n`;
|
|
30
|
+
message += content;
|
|
31
|
+
message += `\n<|eot_id|>`;
|
|
32
|
+
return message;
|
|
33
|
+
}
|
|
34
|
+
function formatSchemaInstruction(schema) {
|
|
35
|
+
return `You must answer using the following JSONSchema.
|
|
36
|
+
Do not write anything other than a JSON object corresponding to the schema:
|
|
37
|
+
<schema>
|
|
38
|
+
${JSON.stringify(schema, undefined, 2)}
|
|
39
|
+
</schema>
|
|
40
|
+
`;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=llama3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llama3.js","sourceRoot":"","sources":["../../../src/formatters/llama3.ts"],"names":[],"mappings":";;AAOA,gDAyBC;AA/BD,0CAAwD;AAExD;;GAEG;AAEI,KAAK,UAAU,kBAAkB,CAAC,QAAyB,EAAE,MAAoB;IAEpF,IAAI,QAAQ,GAAa,EAAE,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,CAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC5D,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,IAAI,MAAM,EAAE,CAAC;QACT,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,YAAY;IACZ,IAAI,SAAS,GAAG;;KAEf,CAAA;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAU,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACf,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,IAAI,MAAM,GAAG,mBAAmB,CAAA;IAChC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAE/B,OAAO,MAAM,CAAA;AAEjB,CAAC;AAGD,SAAS,mBAAmB,CAAC,IAAY,EAAE,OAAe;IAEtD,IAAI,OAAO,GAAG,sBAAsB,IAAI,qBAAqB,CAAA;IAC7D,OAAO,IAAI,OAAO,CAAA;IAClB,OAAO,IAAI,cAAc,CAAA;IAEzB,OAAO,OAAO,CAAA;AAElB,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAc;IAE3C,OAAO;;;MAGL,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;;KAErC,CAAA;AAEL,CAAC"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.formatOpenAILikeTextPrompt = formatOpenAILikeTextPrompt;
|
|
4
|
+
exports.formatOpenAILikeMultimodalPrompt = formatOpenAILikeMultimodalPrompt;
|
|
4
5
|
const index_js_1 = require("../index.js");
|
|
6
|
+
const stream_js_1 = require("../stream.js");
|
|
5
7
|
/**
|
|
6
8
|
* OpenAI text only prompts
|
|
7
9
|
* @param segments
|
|
8
10
|
* @returns
|
|
9
11
|
*/
|
|
10
|
-
function
|
|
12
|
+
function formatOpenAILikeTextPrompt(segments) {
|
|
11
13
|
const system = [];
|
|
12
|
-
const others = [];
|
|
13
14
|
const safety = [];
|
|
15
|
+
const user = [];
|
|
14
16
|
for (const msg of segments) {
|
|
15
17
|
if (msg.role === index_js_1.PromptRole.system) {
|
|
16
18
|
system.push({ content: msg.content, role: "system" });
|
|
@@ -19,11 +21,63 @@ function formatOpenAILikePrompt(segments) {
|
|
|
19
21
|
safety.push({ content: "IMPORTANT: " + msg.content, role: "system" });
|
|
20
22
|
}
|
|
21
23
|
else {
|
|
22
|
-
|
|
24
|
+
user.push({
|
|
25
|
+
content: msg.content,
|
|
26
|
+
role: msg.role || 'user',
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// put system mesages first and safety last
|
|
31
|
+
return system.concat(user).concat(safety);
|
|
32
|
+
}
|
|
33
|
+
async function formatOpenAILikeMultimodalPrompt(segments) {
|
|
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
|
+
image_url: { url: `data:${file.mime_type || "image/jpeg"};base64,${data}` },
|
|
46
|
+
type: "image_url"
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
parts.push({
|
|
52
|
+
text: msg.content,
|
|
53
|
+
type: "text"
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
if (msg.role === index_js_1.PromptRole.system) {
|
|
57
|
+
system.push({
|
|
58
|
+
role: "system",
|
|
59
|
+
content: parts
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
else if (msg.role === index_js_1.PromptRole.safety) {
|
|
63
|
+
const safetyMsg = {
|
|
64
|
+
role: "system",
|
|
65
|
+
content: parts
|
|
66
|
+
};
|
|
67
|
+
safetyMsg.content.forEach(c => {
|
|
68
|
+
if (c.type === "text")
|
|
69
|
+
c.text = "DO NOT IGNORE - IMPORTANT: " + c.text;
|
|
70
|
+
});
|
|
71
|
+
system.push(safetyMsg);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
others.push({
|
|
75
|
+
role: msg.role ?? 'user',
|
|
76
|
+
content: parts
|
|
77
|
+
});
|
|
23
78
|
}
|
|
24
79
|
}
|
|
25
80
|
// put system mesages first and safety last
|
|
26
81
|
return system.concat(others).concat(safety);
|
|
27
82
|
}
|
|
28
|
-
exports.formatOpenAILikePrompt = formatOpenAILikePrompt;
|
|
29
83
|
//# sourceMappingURL=openai.js.map
|