@promptbook/remote-server 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.
package/esm/index.es.js
CHANGED
|
@@ -33,7 +33,7 @@ const BOOK_LANGUAGE_VERSION = '1.0.0';
|
|
|
33
33
|
* @generated
|
|
34
34
|
* @see https://github.com/webgptorg/promptbook
|
|
35
35
|
*/
|
|
36
|
-
const PROMPTBOOK_ENGINE_VERSION = '0.92.0-
|
|
36
|
+
const PROMPTBOOK_ENGINE_VERSION = '0.92.0-17';
|
|
37
37
|
/**
|
|
38
38
|
* TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
|
|
39
39
|
* Note: [💞] Ignore a discrepancy between file name and entity name
|
|
@@ -4897,10 +4897,12 @@ function templateParameters(template, parameters) {
|
|
|
4897
4897
|
throw new PipelineExecutionError('Parameter is already opened or not closed');
|
|
4898
4898
|
}
|
|
4899
4899
|
if (parameters[parameterName] === undefined) {
|
|
4900
|
+
console.log('!!! templateParameters 1', { parameterName, template, parameters });
|
|
4900
4901
|
throw new PipelineExecutionError(`Parameter \`{${parameterName}}\` is not defined`);
|
|
4901
4902
|
}
|
|
4902
4903
|
let parameterValue = parameters[parameterName];
|
|
4903
4904
|
if (parameterValue === undefined) {
|
|
4905
|
+
console.log('!!! templateParameters 2', { parameterName, template, parameters });
|
|
4904
4906
|
throw new PipelineExecutionError(`Parameter \`{${parameterName}}\` is not defined`);
|
|
4905
4907
|
}
|
|
4906
4908
|
parameterValue = valueToString(parameterValue);
|
|
@@ -5556,6 +5558,23 @@ function computeCosineSimilarity(embeddingVector1, embeddingVector2) {
|
|
|
5556
5558
|
return 1 - dotProduct / (magnitude1 * magnitude2);
|
|
5557
5559
|
}
|
|
5558
5560
|
|
|
5561
|
+
/**
|
|
5562
|
+
*
|
|
5563
|
+
* @param knowledgePieces
|
|
5564
|
+
* @returns
|
|
5565
|
+
*
|
|
5566
|
+
* @private internal utility of `createPipelineExecutor`
|
|
5567
|
+
*/
|
|
5568
|
+
function knowledgePiecesToString(knowledgePieces) {
|
|
5569
|
+
return knowledgePieces
|
|
5570
|
+
.map((knowledgePiece) => {
|
|
5571
|
+
const { content } = knowledgePiece;
|
|
5572
|
+
return `- ${content}`;
|
|
5573
|
+
})
|
|
5574
|
+
.join('\n');
|
|
5575
|
+
// <- TODO: [🧠] Some smarter aggregation of knowledge pieces, single-line vs multi-line vs mixed
|
|
5576
|
+
}
|
|
5577
|
+
|
|
5559
5578
|
/**
|
|
5560
5579
|
* @@@
|
|
5561
5580
|
*
|
|
@@ -5569,53 +5588,60 @@ async function getKnowledgeForTask(options) {
|
|
|
5569
5588
|
const firstKnowlegeIndex = firstKnowlegePiece === null || firstKnowlegePiece === void 0 ? void 0 : firstKnowlegePiece.index[0];
|
|
5570
5589
|
// <- TODO: Do not use just first knowledge piece and first index to determine embedding model, use also keyword search
|
|
5571
5590
|
if (firstKnowlegePiece === undefined || firstKnowlegeIndex === undefined) {
|
|
5572
|
-
return '
|
|
5591
|
+
return ''; // <- Note: Np knowledge present, return empty string
|
|
5573
5592
|
}
|
|
5574
|
-
|
|
5575
|
-
|
|
5576
|
-
|
|
5577
|
-
|
|
5578
|
-
|
|
5579
|
-
|
|
5580
|
-
|
|
5581
|
-
|
|
5582
|
-
|
|
5583
|
-
|
|
5584
|
-
|
|
5585
|
-
|
|
5586
|
-
|
|
5587
|
-
|
|
5588
|
-
|
|
5589
|
-
|
|
5590
|
-
const
|
|
5591
|
-
|
|
5592
|
-
|
|
5593
|
-
|
|
5593
|
+
try {
|
|
5594
|
+
// TODO: [🚐] Make arrayable LLMs -> single LLM DRY
|
|
5595
|
+
const _llms = arrayableToArray(tools.llm);
|
|
5596
|
+
const llmTools = _llms.length === 1 ? _llms[0] : joinLlmExecutionTools(..._llms);
|
|
5597
|
+
const taskEmbeddingPrompt = {
|
|
5598
|
+
title: 'Knowledge Search',
|
|
5599
|
+
modelRequirements: {
|
|
5600
|
+
modelVariant: 'EMBEDDING',
|
|
5601
|
+
modelName: firstKnowlegeIndex.modelName,
|
|
5602
|
+
},
|
|
5603
|
+
content: task.content,
|
|
5604
|
+
parameters: {
|
|
5605
|
+
/* !!!! */
|
|
5606
|
+
},
|
|
5607
|
+
};
|
|
5608
|
+
const taskEmbeddingResult = await llmTools.callEmbeddingModel(taskEmbeddingPrompt);
|
|
5609
|
+
const knowledgePiecesWithRelevance = preparedPipeline.knowledgePieces.map((knowledgePiece) => {
|
|
5610
|
+
const { index } = knowledgePiece;
|
|
5611
|
+
const knowledgePieceIndex = index.find((i) => i.modelName === firstKnowlegeIndex.modelName);
|
|
5612
|
+
// <- TODO: Do not use just first knowledge piece and first index to determine embedding model
|
|
5613
|
+
if (knowledgePieceIndex === undefined) {
|
|
5614
|
+
return {
|
|
5615
|
+
content: knowledgePiece.content,
|
|
5616
|
+
relevance: 0,
|
|
5617
|
+
};
|
|
5618
|
+
}
|
|
5619
|
+
const relevance = computeCosineSimilarity(knowledgePieceIndex.position, taskEmbeddingResult.content);
|
|
5594
5620
|
return {
|
|
5595
5621
|
content: knowledgePiece.content,
|
|
5596
|
-
relevance
|
|
5622
|
+
relevance,
|
|
5597
5623
|
};
|
|
5598
|
-
}
|
|
5599
|
-
const
|
|
5600
|
-
|
|
5601
|
-
|
|
5602
|
-
|
|
5603
|
-
|
|
5604
|
-
|
|
5605
|
-
|
|
5606
|
-
|
|
5607
|
-
|
|
5608
|
-
|
|
5609
|
-
|
|
5610
|
-
|
|
5611
|
-
|
|
5612
|
-
|
|
5613
|
-
|
|
5614
|
-
|
|
5615
|
-
|
|
5616
|
-
|
|
5617
|
-
|
|
5618
|
-
|
|
5624
|
+
});
|
|
5625
|
+
const knowledgePiecesSorted = knowledgePiecesWithRelevance.sort((a, b) => a.relevance - b.relevance);
|
|
5626
|
+
const knowledgePiecesLimited = knowledgePiecesSorted.slice(0, 5);
|
|
5627
|
+
console.log('!!! Embedding', {
|
|
5628
|
+
task,
|
|
5629
|
+
taskEmbeddingPrompt,
|
|
5630
|
+
taskEmbeddingResult,
|
|
5631
|
+
firstKnowlegePiece,
|
|
5632
|
+
firstKnowlegeIndex,
|
|
5633
|
+
knowledgePiecesWithRelevance,
|
|
5634
|
+
knowledgePiecesSorted,
|
|
5635
|
+
knowledgePiecesLimited,
|
|
5636
|
+
});
|
|
5637
|
+
return knowledgePiecesToString(knowledgePiecesLimited);
|
|
5638
|
+
}
|
|
5639
|
+
catch (error) {
|
|
5640
|
+
assertsError(error);
|
|
5641
|
+
console.error('Error in `getKnowledgeForTask`', error);
|
|
5642
|
+
// Note: If the LLM fails, just return all knowledge pieces
|
|
5643
|
+
return knowledgePiecesToString(preparedPipeline.knowledgePieces);
|
|
5644
|
+
}
|
|
5619
5645
|
}
|
|
5620
5646
|
/**
|
|
5621
5647
|
* TODO: !!!! Verify if this is working
|
|
@@ -7955,6 +7981,7 @@ function startRemoteServer(options) {
|
|
|
7955
7981
|
promptResult = await llm.callCompletionModel(prompt);
|
|
7956
7982
|
break;
|
|
7957
7983
|
case 'EMBEDDING':
|
|
7984
|
+
console.log('!!! llm');
|
|
7958
7985
|
if (llm.callEmbeddingModel === undefined) {
|
|
7959
7986
|
// Note: [0] This check should not be a thing
|
|
7960
7987
|
throw new PipelineExecutionError(`Embedding model is not available`);
|