@promptbook/core 0.92.0-32 → 0.92.0-34

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
@@ -27,7 +27,7 @@ const BOOK_LANGUAGE_VERSION = '1.0.0';
27
27
  * @generated
28
28
  * @see https://github.com/webgptorg/promptbook
29
29
  */
30
- const PROMPTBOOK_ENGINE_VERSION = '0.92.0-32';
30
+ const PROMPTBOOK_ENGINE_VERSION = '0.92.0-34';
31
31
  /**
32
32
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
33
33
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -2368,6 +2368,7 @@ function assertsTaskSuccessful(executionResult) {
2368
2368
  */
2369
2369
  function createTask(options) {
2370
2370
  const { taskType, taskProcessCallback } = options;
2371
+ let { title } = options;
2371
2372
  // TODO: [🐙] DRY
2372
2373
  const taskId = `${taskType.toLowerCase().substring(0, 4)}-${$randomToken(8 /* <- TODO: To global config + Use Base58 to avoid simmilar char conflicts */)}`;
2373
2374
  let status = 'RUNNING';
@@ -2379,6 +2380,10 @@ function createTask(options) {
2379
2380
  const partialResultSubject = new Subject();
2380
2381
  // <- Note: Not using `BehaviorSubject` because on error we can't access the last value
2381
2382
  const finalResultPromise = /* not await */ taskProcessCallback((newOngoingResult) => {
2383
+ if (newOngoingResult.title) {
2384
+ title = newOngoingResult.title;
2385
+ }
2386
+ updatedAt = new Date();
2382
2387
  Object.assign(currentValue, newOngoingResult);
2383
2388
  // <- TODO: assign deep
2384
2389
  partialResultSubject.next(newOngoingResult);
@@ -2424,17 +2429,24 @@ function createTask(options) {
2424
2429
  return {
2425
2430
  taskType,
2426
2431
  taskId,
2432
+ get promptbookVersion() {
2433
+ return PROMPTBOOK_ENGINE_VERSION;
2434
+ },
2435
+ get title() {
2436
+ return title;
2437
+ // <- Note: [1] Theese must be getters to allow changing the value in the future
2438
+ },
2427
2439
  get status() {
2428
2440
  return status;
2429
- // <- Note: [1] Theese must be getters to allow changing the value in the future
2441
+ // <- Note: [1] --||--
2430
2442
  },
2431
2443
  get createdAt() {
2432
2444
  return createdAt;
2433
- // <- Note: [1]
2445
+ // <- Note: [1] --||--
2434
2446
  },
2435
2447
  get updatedAt() {
2436
2448
  return updatedAt;
2437
- // <- Note: [1]
2449
+ // <- Note: [1] --||--
2438
2450
  },
2439
2451
  asPromise,
2440
2452
  asObservable() {
@@ -2442,15 +2454,15 @@ function createTask(options) {
2442
2454
  },
2443
2455
  get errors() {
2444
2456
  return errors;
2445
- // <- Note: [1]
2457
+ // <- Note: [1] --||--
2446
2458
  },
2447
2459
  get warnings() {
2448
2460
  return warnings;
2449
- // <- Note: [1]
2461
+ // <- Note: [1] --||--
2450
2462
  },
2451
2463
  get currentValue() {
2452
2464
  return currentValue;
2453
- // <- Note: [1]
2465
+ // <- Note: [1] --||--
2454
2466
  },
2455
2467
  };
2456
2468
  }
@@ -3192,7 +3204,14 @@ class MultipleLlmExecutionTools {
3192
3204
  return 'Multiple LLM Providers';
3193
3205
  }
3194
3206
  get description() {
3195
- return this.llmExecutionTools.map(({ title }, index) => `${index + 1}) \`${title}\``).join('\n');
3207
+ const innerModelsTitlesAndDescriptions = this.llmExecutionTools
3208
+ .map(({ title, description }, index) => `${index + 1}) \`${title}\`\n${description}`)
3209
+ .join('\n\n');
3210
+ return spaceTrim((block) => `
3211
+ Multiple LLM Providers:
3212
+
3213
+ ${block(innerModelsTitlesAndDescriptions)}
3214
+ `);
3196
3215
  }
3197
3216
  /**
3198
3217
  * Check the configuration of all execution tools
@@ -4546,6 +4565,7 @@ function knowledgePiecesToString(knowledgePieces) {
4546
4565
  */
4547
4566
  async function getKnowledgeForTask(options) {
4548
4567
  const { tools, preparedPipeline, task, parameters } = options;
4568
+ console.log('!!! getKnowledgeForTask', options);
4549
4569
  const firstKnowlegePiece = preparedPipeline.knowledgePieces[0];
4550
4570
  const firstKnowlegeIndex = firstKnowlegePiece === null || firstKnowlegePiece === void 0 ? void 0 : firstKnowlegePiece.index[0];
4551
4571
  // <- TODO: Do not use just first knowledge piece and first index to determine embedding model, use also keyword search
@@ -4584,7 +4604,7 @@ async function getKnowledgeForTask(options) {
4584
4604
  });
4585
4605
  const knowledgePiecesSorted = knowledgePiecesWithRelevance.sort((a, b) => a.relevance - b.relevance);
4586
4606
  const knowledgePiecesLimited = knowledgePiecesSorted.slice(0, 5);
4587
- console.log('!!! Embedding', {
4607
+ console.log('!!! `getKnowledgeForTask` Embedding', {
4588
4608
  task,
4589
4609
  taskEmbeddingPrompt,
4590
4610
  taskEmbeddingResult,
@@ -4620,6 +4640,7 @@ async function getKnowledgeForTask(options) {
4620
4640
  */
4621
4641
  async function getReservedParametersForTask(options) {
4622
4642
  const { tools, preparedPipeline, task, parameters, pipelineIdentification } = options;
4643
+ console.log('!!! getReservedParametersForTask', options);
4623
4644
  const context = await getContextForTask(); // <- [🏍]
4624
4645
  const knowledge = await getKnowledgeForTask({ tools, preparedPipeline, task, parameters });
4625
4646
  const examples = await getExamplesForTask();
@@ -4656,6 +4677,7 @@ async function getReservedParametersForTask(options) {
4656
4677
  */
4657
4678
  async function executeTask(options) {
4658
4679
  const { currentTask, preparedPipeline, parametersToPass, tools, onProgress, $executionReport, pipelineIdentification, maxExecutionAttempts, maxParallelCount, csvSettings, isVerbose, rootDirname, cacheDirname, intermediateFilesStrategy, isAutoInstalled, isNotPreparedWarningSupressed, } = options;
4680
+ console.log('!!! executeTask', options);
4659
4681
  const priority = preparedPipeline.tasks.length - preparedPipeline.tasks.indexOf(currentTask);
4660
4682
  // Note: Check consistency of used and dependent parameters which was also done in `validatePipeline`, but it’s good to doublecheck
4661
4683
  const usedParameterNames = extractParameterNamesFromTask(currentTask);
@@ -4679,14 +4701,15 @@ async function executeTask(options) {
4679
4701
 
4680
4702
  `));
4681
4703
  }
4704
+ const reservedParameters = await getReservedParametersForTask({
4705
+ tools,
4706
+ preparedPipeline,
4707
+ task: currentTask,
4708
+ pipelineIdentification,
4709
+ parameters: parametersToPass,
4710
+ });
4682
4711
  const definedParameters = Object.freeze({
4683
- ...(await getReservedParametersForTask({
4684
- tools,
4685
- preparedPipeline,
4686
- task: currentTask,
4687
- pipelineIdentification,
4688
- parameters: parametersToPass,
4689
- })),
4712
+ ...reservedParameters,
4690
4713
  ...parametersToPass,
4691
4714
  });
4692
4715
  const definedParameterNames = new Set(Object.keys(definedParameters));
@@ -5133,6 +5156,7 @@ function createPipelineExecutor(options) {
5133
5156
  };
5134
5157
  const pipelineExecutor = (inputParameters) => createTask({
5135
5158
  taskType: 'EXECUTION',
5159
+ title: pipeline.title,
5136
5160
  taskProcessCallback(updateOngoingResult) {
5137
5161
  return pipelineExecutorWithCallback(inputParameters, async (newOngoingResult) => {
5138
5162
  updateOngoingResult(newOngoingResult);
@@ -5184,12 +5208,14 @@ function countUsage(llmTools) {
5184
5208
  const spending = new Subject();
5185
5209
  const proxyTools = {
5186
5210
  get title() {
5187
- // TODO: [🧠] Maybe put here some suffix
5188
- return llmTools.title;
5211
+ return `${llmTools.title} (+usage)`;
5212
+ // <- TODO: [🧈] Maybe standartize the suffix when wrapping `LlmExecutionTools` up
5213
+ // <- TODO: [🧈][🧠] Does it make sence to suffix "(+usage)"?
5189
5214
  },
5190
5215
  get description() {
5191
- // TODO: [🧠] Maybe put here some suffix
5192
- return llmTools.description;
5216
+ return `${llmTools.description} (+usage)`;
5217
+ // <- TODO: [🧈] Maybe standartize the suffix when wrapping `LlmExecutionTools` up
5218
+ // <- TODO: [🧈][🧠] Does it make sence to suffix "(+usage)"?
5193
5219
  },
5194
5220
  checkConfiguration() {
5195
5221
  return /* not await */ llmTools.checkConfiguration();
@@ -10334,8 +10360,13 @@ function filterModels(llmTools, modelFilter) {
10334
10360
  const filteredTools = {
10335
10361
  // Keep all properties from the original llmTools
10336
10362
  ...llmTools,
10363
+ get title() {
10364
+ return `${llmTools.title} (filtered)`;
10365
+ // <- TODO: [🧈] Maybe standartize the suffix when wrapping `LlmExecutionTools` up
10366
+ },
10337
10367
  get description() {
10338
10368
  return `${llmTools.description} (filtered)`;
10369
+ // <- TODO: [🧈] Maybe standartize the suffix when wrapping `LlmExecutionTools` up
10339
10370
  },
10340
10371
  // Override listModels to filter the models
10341
10372
  async listModels() {
@@ -10696,12 +10727,14 @@ function cacheLlmTools(llmTools, options = {}) {
10696
10727
  ...llmTools,
10697
10728
  // <- Note: [🥫]
10698
10729
  get title() {
10699
- // TODO: [🧠] Maybe put here some suffix
10700
- return llmTools.title;
10730
+ return `${llmTools.title} (cached)`;
10731
+ // <- TODO: [🧈] Maybe standartize the suffix when wrapping `LlmExecutionTools` up
10732
+ // <- TODO: [🧈][🧠] Does it make sence to suffix "(cached)"?
10701
10733
  },
10702
10734
  get description() {
10703
- // TODO: [🧠] Maybe put here some suffix
10704
- return llmTools.description;
10735
+ return `${llmTools.description} (cached)`;
10736
+ // <- TODO: [🧈] Maybe standartize the suffix when wrapping `LlmExecutionTools` up
10737
+ // <- TODO: [🧈][🧠] Does it make sence to suffix "(cached)"?
10705
10738
  },
10706
10739
  listModels() {
10707
10740
  // TODO: [🧠] Should be model listing also cached?
@@ -10864,6 +10897,7 @@ const _AnthropicClaudeMetadataRegistration = $llmToolsMetadataRegister.register(
10864
10897
  apiKey: 'sk-ant-api03-',
10865
10898
  isProxied: true,
10866
10899
  remoteServerUrl: DEFAULT_REMOTE_SERVER_URL,
10900
+ maxRequestsPerMinute: DEFAULT_MAX_REQUESTS_PER_MINUTE,
10867
10901
  },
10868
10902
  };
10869
10903
  },
@@ -10899,7 +10933,7 @@ const _AzureOpenAiMetadataRegistration = $llmToolsMetadataRegister.register({
10899
10933
  title: 'Azure Open AI',
10900
10934
  packageName: '@promptbook/azure-openai',
10901
10935
  className: 'AzureOpenAiExecutionTools',
10902
- envVariables: ['AZUREOPENAI_RESOURCE_NAME', 'AZUREOPENAI_DEPLOYMENT_NAME', 'AZUREOPENAI_API_KEY'],
10936
+ envVariables: ['AZUREOPENAI_API_KEY', 'AZUREOPENAI_RESOURCE_NAME', 'AZUREOPENAI_DEPLOYMENT_NAME'],
10903
10937
  trustLevel: 'CLOSED_BUSINESS',
10904
10938
  order: MODEL_ORDERS.NORMAL,
10905
10939
  getBoilerplateConfiguration() {
@@ -10909,6 +10943,9 @@ const _AzureOpenAiMetadataRegistration = $llmToolsMetadataRegister.register({
10909
10943
  className: 'AzureOpenAiExecutionTools',
10910
10944
  options: {
10911
10945
  apiKey: 'sk-',
10946
+ resourceName: 'my-resource-name',
10947
+ deploymentName: 'my-deployment-name',
10948
+ maxRequestsPerMinute: DEFAULT_MAX_REQUESTS_PER_MINUTE,
10912
10949
  },
10913
10950
  };
10914
10951
  },
@@ -10922,15 +10959,15 @@ const _AzureOpenAiMetadataRegistration = $llmToolsMetadataRegister.register({
10922
10959
  packageName: '@promptbook/azure-openai',
10923
10960
  className: 'AzureOpenAiExecutionTools',
10924
10961
  options: {
10962
+ apiKey: env.AZUREOPENAI_API_KEY,
10925
10963
  resourceName: env.AZUREOPENAI_RESOURCE_NAME,
10926
10964
  deploymentName: env.AZUREOPENAI_DEPLOYMENT_NAME,
10927
- apiKey: env.AZUREOPENAI_API_KEY,
10928
10965
  },
10929
10966
  };
10930
10967
  }
10931
- else if (typeof env.AZUREOPENAI_RESOURCE_NAME === 'string' ||
10932
- typeof env.AZUREOPENAI_DEPLOYMENT_NAME === 'string' ||
10933
- typeof env.AZUREOPENAI_API_KEY === 'string') {
10968
+ else if (typeof env.AZUREOPENAI_API_KEY === 'string' ||
10969
+ typeof env.AZUREOPENAI_RESOURCE_NAME === 'string' ||
10970
+ typeof env.AZUREOPENAI_DEPLOYMENT_NAME === 'string') {
10934
10971
  return null;
10935
10972
  /*
10936
10973
  Note: [🗨] Partial configuration is handled more gracefully elsewhere
@@ -11143,6 +11180,7 @@ const _OpenAiAssistantMetadataRegistration = $llmToolsMetadataRegister.register(
11143
11180
  options: {
11144
11181
  apiKey: 'sk-',
11145
11182
  assistantId: 'asst_',
11183
+ maxRequestsPerMinute: DEFAULT_MAX_REQUESTS_PER_MINUTE,
11146
11184
  },
11147
11185
  };
11148
11186
  },