@promptbook/legacy-documents 0.92.0-5 → 0.92.0-7
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/esm/index.es.js +124 -10
- package/esm/index.es.js.map +1 -1
- package/esm/typings/src/_packages/core.index.d.ts +4 -0
- package/esm/typings/src/_packages/utils.index.d.ts +2 -0
- package/esm/typings/src/cli/common/$provideLlmToolsForCli.d.ts +1 -1
- package/esm/typings/src/conversion/archive/loadArchive.d.ts +2 -2
- package/esm/typings/src/execution/createPipelineExecutor/getKnowledgeForTask.d.ts +12 -0
- package/esm/typings/src/execution/createPipelineExecutor/getReservedParametersForTask.d.ts +5 -0
- package/esm/typings/src/formats/json/utils/jsonParse.d.ts +11 -0
- package/esm/typings/src/llm-providers/_common/register/LlmToolsMetadata.d.ts +43 -0
- package/esm/typings/src/remote-server/openapi-types.d.ts +348 -6
- package/esm/typings/src/remote-server/openapi.d.ts +397 -3
- package/package.json +2 -2
- package/umd/index.umd.js +128 -14
- package/umd/index.umd.js.map +1 -1
|
@@ -16,6 +16,13 @@ export declare const openapiJson: {
|
|
|
16
16
|
responses: {
|
|
17
17
|
'200': {
|
|
18
18
|
description: string;
|
|
19
|
+
content: {
|
|
20
|
+
'text/markdown': {
|
|
21
|
+
schema: {
|
|
22
|
+
type: string;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
};
|
|
19
26
|
};
|
|
20
27
|
};
|
|
21
28
|
};
|
|
@@ -46,13 +53,22 @@ export declare const openapiJson: {
|
|
|
46
53
|
};
|
|
47
54
|
};
|
|
48
55
|
responses: {
|
|
49
|
-
'
|
|
56
|
+
'201': {
|
|
50
57
|
description: string;
|
|
51
58
|
content: {
|
|
52
59
|
'application/json': {
|
|
53
60
|
schema: {
|
|
54
61
|
type: string;
|
|
55
62
|
properties: {
|
|
63
|
+
isSuccess: {
|
|
64
|
+
type: string;
|
|
65
|
+
};
|
|
66
|
+
message: {
|
|
67
|
+
type: string;
|
|
68
|
+
};
|
|
69
|
+
error: {
|
|
70
|
+
type: string;
|
|
71
|
+
};
|
|
56
72
|
identification: {
|
|
57
73
|
type: string;
|
|
58
74
|
};
|
|
@@ -61,6 +77,43 @@ export declare const openapiJson: {
|
|
|
61
77
|
};
|
|
62
78
|
};
|
|
63
79
|
};
|
|
80
|
+
'400': {
|
|
81
|
+
description: string;
|
|
82
|
+
content: {
|
|
83
|
+
'application/json': {
|
|
84
|
+
schema: {
|
|
85
|
+
type: string;
|
|
86
|
+
properties: {
|
|
87
|
+
error: {
|
|
88
|
+
type: string;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
'401': {
|
|
96
|
+
description: string;
|
|
97
|
+
content: {
|
|
98
|
+
'application/json': {
|
|
99
|
+
schema: {
|
|
100
|
+
type: string;
|
|
101
|
+
properties: {
|
|
102
|
+
isSuccess: {
|
|
103
|
+
type: string;
|
|
104
|
+
enum: boolean[];
|
|
105
|
+
};
|
|
106
|
+
message: {
|
|
107
|
+
type: string;
|
|
108
|
+
};
|
|
109
|
+
error: {
|
|
110
|
+
type: string;
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
};
|
|
64
117
|
};
|
|
65
118
|
};
|
|
66
119
|
};
|
|
@@ -82,6 +135,16 @@ export declare const openapiJson: {
|
|
|
82
135
|
};
|
|
83
136
|
};
|
|
84
137
|
};
|
|
138
|
+
'500': {
|
|
139
|
+
description: string;
|
|
140
|
+
content: {
|
|
141
|
+
'text/plain': {
|
|
142
|
+
schema: {
|
|
143
|
+
type: string;
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
};
|
|
85
148
|
};
|
|
86
149
|
};
|
|
87
150
|
};
|
|
@@ -111,6 +174,28 @@ export declare const openapiJson: {
|
|
|
111
174
|
};
|
|
112
175
|
'404': {
|
|
113
176
|
description: string;
|
|
177
|
+
content: {
|
|
178
|
+
'application/json': {
|
|
179
|
+
schema: {
|
|
180
|
+
type: string;
|
|
181
|
+
properties: {
|
|
182
|
+
error: {
|
|
183
|
+
type: string;
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
};
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
'500': {
|
|
191
|
+
description: string;
|
|
192
|
+
content: {
|
|
193
|
+
'text/plain': {
|
|
194
|
+
schema: {
|
|
195
|
+
type: string;
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
};
|
|
114
199
|
};
|
|
115
200
|
};
|
|
116
201
|
};
|
|
@@ -128,11 +213,172 @@ export declare const openapiJson: {
|
|
|
128
213
|
type: string;
|
|
129
214
|
items: {
|
|
130
215
|
type: string;
|
|
216
|
+
properties: {
|
|
217
|
+
nonce: {
|
|
218
|
+
type: string;
|
|
219
|
+
};
|
|
220
|
+
taskId: {
|
|
221
|
+
type: string;
|
|
222
|
+
};
|
|
223
|
+
taskType: {
|
|
224
|
+
type: string;
|
|
225
|
+
};
|
|
226
|
+
status: {
|
|
227
|
+
type: string;
|
|
228
|
+
};
|
|
229
|
+
createdAt: {
|
|
230
|
+
type: string;
|
|
231
|
+
format: string;
|
|
232
|
+
};
|
|
233
|
+
updatedAt: {
|
|
234
|
+
type: string;
|
|
235
|
+
format: string;
|
|
236
|
+
};
|
|
237
|
+
};
|
|
238
|
+
};
|
|
239
|
+
};
|
|
240
|
+
};
|
|
241
|
+
};
|
|
242
|
+
};
|
|
243
|
+
};
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
'/executions/last': {
|
|
247
|
+
get: {
|
|
248
|
+
summary: string;
|
|
249
|
+
description: string;
|
|
250
|
+
responses: {
|
|
251
|
+
'200': {
|
|
252
|
+
description: string;
|
|
253
|
+
content: {
|
|
254
|
+
'application/json': {
|
|
255
|
+
schema: {
|
|
256
|
+
type: string;
|
|
257
|
+
properties: {
|
|
258
|
+
nonce: {
|
|
259
|
+
type: string;
|
|
260
|
+
};
|
|
261
|
+
taskId: {
|
|
262
|
+
type: string;
|
|
263
|
+
};
|
|
264
|
+
taskType: {
|
|
265
|
+
type: string;
|
|
266
|
+
};
|
|
267
|
+
status: {
|
|
268
|
+
type: string;
|
|
269
|
+
};
|
|
270
|
+
errors: {
|
|
271
|
+
type: string;
|
|
272
|
+
items: {
|
|
273
|
+
type: string;
|
|
274
|
+
};
|
|
275
|
+
};
|
|
276
|
+
warnings: {
|
|
277
|
+
type: string;
|
|
278
|
+
items: {
|
|
279
|
+
type: string;
|
|
280
|
+
};
|
|
281
|
+
};
|
|
282
|
+
createdAt: {
|
|
283
|
+
type: string;
|
|
284
|
+
format: string;
|
|
285
|
+
};
|
|
286
|
+
updatedAt: {
|
|
287
|
+
type: string;
|
|
288
|
+
format: string;
|
|
289
|
+
};
|
|
290
|
+
currentValue: {
|
|
291
|
+
type: string;
|
|
292
|
+
};
|
|
293
|
+
};
|
|
294
|
+
};
|
|
295
|
+
};
|
|
296
|
+
};
|
|
297
|
+
};
|
|
298
|
+
'404': {
|
|
299
|
+
description: string;
|
|
300
|
+
content: {
|
|
301
|
+
'text/plain': {
|
|
302
|
+
schema: {
|
|
303
|
+
type: string;
|
|
304
|
+
};
|
|
305
|
+
};
|
|
306
|
+
};
|
|
307
|
+
};
|
|
308
|
+
};
|
|
309
|
+
};
|
|
310
|
+
};
|
|
311
|
+
'/executions/{taskId}': {
|
|
312
|
+
get: {
|
|
313
|
+
summary: string;
|
|
314
|
+
description: string;
|
|
315
|
+
parameters: {
|
|
316
|
+
in: string;
|
|
317
|
+
name: string;
|
|
318
|
+
required: boolean;
|
|
319
|
+
schema: {
|
|
320
|
+
type: string;
|
|
321
|
+
};
|
|
322
|
+
description: string;
|
|
323
|
+
}[];
|
|
324
|
+
responses: {
|
|
325
|
+
'200': {
|
|
326
|
+
description: string;
|
|
327
|
+
content: {
|
|
328
|
+
'application/json': {
|
|
329
|
+
schema: {
|
|
330
|
+
type: string;
|
|
331
|
+
properties: {
|
|
332
|
+
nonce: {
|
|
333
|
+
type: string;
|
|
334
|
+
};
|
|
335
|
+
taskId: {
|
|
336
|
+
type: string;
|
|
337
|
+
};
|
|
338
|
+
taskType: {
|
|
339
|
+
type: string;
|
|
340
|
+
};
|
|
341
|
+
status: {
|
|
342
|
+
type: string;
|
|
343
|
+
};
|
|
344
|
+
errors: {
|
|
345
|
+
type: string;
|
|
346
|
+
items: {
|
|
347
|
+
type: string;
|
|
348
|
+
};
|
|
349
|
+
};
|
|
350
|
+
warnings: {
|
|
351
|
+
type: string;
|
|
352
|
+
items: {
|
|
353
|
+
type: string;
|
|
354
|
+
};
|
|
355
|
+
};
|
|
356
|
+
createdAt: {
|
|
357
|
+
type: string;
|
|
358
|
+
format: string;
|
|
359
|
+
};
|
|
360
|
+
updatedAt: {
|
|
361
|
+
type: string;
|
|
362
|
+
format: string;
|
|
363
|
+
};
|
|
364
|
+
currentValue: {
|
|
365
|
+
type: string;
|
|
366
|
+
};
|
|
131
367
|
};
|
|
132
368
|
};
|
|
133
369
|
};
|
|
134
370
|
};
|
|
135
371
|
};
|
|
372
|
+
'404': {
|
|
373
|
+
description: string;
|
|
374
|
+
content: {
|
|
375
|
+
'text/plain': {
|
|
376
|
+
schema: {
|
|
377
|
+
type: string;
|
|
378
|
+
};
|
|
379
|
+
};
|
|
380
|
+
};
|
|
381
|
+
};
|
|
136
382
|
};
|
|
137
383
|
};
|
|
138
384
|
};
|
|
@@ -149,12 +395,19 @@ export declare const openapiJson: {
|
|
|
149
395
|
properties: {
|
|
150
396
|
pipelineUrl: {
|
|
151
397
|
type: string;
|
|
398
|
+
description: string;
|
|
399
|
+
};
|
|
400
|
+
book: {
|
|
401
|
+
type: string;
|
|
402
|
+
description: string;
|
|
152
403
|
};
|
|
153
404
|
inputParameters: {
|
|
154
405
|
type: string;
|
|
406
|
+
description: string;
|
|
155
407
|
};
|
|
156
408
|
identification: {
|
|
157
409
|
type: string;
|
|
410
|
+
description: string;
|
|
158
411
|
};
|
|
159
412
|
};
|
|
160
413
|
};
|
|
@@ -174,13 +427,154 @@ export declare const openapiJson: {
|
|
|
174
427
|
};
|
|
175
428
|
'400': {
|
|
176
429
|
description: string;
|
|
430
|
+
content: {
|
|
431
|
+
'application/json': {
|
|
432
|
+
schema: {
|
|
433
|
+
type: string;
|
|
434
|
+
properties: {
|
|
435
|
+
error: {
|
|
436
|
+
type: string;
|
|
437
|
+
};
|
|
438
|
+
};
|
|
439
|
+
};
|
|
440
|
+
};
|
|
441
|
+
};
|
|
442
|
+
};
|
|
443
|
+
'404': {
|
|
444
|
+
description: string;
|
|
445
|
+
content: {
|
|
446
|
+
'text/plain': {
|
|
447
|
+
schema: {
|
|
448
|
+
type: string;
|
|
449
|
+
};
|
|
450
|
+
};
|
|
451
|
+
};
|
|
452
|
+
};
|
|
453
|
+
};
|
|
454
|
+
};
|
|
455
|
+
};
|
|
456
|
+
'/api-docs': {
|
|
457
|
+
get: {
|
|
458
|
+
summary: string;
|
|
459
|
+
description: string;
|
|
460
|
+
responses: {
|
|
461
|
+
'200': {
|
|
462
|
+
description: string;
|
|
463
|
+
};
|
|
464
|
+
};
|
|
465
|
+
};
|
|
466
|
+
};
|
|
467
|
+
'/swagger': {
|
|
468
|
+
get: {
|
|
469
|
+
summary: string;
|
|
470
|
+
description: string;
|
|
471
|
+
responses: {
|
|
472
|
+
'200': {
|
|
473
|
+
description: string;
|
|
474
|
+
};
|
|
475
|
+
};
|
|
476
|
+
};
|
|
477
|
+
};
|
|
478
|
+
'/openapi': {
|
|
479
|
+
get: {
|
|
480
|
+
summary: string;
|
|
481
|
+
description: string;
|
|
482
|
+
responses: {
|
|
483
|
+
'200': {
|
|
484
|
+
description: string;
|
|
485
|
+
content: {
|
|
486
|
+
'application/json': {
|
|
487
|
+
schema: {
|
|
488
|
+
type: string;
|
|
489
|
+
};
|
|
490
|
+
};
|
|
491
|
+
};
|
|
177
492
|
};
|
|
178
493
|
};
|
|
179
494
|
};
|
|
180
495
|
};
|
|
181
496
|
};
|
|
182
|
-
components: {
|
|
183
|
-
|
|
497
|
+
components: {
|
|
498
|
+
schemas: {
|
|
499
|
+
Error: {
|
|
500
|
+
type: string;
|
|
501
|
+
properties: {
|
|
502
|
+
error: {
|
|
503
|
+
type: string;
|
|
504
|
+
};
|
|
505
|
+
};
|
|
506
|
+
};
|
|
507
|
+
ExecutionTaskSummary: {
|
|
508
|
+
type: string;
|
|
509
|
+
properties: {
|
|
510
|
+
nonce: {
|
|
511
|
+
type: string;
|
|
512
|
+
};
|
|
513
|
+
taskId: {
|
|
514
|
+
type: string;
|
|
515
|
+
};
|
|
516
|
+
taskType: {
|
|
517
|
+
type: string;
|
|
518
|
+
};
|
|
519
|
+
status: {
|
|
520
|
+
type: string;
|
|
521
|
+
};
|
|
522
|
+
createdAt: {
|
|
523
|
+
type: string;
|
|
524
|
+
format: string;
|
|
525
|
+
};
|
|
526
|
+
updatedAt: {
|
|
527
|
+
type: string;
|
|
528
|
+
format: string;
|
|
529
|
+
};
|
|
530
|
+
};
|
|
531
|
+
};
|
|
532
|
+
ExecutionTaskFull: {
|
|
533
|
+
type: string;
|
|
534
|
+
properties: {
|
|
535
|
+
nonce: {
|
|
536
|
+
type: string;
|
|
537
|
+
};
|
|
538
|
+
taskId: {
|
|
539
|
+
type: string;
|
|
540
|
+
};
|
|
541
|
+
taskType: {
|
|
542
|
+
type: string;
|
|
543
|
+
};
|
|
544
|
+
status: {
|
|
545
|
+
type: string;
|
|
546
|
+
};
|
|
547
|
+
errors: {
|
|
548
|
+
type: string;
|
|
549
|
+
items: {
|
|
550
|
+
type: string;
|
|
551
|
+
};
|
|
552
|
+
};
|
|
553
|
+
warnings: {
|
|
554
|
+
type: string;
|
|
555
|
+
items: {
|
|
556
|
+
type: string;
|
|
557
|
+
};
|
|
558
|
+
};
|
|
559
|
+
createdAt: {
|
|
560
|
+
type: string;
|
|
561
|
+
format: string;
|
|
562
|
+
};
|
|
563
|
+
updatedAt: {
|
|
564
|
+
type: string;
|
|
565
|
+
format: string;
|
|
566
|
+
};
|
|
567
|
+
currentValue: {
|
|
568
|
+
type: string;
|
|
569
|
+
};
|
|
570
|
+
};
|
|
571
|
+
};
|
|
572
|
+
};
|
|
573
|
+
};
|
|
574
|
+
tags: {
|
|
575
|
+
name: string;
|
|
576
|
+
description: string;
|
|
577
|
+
}[];
|
|
184
578
|
};
|
|
185
579
|
/**
|
|
186
580
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@promptbook/legacy-documents",
|
|
3
|
-
"version": "0.92.0-
|
|
3
|
+
"version": "0.92.0-7",
|
|
4
4
|
"description": "It's time for a paradigm shift. The future of software in plain English, French or Latin",
|
|
5
5
|
"private": false,
|
|
6
6
|
"sideEffects": false,
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"module": "./esm/index.es.js",
|
|
52
52
|
"typings": "./esm/typings/src/_packages/legacy-documents.index.d.ts",
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"@promptbook/core": "0.92.0-
|
|
54
|
+
"@promptbook/core": "0.92.0-7"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"colors": "1.4.0",
|
package/umd/index.umd.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* @generated
|
|
27
27
|
* @see https://github.com/webgptorg/promptbook
|
|
28
28
|
*/
|
|
29
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.92.0-
|
|
29
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.92.0-7';
|
|
30
30
|
/**
|
|
31
31
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
32
32
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
|
@@ -2296,6 +2296,45 @@
|
|
|
2296
2296
|
* - [♨] Are tasks prepared
|
|
2297
2297
|
*/
|
|
2298
2298
|
|
|
2299
|
+
/**
|
|
2300
|
+
* Converts a JavaScript Object Notation (JSON) string into an object.
|
|
2301
|
+
*
|
|
2302
|
+
* Note: This is wrapper around `JSON.parse()` with better error and type handling
|
|
2303
|
+
*
|
|
2304
|
+
* @public exported from `@promptbook/utils`
|
|
2305
|
+
*/
|
|
2306
|
+
function jsonParse(value) {
|
|
2307
|
+
if (value === undefined) {
|
|
2308
|
+
throw new Error(`Can not parse JSON from undefined value.`);
|
|
2309
|
+
}
|
|
2310
|
+
else if (typeof value !== 'string') {
|
|
2311
|
+
console.error('Can not parse JSON from non-string value.', { text: value });
|
|
2312
|
+
throw new Error(spaceTrim__default["default"](`
|
|
2313
|
+
Can not parse JSON from non-string value.
|
|
2314
|
+
|
|
2315
|
+
The value type: ${typeof value}
|
|
2316
|
+
See more in console.
|
|
2317
|
+
`));
|
|
2318
|
+
}
|
|
2319
|
+
try {
|
|
2320
|
+
return JSON.parse(value);
|
|
2321
|
+
}
|
|
2322
|
+
catch (error) {
|
|
2323
|
+
if (!(error instanceof Error)) {
|
|
2324
|
+
throw error;
|
|
2325
|
+
}
|
|
2326
|
+
throw new Error(spaceTrim__default["default"]((block) => `
|
|
2327
|
+
${block(error.message)}
|
|
2328
|
+
|
|
2329
|
+
The JSON text:
|
|
2330
|
+
${block(value)}
|
|
2331
|
+
`));
|
|
2332
|
+
}
|
|
2333
|
+
}
|
|
2334
|
+
/**
|
|
2335
|
+
* TODO: !!!! Use in Promptbook.studio
|
|
2336
|
+
*/
|
|
2337
|
+
|
|
2299
2338
|
/**
|
|
2300
2339
|
* Recursively converts JSON strings to JSON objects
|
|
2301
2340
|
|
|
@@ -2314,7 +2353,7 @@
|
|
|
2314
2353
|
const newObject = { ...object };
|
|
2315
2354
|
for (const [key, value] of Object.entries(object)) {
|
|
2316
2355
|
if (typeof value === 'string' && isValidJsonString(value)) {
|
|
2317
|
-
newObject[key] =
|
|
2356
|
+
newObject[key] = jsonParse(value);
|
|
2318
2357
|
}
|
|
2319
2358
|
else {
|
|
2320
2359
|
newObject[key] = jsonStringsToJsons(value);
|
|
@@ -3161,18 +3200,26 @@
|
|
|
3161
3200
|
}).asPromise();
|
|
3162
3201
|
const { outputParameters } = result;
|
|
3163
3202
|
const { modelsRequirements: modelsRequirementsJson } = outputParameters;
|
|
3164
|
-
|
|
3203
|
+
let modelsRequirementsUnchecked = jsonParse(modelsRequirementsJson);
|
|
3165
3204
|
if (isVerbose) {
|
|
3166
3205
|
console.info(`PERSONA ${personaDescription}`, modelsRequirementsUnchecked);
|
|
3167
3206
|
}
|
|
3168
3207
|
if (!Array.isArray(modelsRequirementsUnchecked)) {
|
|
3169
|
-
|
|
3170
|
-
|
|
3208
|
+
// <- TODO: Book should have syntax and system to enforce shape of JSON
|
|
3209
|
+
modelsRequirementsUnchecked = [modelsRequirementsUnchecked];
|
|
3210
|
+
/*
|
|
3211
|
+
throw new UnexpectedError(
|
|
3212
|
+
spaceTrim(
|
|
3213
|
+
(block) => `
|
|
3214
|
+
Invalid \`modelsRequirements\`:
|
|
3171
3215
|
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3216
|
+
\`\`\`json
|
|
3217
|
+
${block(JSON.stringify(modelsRequirementsUnchecked, null, 4))}
|
|
3218
|
+
\`\`\`
|
|
3219
|
+
`,
|
|
3220
|
+
),
|
|
3221
|
+
);
|
|
3222
|
+
*/
|
|
3176
3223
|
}
|
|
3177
3224
|
const modelsRequirements = modelsRequirementsUnchecked.map((modelRequirements) => ({
|
|
3178
3225
|
modelVariant: 'CHAT',
|
|
@@ -3607,7 +3654,7 @@
|
|
|
3607
3654
|
> },
|
|
3608
3655
|
*/
|
|
3609
3656
|
async asJson() {
|
|
3610
|
-
return
|
|
3657
|
+
return jsonParse(await tools.fs.readFile(filename, 'utf-8'));
|
|
3611
3658
|
},
|
|
3612
3659
|
async asText() {
|
|
3613
3660
|
return await tools.fs.readFile(filename, 'utf-8');
|
|
@@ -5294,13 +5341,79 @@
|
|
|
5294
5341
|
/**
|
|
5295
5342
|
* @@@
|
|
5296
5343
|
*
|
|
5344
|
+
* Here is the place where RAG (retrieval-augmented generation) happens
|
|
5345
|
+
*
|
|
5297
5346
|
* @private internal utility of `createPipelineExecutor`
|
|
5298
5347
|
*/
|
|
5299
5348
|
async function getKnowledgeForTask(options) {
|
|
5300
|
-
const { preparedPipeline, task } = options;
|
|
5301
|
-
|
|
5349
|
+
const { tools, preparedPipeline, task } = options;
|
|
5350
|
+
const firstKnowlegePiece = preparedPipeline.knowledgePieces[0];
|
|
5351
|
+
const firstKnowlegeIndex = firstKnowlegePiece === null || firstKnowlegePiece === void 0 ? void 0 : firstKnowlegePiece.index[0];
|
|
5352
|
+
// <- TODO: Do not use just first knowledge piece and first index to determine embedding model, use also keyword search
|
|
5353
|
+
if (firstKnowlegePiece === undefined || firstKnowlegeIndex === undefined) {
|
|
5354
|
+
return 'No knowledge pieces found';
|
|
5355
|
+
}
|
|
5356
|
+
// TODO: [🚐] Make arrayable LLMs -> single LLM DRY
|
|
5357
|
+
const _llms = arrayableToArray(tools.llm);
|
|
5358
|
+
const llmTools = _llms.length === 1 ? _llms[0] : joinLlmExecutionTools(..._llms);
|
|
5359
|
+
const taskEmbeddingPrompt = {
|
|
5360
|
+
title: 'Knowledge Search',
|
|
5361
|
+
modelRequirements: {
|
|
5362
|
+
modelVariant: 'EMBEDDING',
|
|
5363
|
+
modelName: firstKnowlegeIndex.modelName,
|
|
5364
|
+
},
|
|
5365
|
+
content: task.content,
|
|
5366
|
+
parameters: {
|
|
5367
|
+
/* !!!!!!!! */
|
|
5368
|
+
},
|
|
5369
|
+
};
|
|
5370
|
+
const taskEmbeddingResult = await llmTools.callEmbeddingModel(taskEmbeddingPrompt);
|
|
5371
|
+
const knowledgePiecesWithRelevance = preparedPipeline.knowledgePieces.map((knowledgePiece) => {
|
|
5372
|
+
const { index } = knowledgePiece;
|
|
5373
|
+
const knowledgePieceIndex = index.find((i) => i.modelName === firstKnowlegeIndex.modelName);
|
|
5374
|
+
// <- TODO: Do not use just first knowledge piece and first index to determine embedding model
|
|
5375
|
+
if (knowledgePieceIndex === undefined) {
|
|
5376
|
+
return {
|
|
5377
|
+
content: knowledgePiece.content,
|
|
5378
|
+
relevance: 0,
|
|
5379
|
+
};
|
|
5380
|
+
}
|
|
5381
|
+
const relevance = computeCosineSimilarity(knowledgePieceIndex.position, taskEmbeddingResult.content);
|
|
5382
|
+
return {
|
|
5383
|
+
content: knowledgePiece.content,
|
|
5384
|
+
relevance,
|
|
5385
|
+
};
|
|
5386
|
+
});
|
|
5387
|
+
const knowledgePiecesSorted = knowledgePiecesWithRelevance.sort((a, b) => a.relevance - b.relevance);
|
|
5388
|
+
const knowledgePiecesLimited = knowledgePiecesSorted.slice(0, 5);
|
|
5389
|
+
console.log('!!! Embedding', {
|
|
5390
|
+
task,
|
|
5391
|
+
taskEmbeddingPrompt,
|
|
5392
|
+
taskEmbeddingResult,
|
|
5393
|
+
firstKnowlegePiece,
|
|
5394
|
+
firstKnowlegeIndex,
|
|
5395
|
+
knowledgePiecesWithRelevance,
|
|
5396
|
+
knowledgePiecesSorted,
|
|
5397
|
+
knowledgePiecesLimited,
|
|
5398
|
+
});
|
|
5399
|
+
return knowledgePiecesLimited.map(({ content }) => `- ${content}`).join('\n');
|
|
5302
5400
|
// <- TODO: [🧠] Some smart aggregation of knowledge pieces, single-line vs multi-line vs mixed
|
|
5303
5401
|
}
|
|
5402
|
+
// TODO: !!!!!! Annotate + to new file
|
|
5403
|
+
function computeCosineSimilarity(embeddingVector1, embeddingVector2) {
|
|
5404
|
+
if (embeddingVector1.length !== embeddingVector2.length) {
|
|
5405
|
+
throw new TypeError('Embedding vectors must have the same length');
|
|
5406
|
+
}
|
|
5407
|
+
const dotProduct = embeddingVector1.reduce((sum, value, index) => sum + value * embeddingVector2[index], 0);
|
|
5408
|
+
const magnitude1 = Math.sqrt(embeddingVector1.reduce((sum, value) => sum + value * value, 0));
|
|
5409
|
+
const magnitude2 = Math.sqrt(embeddingVector2.reduce((sum, value) => sum + value * value, 0));
|
|
5410
|
+
return 1 - dotProduct / (magnitude1 * magnitude2);
|
|
5411
|
+
}
|
|
5412
|
+
/**
|
|
5413
|
+
* TODO: !!!! Verify if this is working
|
|
5414
|
+
* TODO: [♨] Implement Better - use keyword search
|
|
5415
|
+
* TODO: [♨] Examples of values
|
|
5416
|
+
*/
|
|
5304
5417
|
|
|
5305
5418
|
/**
|
|
5306
5419
|
* @@@
|
|
@@ -5308,9 +5421,9 @@
|
|
|
5308
5421
|
* @private internal utility of `createPipelineExecutor`
|
|
5309
5422
|
*/
|
|
5310
5423
|
async function getReservedParametersForTask(options) {
|
|
5311
|
-
const { preparedPipeline, task, pipelineIdentification } = options;
|
|
5424
|
+
const { tools, preparedPipeline, task, pipelineIdentification } = options;
|
|
5312
5425
|
const context = await getContextForTask(); // <- [🏍]
|
|
5313
|
-
const knowledge = await getKnowledgeForTask({ preparedPipeline, task });
|
|
5426
|
+
const knowledge = await getKnowledgeForTask({ tools, preparedPipeline, task });
|
|
5314
5427
|
const examples = await getExamplesForTask();
|
|
5315
5428
|
const currentDate = new Date().toISOString(); // <- TODO: [🧠][💩] Better
|
|
5316
5429
|
const modelName = RESERVED_PARAMETER_MISSING_VALUE;
|
|
@@ -5372,6 +5485,7 @@
|
|
|
5372
5485
|
}
|
|
5373
5486
|
const definedParameters = Object.freeze({
|
|
5374
5487
|
...(await getReservedParametersForTask({
|
|
5488
|
+
tools,
|
|
5375
5489
|
preparedPipeline,
|
|
5376
5490
|
task: currentTask,
|
|
5377
5491
|
pipelineIdentification,
|