@promptbook/pdf 0.92.0-15 → 0.92.0-17
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.
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { KnowledgePiecePreparedJson } from '../../pipeline/PipelineJson/KnowledgePieceJson';
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @param knowledgePieces
|
|
5
|
+
* @returns
|
|
6
|
+
*
|
|
7
|
+
* @private internal utility of `createPipelineExecutor`
|
|
8
|
+
*/
|
|
9
|
+
export declare function knowledgePiecesToString(knowledgePieces: ReadonlyArray<Pick<KnowledgePiecePreparedJson, 'content'>>): string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@promptbook/pdf",
|
|
3
|
-
"version": "0.92.0-
|
|
3
|
+
"version": "0.92.0-17",
|
|
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/pdf.index.d.ts",
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"@promptbook/core": "0.92.0-
|
|
54
|
+
"@promptbook/core": "0.92.0-17"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"crypto": "1.0.1",
|
package/umd/index.umd.js
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* @generated
|
|
26
26
|
* @see https://github.com/webgptorg/promptbook
|
|
27
27
|
*/
|
|
28
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.92.0-
|
|
28
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.92.0-17';
|
|
29
29
|
/**
|
|
30
30
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
31
31
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
|
@@ -4561,10 +4561,12 @@
|
|
|
4561
4561
|
throw new PipelineExecutionError('Parameter is already opened or not closed');
|
|
4562
4562
|
}
|
|
4563
4563
|
if (parameters[parameterName] === undefined) {
|
|
4564
|
+
console.log('!!! templateParameters 1', { parameterName, template, parameters });
|
|
4564
4565
|
throw new PipelineExecutionError(`Parameter \`{${parameterName}}\` is not defined`);
|
|
4565
4566
|
}
|
|
4566
4567
|
let parameterValue = parameters[parameterName];
|
|
4567
4568
|
if (parameterValue === undefined) {
|
|
4569
|
+
console.log('!!! templateParameters 2', { parameterName, template, parameters });
|
|
4568
4570
|
throw new PipelineExecutionError(`Parameter \`{${parameterName}}\` is not defined`);
|
|
4569
4571
|
}
|
|
4570
4572
|
parameterValue = valueToString(parameterValue);
|
|
@@ -5220,6 +5222,23 @@
|
|
|
5220
5222
|
return 1 - dotProduct / (magnitude1 * magnitude2);
|
|
5221
5223
|
}
|
|
5222
5224
|
|
|
5225
|
+
/**
|
|
5226
|
+
*
|
|
5227
|
+
* @param knowledgePieces
|
|
5228
|
+
* @returns
|
|
5229
|
+
*
|
|
5230
|
+
* @private internal utility of `createPipelineExecutor`
|
|
5231
|
+
*/
|
|
5232
|
+
function knowledgePiecesToString(knowledgePieces) {
|
|
5233
|
+
return knowledgePieces
|
|
5234
|
+
.map((knowledgePiece) => {
|
|
5235
|
+
const { content } = knowledgePiece;
|
|
5236
|
+
return `- ${content}`;
|
|
5237
|
+
})
|
|
5238
|
+
.join('\n');
|
|
5239
|
+
// <- TODO: [🧠] Some smarter aggregation of knowledge pieces, single-line vs multi-line vs mixed
|
|
5240
|
+
}
|
|
5241
|
+
|
|
5223
5242
|
/**
|
|
5224
5243
|
* @@@
|
|
5225
5244
|
*
|
|
@@ -5233,53 +5252,60 @@
|
|
|
5233
5252
|
const firstKnowlegeIndex = firstKnowlegePiece === null || firstKnowlegePiece === void 0 ? void 0 : firstKnowlegePiece.index[0];
|
|
5234
5253
|
// <- TODO: Do not use just first knowledge piece and first index to determine embedding model, use also keyword search
|
|
5235
5254
|
if (firstKnowlegePiece === undefined || firstKnowlegeIndex === undefined) {
|
|
5236
|
-
return '
|
|
5255
|
+
return ''; // <- Note: Np knowledge present, return empty string
|
|
5237
5256
|
}
|
|
5238
|
-
|
|
5239
|
-
|
|
5240
|
-
|
|
5241
|
-
|
|
5242
|
-
|
|
5243
|
-
|
|
5244
|
-
|
|
5245
|
-
|
|
5246
|
-
|
|
5247
|
-
|
|
5248
|
-
|
|
5249
|
-
|
|
5250
|
-
|
|
5251
|
-
|
|
5252
|
-
|
|
5253
|
-
|
|
5254
|
-
const
|
|
5255
|
-
|
|
5256
|
-
|
|
5257
|
-
|
|
5257
|
+
try {
|
|
5258
|
+
// TODO: [🚐] Make arrayable LLMs -> single LLM DRY
|
|
5259
|
+
const _llms = arrayableToArray(tools.llm);
|
|
5260
|
+
const llmTools = _llms.length === 1 ? _llms[0] : joinLlmExecutionTools(..._llms);
|
|
5261
|
+
const taskEmbeddingPrompt = {
|
|
5262
|
+
title: 'Knowledge Search',
|
|
5263
|
+
modelRequirements: {
|
|
5264
|
+
modelVariant: 'EMBEDDING',
|
|
5265
|
+
modelName: firstKnowlegeIndex.modelName,
|
|
5266
|
+
},
|
|
5267
|
+
content: task.content,
|
|
5268
|
+
parameters: {
|
|
5269
|
+
/* !!!! */
|
|
5270
|
+
},
|
|
5271
|
+
};
|
|
5272
|
+
const taskEmbeddingResult = await llmTools.callEmbeddingModel(taskEmbeddingPrompt);
|
|
5273
|
+
const knowledgePiecesWithRelevance = preparedPipeline.knowledgePieces.map((knowledgePiece) => {
|
|
5274
|
+
const { index } = knowledgePiece;
|
|
5275
|
+
const knowledgePieceIndex = index.find((i) => i.modelName === firstKnowlegeIndex.modelName);
|
|
5276
|
+
// <- TODO: Do not use just first knowledge piece and first index to determine embedding model
|
|
5277
|
+
if (knowledgePieceIndex === undefined) {
|
|
5278
|
+
return {
|
|
5279
|
+
content: knowledgePiece.content,
|
|
5280
|
+
relevance: 0,
|
|
5281
|
+
};
|
|
5282
|
+
}
|
|
5283
|
+
const relevance = computeCosineSimilarity(knowledgePieceIndex.position, taskEmbeddingResult.content);
|
|
5258
5284
|
return {
|
|
5259
5285
|
content: knowledgePiece.content,
|
|
5260
|
-
relevance
|
|
5286
|
+
relevance,
|
|
5261
5287
|
};
|
|
5262
|
-
}
|
|
5263
|
-
const
|
|
5264
|
-
|
|
5265
|
-
|
|
5266
|
-
|
|
5267
|
-
|
|
5268
|
-
|
|
5269
|
-
|
|
5270
|
-
|
|
5271
|
-
|
|
5272
|
-
|
|
5273
|
-
|
|
5274
|
-
|
|
5275
|
-
|
|
5276
|
-
|
|
5277
|
-
|
|
5278
|
-
|
|
5279
|
-
|
|
5280
|
-
|
|
5281
|
-
|
|
5282
|
-
|
|
5288
|
+
});
|
|
5289
|
+
const knowledgePiecesSorted = knowledgePiecesWithRelevance.sort((a, b) => a.relevance - b.relevance);
|
|
5290
|
+
const knowledgePiecesLimited = knowledgePiecesSorted.slice(0, 5);
|
|
5291
|
+
console.log('!!! Embedding', {
|
|
5292
|
+
task,
|
|
5293
|
+
taskEmbeddingPrompt,
|
|
5294
|
+
taskEmbeddingResult,
|
|
5295
|
+
firstKnowlegePiece,
|
|
5296
|
+
firstKnowlegeIndex,
|
|
5297
|
+
knowledgePiecesWithRelevance,
|
|
5298
|
+
knowledgePiecesSorted,
|
|
5299
|
+
knowledgePiecesLimited,
|
|
5300
|
+
});
|
|
5301
|
+
return knowledgePiecesToString(knowledgePiecesLimited);
|
|
5302
|
+
}
|
|
5303
|
+
catch (error) {
|
|
5304
|
+
assertsError(error);
|
|
5305
|
+
console.error('Error in `getKnowledgeForTask`', error);
|
|
5306
|
+
// Note: If the LLM fails, just return all knowledge pieces
|
|
5307
|
+
return knowledgePiecesToString(preparedPipeline.knowledgePieces);
|
|
5308
|
+
}
|
|
5283
5309
|
}
|
|
5284
5310
|
/**
|
|
5285
5311
|
* TODO: !!!! Verify if this is working
|